增加 Linux Kernel 字符设备接口函数.
Signed-off-by: ithink.chan <chenyang@autoai.com>
This commit is contained in:
parent
ea6847b4b5
commit
665f5d4dca
|
@ -0,0 +1,115 @@
|
|||
# Linux Kernel 字符设备接口函数
|
||||
|
||||
**头文件:**
|
||||
|
||||
```cpp
|
||||
#include <linux/cdev.h>
|
||||
```
|
||||
|
||||
## MKDEV
|
||||
|
||||
**函数原型:**
|
||||
|
||||
```cpp
|
||||
#define MKDEV(major,minor) (((major) << MINORBITS) | (minor))
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
将主设备号和次设备号转换成 dev_t 类型。
|
||||
|
||||
**参数:**
|
||||
|
||||
major:主设备号。
|
||||
|
||||
minor:次设备号。
|
||||
|
||||
**返回值:**
|
||||
|
||||
dev_t 类型的设备号。
|
||||
|
||||
## register_chrdev_region
|
||||
|
||||
**函数原型:**
|
||||
|
||||
```cpp
|
||||
int register_chrdev_region(dev_t from, unsigned count, const char *name);
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
向内核申请注册设备号。
|
||||
|
||||
**参数:**
|
||||
|
||||
from:dev_t 形式的设备号,可由 MKDEV 创建。
|
||||
|
||||
count:申请次设备号的个数。
|
||||
|
||||
name:设备名称。执行 cat /proc/devices 时会显示该名称。
|
||||
|
||||
**返回值:**
|
||||
|
||||
成功返回 0,否则返回错误码。
|
||||
|
||||
## alloc_chrdev_region
|
||||
|
||||
**函数原型:**
|
||||
|
||||
```cpp
|
||||
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;
|
||||
}
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
动态分配主设备号。
|
||||
|
||||
**参数:**
|
||||
|
||||
dev:返回函数向内核申请下来的设备号。
|
||||
|
||||
baseminor:起始次设备号。
|
||||
|
||||
count:申请次设备号的个数。
|
||||
|
||||
name:设备名称。执行 cat /proc/devices 时会显示该名称。
|
||||
|
||||
**返回值:**
|
||||
|
||||
成功返回 0,否则返回错误码。
|
||||
|
||||
## cdev_init
|
||||
|
||||
**函数原型:**
|
||||
|
||||
```cpp
|
||||
void cdev_init(struct cdev *cdev, const struct file_operations *fops)
|
||||
{
|
||||
memset(cdev, 0, sizeof *cdev);
|
||||
INIT_LIST_HEAD(&cdev->list);
|
||||
kobject_init(&cdev->kobj, &ktype_cdev_default);
|
||||
cdev->ops = fops;
|
||||
}
|
||||
```
|
||||
|
||||
**说明:**
|
||||
|
||||
关联 cdev 和 file_operations
|
||||
|
||||
**参数:**
|
||||
|
||||
cdev:字符设备对象
|
||||
|
||||
fops:设备操作方法
|
||||
|
||||
**返回值:**
|
||||
|
||||
无
|
Loading…
Reference in New Issue