内核编程头文件与API参考

1、#include

    dev_t:dev_t 是内核中用来表示设备编号的数据类型。

    int MAJOR(dev_t dev);

    int MINOR(dev_t dev);

    这两个宏从设备编号中抽取出主/次设备号。

类型size_t也在头文件linux/types.h中定义。

2、 #include

   “文件系统”头文件,它是编写设备驱动程序必需的头文件,其中声明了许多重要的函数和数据结构。

    int register_chrdev_region(dev_t first, unigned in count, char *name)

    int alloc_chrdev_region(dev_t *dev, unsigned int firstminor, unsigned int count, char *name)

    void unregister_chrdev_region(dev_t first, unsigned int count);

    提供给驱动程序用来分配和释放设备编号范围的函数。在期望的主设备号预先知道的情况下,应调用register_chrdev_region;而对动态分配,使用alloc_chrdev_region。

    int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);

    老的(2.6之前的)字符设备注册例程。2.6内核也提供了仿效该例程的函数,但是新代码不应该再使用该函数。如果主设备号不是0,则不加修改地使用;否则,系统将为该设备动态地分配编号。

    int unregister_chrdev(unsigned int major, const char *name);

    用于注销由register_chrdev函数注册的驱动程序。major和name字符串必须包含与注册该驱动程序时使用的相同的值。

    struct file_operations;

    struct file;

    struct inode;

    大多数设备驱动程序都会用到的三个重要数据结构。file_operations结构保存了字符驱动程序的方法;struct file表示一个打开的文件,而struct inode表示一个磁盘上的文件。

3、 #include

    struct cdev *cdev_alloc(void);

    void cdev_init(struct cdev *dev, struct file_operations *fops);

    int cdev_add(struct cdev *dev, dev_t num, unsigned int count);

    void cdev_del(struct cdev *dev);

    用来管理cdev结构的函数,内核中使用该结构表示字符设备。

4、 #include

    container_of(pointer, type,field);

    3.5 #include

    该头文件声明了在内核代码和用户空间之间移动数据的函数。

    unsigned long copy_from_user(void *to, const void *from, unsigned long count);

    unsigned long copy_to_user(void *to, const void *from, unsigned long count);

    在用户空间和内核空间之间拷贝数据。

转载自:http://hi.baidu.com/vera4610/blog/item/c0b0e854b85e535cd10906cd.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值