linux註冊字元裝置和解除安裝字元裝置函式
int register_chrdev(unsigned int major, const char *name, struct file_operations *fops);
這裡,
major 是感興趣的主編號,
name 是驅動的名子(出現在 /proc/devices),
fops 是預設的file_operations 結構.
一個對 register_chrdev 的呼叫為給定的主編號註冊 0 - 255 的次編號, 並且為每
一個建立一個預設的 cdev 結構. 使用這個介面的驅動必須準備好處理對所有 256 個次編號的 open
呼叫( 不管它們是否對應真實裝置 ), 它們不能使用大於 255 的主或次編號.
若主裝置號設為0 則核心自動分配主裝置號
從系統中去除裝置的正確的函式是:
int unregister_chrdev(unsigned int major, const char *name);
major 和 name 必須和傳遞給 register_chrdev 的相同, 否則呼叫會失敗
例如
#define sddev_MAJOR 200
static const struct file_operations dev_fops={
.owner = THIS_MODULE,
.open = dev_open,
.write = dev_write,
.read = dev_read,
.release = dev_release,
};
register_chrdev(sddev_MAJOR,"sddev",&dev_fops);
unregister_chrdev(sddev_MAJOR,"sddev");