当前位置: 技术问答>linux和unix
关于释放设备号的问题
来源: 互联网 发布时间:2016-12-22
本文导语: 如果我的一个字符设备在初始化时动态分配设备号 int xxx_init(void) { dev_t xx; alloc_chrdev_region(&xx,0,1,"xxx") } 得到的设备号保存在xx中 那么在注销的时候 void xxx_exit() { unregister_chrdev_region() 这个函数要求用设备的主设备号...
如果我的一个字符设备在初始化时动态分配设备号
int xxx_init(void)
{
dev_t xx;
alloc_chrdev_region(&xx,0,1,"xxx")
}
得到的设备号保存在xx中
那么在注销的时候
void xxx_exit()
{
unregister_chrdev_region()
这个函数要求用设备的主设备号做为参数,但由于设备号是动态分配,在写这个函数的时候不知道分配到多少的设备号。那写这个函数的时候参数要怎么办?
就是说在动态分配设备号时释放函数要怎么写?
int xxx_init(void)
{
dev_t xx;
alloc_chrdev_region(&xx,0,1,"xxx")
}
得到的设备号保存在xx中
那么在注销的时候
void xxx_exit()
{
unregister_chrdev_region()
这个函数要求用设备的主设备号做为参数,但由于设备号是动态分配,在写这个函数的时候不知道分配到多少的设备号。那写这个函数的时候参数要怎么办?
就是说在动态分配设备号时释放函数要怎么写?
|
alloc_chrdev_region(&xx,0,1,"xxx")
这个函数的意思 是 获取了设备号之后 把它存入 xx地址中
那么就可以调用一个宏 来获取主设备号 major_num=MAJOR(xx)
major_num为分配的主设备号
一般 调用了alloc_chrdev_region(&xx,0,1,"xxx")
都会在下一行 取出主设备号 释放用
这个函数的意思 是 获取了设备号之后 把它存入 xx地址中
那么就可以调用一个宏 来获取主设备号 major_num=MAJOR(xx)
major_num为分配的主设备号
一般 调用了alloc_chrdev_region(&xx,0,1,"xxx")
都会在下一行 取出主设备号 释放用
|
int alloc_chrdev_region(dev_t *dev, unsigned int firstminor,
unsigned int count, char *name);
With this function, dev is an output-only parameter that will, on successful completion,
hold the first number in your allocated range.