首页 / LINUX / linux的驱动开发——设备号
linux的驱动开发——设备号
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux的驱动开发——设备号,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1830字,纯文字阅读大概需要3分钟。
内容图文
![linux的驱动开发——设备号](/upload/InfoBanner/zyjiaocheng/934/b8c224d32edc48218b9c106af2dab2ff.jpg)
1.设备号的获取
\qquad 设备号的获取方法:自动分配;指定设备号注册
2.自动分配函数
\qquad
函数:int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
\qquad
功能:分配设备号
\qquad
参数:第一个参数:dev_t类型定义的变量,取地址传入;第二个参数:次设备号,次设备号自己指定;第三个参数:设备个数;第四个参数:名字
\qquad
返回值:成功返回0;失败返回负数错误码
int alloc_chrdev_region(dev_t *dev, unsigned baseminor, unsigned count, const char *name)
{
struct char_device_struct *cd;
cd = __register_chrdev_region(0, baseminor, count, name);
if (IS_ERR(cd))
return PTR_ERR(cd);
*dev = MKDEV(cd->major, cd->baseminor);
return 0;
}
3.指定设备号注册
\qquad
函数:int register_chrdev_region(dev_t from, unsigned count, const char *name)
\qquad
功能:指定设备号注册
\qquad
参数:第一个参数:设备号(MKDEV(major,minor)
);第二个参数:设备个数;第三个参数:名字
\qquad
返回值:成功返回0;失败返回负数错误码
int register_chrdev_region(dev_t from, unsigned count, const char *name)
{
struct char_device_struct *cd;
dev_t to = from + count;
dev_t n, next;
for (n = from; n < to; n = next) {
next = MKDEV(MAJOR(n)+1, 0);
if (next > to)
next = to;
cd = __register_chrdev_region(MAJOR(n), MINOR(n),
next - n, name);
if (IS_ERR(cd))
goto fail;
}
return 0;
fail:
to = n;
for (n = from; n < to; n = next) {
next = MKDEV(MAJOR(n)+1, 0);
kfree(__unregister_chrdev_region(MAJOR(n), MINOR(n), next - n));
}
return PTR_ERR(cd);
}
4.注销设备号
\qquad
函数:void unregister_chrdev_region(dev_t from, unsigned count)
\qquad
功能:注销设备号
\qquad
参数:第一个参数:设备号;第二个参数:设备个数
\qquad
返回值:void
void unregister_chrdev_region(dev_t from, unsigned count)
{
dev_t to = from + count;
dev_t n, next;
for (n = from; n < to; n = next) {
next = MKDEV(MAJOR(n)+1, 0);
if (next > to)
next = to;
kfree(__unregister_chrdev_region(MAJOR(n), MINOR(n), next - n));
}
}
内容总结
以上是互联网集市为您收集整理的linux的驱动开发——设备号全部内容,希望文章能够帮你解决linux的驱动开发——设备号所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。