Hello Driver

1. linux-2.6.12目录为Linux的源代码目录

2. driver目录下新建raulshao

3. driver目录下面的Makefile最后一行添加

    obj-m    += raulshao/
4. raulshao目录下新建hello.c, Makefile

 

// hello.c

#ifndef __KERNEL__
#define __KERNEL__
#endif

#ifndef MODULE
#define MODULE
#endif

#include <linux/delay.h>
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include <linux/list.h>
#include <linux/interrupt.h>
#include <linux/spinlock.h>
#include <linux/timer.h>
#include <linux/device.h>
#include <linux/slab.h>
#include <linux/sched.h>
#include <asm/atomic.h>

 

MODULE_LICENSE("GPL");
MODULE_AUTHOR("RAUL.SIU<[email protected]>");
MODULE_DESCRIPTION("Hello Driver.");

 

 

//////////////////////////////////////////////////////////////////////////
// 指定接口
static struct file_operations dev_ops =
{
 owner: THIS_MODULE,
 write: FUN_WRITE,
 read: FUN_READ,
 open: FUN_OPEN,
 release:FUN_CLOSE,
};

 


int hello_init(void)
{

 register_chrdev(MAJOR_VER, DEV_NAME, &dev_ops);
 devfs_mk_cdev(MKDEV(MAJOR_VER, 0), S_IFCHR|S_IRUSR|S_IWUSR|S_IRGRP, DEV_NAME);

 printk(KERN_ALERT"hello_init!/n");
 return 0;
}


void hello_exit(void)
{
 printk(KERN_ALERT"hello_exit!/n");

 devfs_remove(DEV_NAME);


 unregister_chrdev(MAJOR_VER, DEV_NAME);
}


module_init(hello_init);
module_exit(hello_exit);

 

 

// Makefile

obj-m += hello.o

 

 

5. 在源代码目录下执行make

 

6. 测试

    insmode hello.ko  // 安装驱动

    lsmod                   // 检查驱动

    rmmod hello         // 卸载驱动

你可能感兴趣的:(linux,struct,Module,File,makefile,fun)