書中所使用的是mknod命令手動建立節點,事實上有一組函式支援自動建立裝置節點。核心中定義了struct class結構體,乙個struct class結構體變數對應乙個類,核心提供了class_create巨集來建立乙個類。呼叫class_create會在/sys/class目錄下生成乙個目錄,接著再呼叫device_create來建立裝置節點,建立的裝置節點位於/dev目錄下。定義在<linux/device.h>,函式宣告如下:
#define class_create(owner, name) \
()
owner:一般都是this_module
name:class的名稱,也就是顯示在/sys/class下的目錄名稱
struct device *
device_create
(struct class *cls,
struct device *parent,
dev_t devt,
void
*drvdata,
const
char
*fmt,..
.);
cls:要建立裝置裝置所屬的類,就是class_create建立的類
parent:這個裝置的父裝置,如果沒有為null
devt:裝置號
drvdata:null
fmt:裝置名稱
登出的函式如下:
void
class_destroy
(struct class *cls)
;void
device_destroy
(struct class *cls, dev_t devt)
;
在/sys/class目錄下會建立csdn_dev_class,在/dev目錄下會建立csdn_dev節點
static
struct class *csdn_class =
null
;static
struct device *csdn_device =
null
;static __init int
csdn_init
(void
)static __exit void
csdn_exit
(void
)
linux自動建立裝置節點
在有2.6系列版本中支援udev管理裝置檔案可以方便的建立裝置節點,不必使用mknod來建立 主要用到的四個方法在linux device.h定義 建立類和釋放類的函式 建立成後將建立 sys class name資料夾 extern struct class class create struct...
Linux dev 自動建立裝置節點
udev的支援主要作用是 在驅動初始化的 裡呼叫class create 為該裝置建立乙個class,再為每個裝置呼叫device create 核心中定義的struct class結構體,顧名思義,乙個struct class結構體型別變數對應乙個類,核心同時提供了class create 函式,...
device create建立裝置節點分析
在驅動中經常可以看到類似下面的話 adb dev class class create this module,adb device create adb dev class,null,mkdev adb major,0 null,adb 那麼device create呼叫什麼函式建立裝置節點,繼續...