我有一个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;
}
答案 0 :(得分:0)
用户空间程序也可以访问提供MKDEV
宏的标头linux/kdev_t.h。
用户空间程序无法访问dev_t
类型的定义(对于内核和用户,标题linux/types.h
不同),但是对于MKDEV
的结果而言您可以使用16位或更多的任何整数类型。
#include <linux/kdev_t.h>
<...>
int device_id = MKDEV(10, 249);