日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

linux静态分配设备号,Linux驱动开发之静态申请设备号

發布時間:2024/9/27 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux静态分配设备号,Linux驱动开发之静态申请设备号 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、

1、頭文件

include/linux/fs.h

2、API

靜態申請設備號

int register_chrdev_region(dev_t, unsigned, const char *);

動態分配設備號

int alloc_chrdev_region(dev_t *, unsigned, unsigned, const char *);

3、注銷設備號

void unregister_chrdev_region(dev_t, unsigned);

二、靜態申請設備號實例

1、驅動源代碼

#include #include #include #include static int hello_major = 248; // 主設備號

static int hello_minor = 0; // 次設備號

static int number_of_devices = 1; // 設備的數量

static __init char_driver_init(void)

{

int result;

dev_t dev = 0;

dev = MKDEV (hello_major, hello_minor); // 主設備號、次設備號合并為設備號

result = register_chrdev_region (dev, number_of_devices, "hello"); // 靜態注冊設備號: name 體現在"/proc/devices"中

if (result<0) {

printk (KERN_ERR "char_driver_init: can't get major number %d\n", hello_major);

return result;

}

printk(KERN_INFO "char_driver_init\n");

return 0;

}

static __exit char_driver_exit(void)

{

dev_t devno = MKDEV (hello_major, hello_minor);// 主設備號、次設備號合并為設備號

unregister_chrdev_region (devno, number_of_devices);// 注銷設備號

printk(KERN_INFO "char_driver_exit\n");

}

module_init(char_driver_init);

module_exit(char_driver_exit);

MODULE_LICENSE("GPL");

MODULE_VERSION("v1.0");

MODULE_AUTHOR("xz@vichip.com.cn");

MODULE_DESCRIPTION("Char Driver Module");

MODULE_ALIAS("char driver module");

2、Makefile

ifeq ($(KERNELRELEASE),)

KERNELDIR ?= /lib/modules/$(shell uname -r)/build

PWD := $(shell pwd)

all:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

clean:

$(MAKE) -C $(KERNELDIR) M=$(PWD) clean

else

obj-m := char_reg.o

endif

3、驗證

1)make

2)sudo insmod?char_reg.ko

3)cat /proc/devices

xiezhi@sdtpad-desktop:~/xiezhi/linux_drivers/char_reg$ cat /proc/devices

Character devices:

1 mem

4 /dev/vc/0

4 tty

4 ttyS

5 /dev/tty

5 /dev/console

5 /dev/ptmx

5 ttyprintk

6 lp

7 vcs

10 misc

13 input

14 sound

21 sg

29 fb

99 ppdev

108 ppp

116 alsa

128 ptm

136 pts

180 usb

189 usb_device

216 rfcomm

226 drm

248 hello

250 mei

251 hidraw

252 usbmon

253 bsg

254 rtc4)sudo rmmod?char_reg

總結

以上是生活随笔為你收集整理的linux静态分配设备号,Linux驱动开发之静态申请设备号的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。