一,模块导出符号可以讲模块中的变量、函数 导出,仅供内核中其他代码、模块使用
1如何导出:
内核中提供了宏来实现导出
EXPORT_SYMBOL
EXPORT_SYMBOL_GPL——只遵循GPL协议的代码才可以使用
二、申请设备号
#define MAJOR 220 //主设备号
#define MINOR 0//次设备号
dev_t dev;
/*
Some programs want their definitions of MAJOR and MINOR and MKDEV
from the kernel sources. These must be the externally visible ones.
*/
#define MAJOR(dev) ((dev)>>8)
#define MINOR(dev) ((dev) & 0xff)
#define MKDEV(ma,mi) ((ma)<<8 | (mi))
dev = MKDEV(主设备,次设备);
int register_chrdev_region(dev_t from,unsigned count,const char *name);
from:申请设备的开始的设备号
count:申请的次设备号数量
name: 设备文件的名字
返回值:ret<0 ,表示申请失败,返回错误码,
例子: