如何解决使用MKDEV宏的简单方法是什么?
我有一个char设备的次编号和主编号,我想将它们转换为dev_t
(用于保存设备编号),但是我不想做所有的构建和构造过程。编写模块,insmod
插入内核等。
使用MKDEV
宏是一种简单快捷的方法吗?
#include <linux/kdev_t.h>
#include <linux/types.h>
dev_t device_num = MKDEV(int major,int minor);
使用标准的 C 程序显然不起作用,因为它是内核代码/内核空间。
更新:编写用户空间程序确实可以,但是我不能使用dev_t
数据类型,也许是因为它只能由内核使用吗?
#include <linux/kdev_t.h> // MKDEV
#include <linux/types.h> // dev_t
#include <stdio.h> // I/O
int main(void)
{
int device_id = MKDEV(10,249);
printf("%d\n",device_id); // 2809
return 0;
}
解决方法
用户空间程序也可以访问提供MKDEV
宏的标头linux/kdev_t.h。
用户空间程序无法访问dev_t
类型的定义(对于内核和用户,标题linux/types.h
不同),但是对于MKDEV
的结果而言您可以使用16位或更多的任何整数类型。
#include <linux/kdev_t.h>
<...>
int device_id = MKDEV(10,249);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。