2012年(18)
分类: LINUX
2012-10-15 08:56:39
.6.30.4的头文件的位置和2.6.25.8的不一样,除去内核源码下的include目录外,在arch/arm/mach-s3c2410/和arch/arm/plat-s3c24xx/目录下都有include目录的。
#include
"GPL"( 适用 GNU 通用公共许可的任何版本 ),
"GPL v2"( 只适用 GPL 版本 2 ),
"GPL and additional rights",
"Dual BSD/GPL",
"Dual MPL/GPL",
"Proprietary".
除非你的模块明确标识是在内核认识的一个自由许可下,
否则就假定它是私有的,
内核在模块加载时被"弄污浊"了.
象我们在第 1 章"许可条款"中提到的,
内核开发者不会热心帮助在加载了私有模块后遇到问题的用户.
MODULE_AUTHOR ( 声明谁编写了模块 ),
MODULE_DESCRIPION( 一个人可读的关于模块做什么的声明 ),
MODULE_VERSION ( 一个代码修订版本号; 看
MODULE_ALIAS ( 模块为人所知的另一个名子 ),
MODULE_DEVICE_TABLE ( 来告知用户空间, 模块支持那些设备 ).
*/#include
#define module_exit(x) __exitcall(x); driver exit entry point
*/#include
extern int misc_deregister(struct miscdevice *misc); 注销miscdevice结构体成员变量设备
*/#include
struct cdev *cdev_alloc(void);
void cdev_put(struct cdev *p);
int cdev_add(struct cdev *, dev_t, unsigned);
void cdev_del(struct cdev *);
void cd_forget(struct inode *); */#include
对应的源文件在/linux-2.6.32.2/arch/arm/plat-s3c24xx/gpio.c
void s3c2410_gpio_cfgpin(unsigned int pin, unsigned int function);
unsigned int s3c2410_gpio_getcfg(unsigned int pin);
void s3c2410_gpio_pullup(unsigned int pin, unsigned int to);
int s3c2410_gpio_getpull(unsigned int pin);
void s3c2410_gpio_setpin(unsigned int pin, unsigned int to);
unsigned int s3c2410_gpio_getpin(unsigned int pin);
unsigned int s3c2410_modify_misccr(unsigned int clear, unsigned int change);
int s3c2410_gpio_getirq(unsigned int pin);
int s3c2410_gpio_irq2pin(unsigned int irq);*/
#include
extern void free_irq(unsigned int, void *);extern void disable_irq(unsigned int irq);
extern void enable_irq(unsigned int irq);等和中断相关函数的声明 */#include
static DECLARE_WAIT_QUEUE_HEAD(button_waitq);声明等待队列为全局变量
wait_event_interruptible该函数修改task的状态为TASK_INTERRUPTIBLE,意味着改进程将不会继续运行直到被唤醒,然后被添加到等待队列wq中*/#include
#include
unsigned long clk_get_rate(struct clk *clk); */#include