Linux 裝置驅動核心概念:主裝置號識別驅動程式,次裝置號識別具體裝置實例。本文系統解析功能定義、dev_t 內部結構、巨集操作、misc 裝置簡化註冊流程。
cat /proc/devices
typedef unsigned long dev_t;| 巨集 | 功能 | 定義 |
|---|---|---|
MAJOR(dev_t dev) | 從 dev_t 取得主號 | ((unsigned int)((dev) >> MINORBITS)) |
MINOR(dev_t dev) | 從 dev_t 取得次號 | ((unsigned int)((dev) & MINORMASK)) |
MKDEV(int major, int minor) | 由主/次號構建 dev_t | (((major) << MINORBITS) | (minor)) |
misc_register(&miscdev);
misc_deregister(&miscdev);
struct miscdevice {
int minor; // 次號,MISC_DYNAMIC_MINOR 自動分配
const char *name; // 裝置名稱 (顯示於 /dev/name)
struct file_operations *fops; // 檔案操作結構
struct miscdevice *next, *prev; // 內部鏈表
devfs_handle_t devfs_handle; // 內部
};
static struct miscdevice my_misc = {
.minor = MISC_DYNAMIC_MINOR,
.name = "mymisc",
.fops = &my_fops,
};
// 模組初始化呼叫 misc_register(&my_misc);
cat /proc/misc
掌握主/次號機制與 misc 裝置,驅動開發入門不再迷路。
Active Directory 域環境:通過組策略腳本自動將域用戶加入本地管理員組
Linux awk 內建函數大全:算術、字串、時間、I/O 與系統操作函數完整參考
Linux I/O 重定向進階技巧:文件描述符操作、標準流控制與腳本實戰
Linux strace 指令實戰:追蹤系統呼叫快速診斷疑難雜症
Linux 初學者最易犯的五大錯誤:期待像 Windows、濫用 Root、Google 找軟體、恐懼命令列、輕易放棄
CentOS Yum 源優化實戰:替換官方源為 USTC/阿里云/清華鏡像、EPEL/Remi 擴展源與離線源構建