linux自動建立裝置節點

2021-06-27 20:00:19 字數 2419 閱讀 4146

在有2.6系列版本中支援udev管理裝置檔案可以方便的建立裝置節點,不必使用mknod來建立

//主要用到的四個方法在linux/device.h定義:

//建立類和釋放類的函式  建立成後將建立/sys/class/name資料夾

extern

struct

class *class_create(struct module *owner, const

char *name);  

extern

void class_destroy(struct

class *cls);  

//在低版本的核心提供class_device_create來建立裝置節點 和 刪除裝置的方法 

extern

struct class_device *class_device_create(struct

class *cls,  

struct class_device *parent,  

dev_t devt,  

struct device *device,  

const

char *fmt, ...)  

__attribute__((format(printf,5,6)));  

extern

void class_device_destroy(struct

class *cls, dev_t devt);  

//在高版本的核心提供device_create來建立裝置節點 和 刪除裝置的方法 

extern

struct device *device_create(struct

class *cls,   

struct device *parent,  

dev_t devt, void *drvdata,  

const

char *fmt, ...)  

__attribute__((format(printf, 5, 6)));  

extern

void device_destroy(struct

class *cls, dev_t devt);  

//如果你不知道你的到底哪個函式,可以直接到核心頭檔案目錄下找device.h,搜尋一下定義的是哪個函式

##########################舉例說明################################

#include 

#include 

#include 

#include 

#include 

#include 

module_author("my name");  

module_license("dual bsd/gpl");  

static

int major_i=66;  

static

int minor_i=0;  

struct

class* mclass;  

static

int node_init(void)  

/*class_device_create 在/dev下建立 noddev0裝置*/

device_create(mclass,null,mkdev(major_i,minor_i),null,"noddev0");    

/*這裡最後乙個引數可以用格式化引數 const char *fmt, ...*/

device_create(mclass,null,mkdev(major_i,minor_i+20),null,"noddev%d",minor_i+20);  

printk(kern_alert "create node success:\n");  

printk(kern_alert "  ls -l /dev/noddev*\n");  

printk(kern_alert "  ls -l /sys/class/noddev\n");  

return 0;  

}  static

void node_exit(void)  

module_init(node_init);  

module_exit(node_exit); 

################也可動態申請裝置號###################

#include

static

int major;  

static

int minor; 

alloc_chrdev_region(&dev_num,0,1,"moddev");     //(number,frist minor,count ,"name")

major=major(dev_num);

minor=minor(dev_num);

《Linux裝置節點建立》手動與自動建立裝置節點

android2.3及linux2.6.29核心模擬器版本編譯與除錯 一 手動建立 1.驅動模組 test driver.c include include include include include include include include define test major 240 動...

Linux dev 自動建立裝置節點

udev的支援主要作用是 在驅動初始化的 裡呼叫class create 為該裝置建立乙個class,再為每個裝置呼叫device create 核心中定義的struct class結構體,顧名思義,乙個struct class結構體型別變數對應乙個類,核心同時提供了class create 函式,...

linux字元裝置驅動中自動建立裝置節點

簡述 1 裝置號 驅動等概念性問題 2 裝置號的自動分配和手動指定 3 mknode手動建立節點。編碼實現 1 核心點 要使的驅動能夠在載入時自動完成裝置節點的註冊,主要流程如下 驅動載入時完成如下工作 分配裝置號 註冊字元裝置 動態建立裝置節點。驅動解除安裝時完成如下工作 刪除裝置節點 取消字元裝...