Chinaunix首页 | 论坛 | 博客
  • 博客访问: 54048
  • 博文数量: 18
  • 博客积分: 445
  • 博客等级: 下士
  • 技术积分: 185
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-26 16:57
文章分类
文章存档

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         /* printk() *///#include         /* kmalloc() *///#include         /* file_operations、inode_operations、super_operations结构体*///#include         /* error codes */#include         /* size_t等各种系统typedef的数据类型 *///#include         /* O_ACCMODE *///#include         /* COPY_TO_USER */#include           /*MODULE_LICENSE("GPL");内核认识的特定许可有,
                          "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_init(x)    __initcall(x);  driver initialization entry point
                       #define module_exit(x)    __exitcall(x);  driver exit entry point
                       */#include         /* extern int misc_register(struct miscdevice * misc);  注册miscdevice结构体成员变量设备
                         extern int misc_deregister(struct miscdevice *misc);  注销miscdevice结构体成员变量设备
                         */#include         /* void cdev_init(struct cdev *, const struct file_operations *);
                      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                  /* 和GPIO口操作相关的函数定义的头文件
                                对应的源文件在/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         /* 和GPIO口相关的一些宏定义(在arch/arm/mach-s3c2410/mach) */#include         /*  */#include         /* typedef irqreturn_t (*irq_handler_t)(int, void *);
                         extern void free_irq(unsigned int, void *);extern void disable_irq(unsigned int irq);
                         extern void enable_irq(unsigned int irq);等和中断相关函数的声明 */#include         /* wake_up_interruptible   唤醒 q 指定的注册在等待队列上的进程。该函数不能直接的立即唤醒进程,而是由调度程序转换上下文,调整为可运行状态。 
                    static DECLARE_WAIT_QUEUE_HEAD(button_waitq);声明等待队列为全局变量
                      wait_event_interruptible该函数修改task的状态为TASK_INTERRUPTIBLE,意味着改进程将不会继续运行直到被唤醒,然后被添加到等待队列wq中*/#include         /* poll_wait */#include         /* copy_to_user和copy_from_user */
#include               /* __raw_readl  __raw_writel*/#include         /* struct clk *clk_get(struct device *dev, const char *id);
                      unsigned long clk_get_rate(struct clk *clk); */#include         /* struct clk;结构体的定义 (在arch/arm/plat-s3c/plat/include/clock.arch中,对应的源文件在/arm/plat-s3c/clock.c)*/#include            //包含了device、class 、device_driver等结构的定义#include         /* 和bank相关的寄存器的宏定义 */#include           /* Linux内核中64位除法函数do_div */#include         /* struct fb_info 结构体的定义 */#include         /* struct s3c2410fb_display(在arch/arm/mach-s3c2410/include/mach/fb.h) */#include         /*  */#include         /*  */#include         /*  */#include         /*  */#include         /*  */#include         /*  */#include         /*  */#include         /*  */#include         /*  */

阅读(1017) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~