【正文】
? 卸載模塊命令 rmmod ? 查詢(xún)系統(tǒng)中已裝入的模塊 lsmod 22 模塊的設(shè)計(jì) ? 例子 define MODULE include linux/ int init_module(void) { printk(Hello, world\n)。 塊設(shè)備的缺省操作 def_blk_fops 14 ?block_read與 block_write等函數(shù)是設(shè)備相關(guān)的 ?塊設(shè)備注冊(cè)時(shí)一個(gè)重要的任務(wù)就是提供這個(gè)設(shè)備相關(guān)的操作函數(shù)給內(nèi)核 15 devfs注冊(cè)與管理 ?fs/devfs/ ? register_chrdev()停止使用,改為 devfs_register_chrdev() ? register_blkdev()停止使用,改為 devfs_register_blkdev() ? int devfs_register_chrdev (unsigned int major, const char *name, struct file_operations *fops) ? int devfs_register_blkdev (unsigned int major, const char *name, struct block_device_operations *bdops) ? int devfs_unregister_chrdev (unsigned int major, const char *name) ? int devfs_unregister_blkdev (unsigned int major, const char *name) 16 塊設(shè)備的請(qǐng)求隊(duì)列 ? 當(dāng)系統(tǒng)對(duì)塊設(shè)備進(jìn)行讀操作時(shí),僅僅是通過(guò)塊設(shè)備通用的讀操作函數(shù) block_read( ), 將這一個(gè)請(qǐng)求發(fā)送給對(duì)應(yīng)的設(shè)備,并保存在該設(shè)備的操作請(qǐng)求隊(duì)列( request queue) 中。 int (*release) (struct inode *, struct file *)。 }。 (4) ioctl(inode, file, cmd, arg): 向一個(gè)硬件設(shè)備發(fā)命令,對(duì)設(shè)備進(jìn)行控制。 int(*open) (struct inode *,struct file *)。1 設(shè)備管理與模塊機(jī)制 ?基本概念 ?傳統(tǒng)方式的設(shè)備注冊(cè)與管理 ?devfs注冊(cè)與管理 ?塊設(shè)備的請(qǐng)求隊(duì)列 ?網(wǎng)絡(luò)設(shè)備 ?模塊機(jī)制 2 基本概念 ? 字符設(shè)備、塊設(shè)備、網(wǎng)絡(luò)設(shè)備 字符設(shè)備以字節(jié)為單位進(jìn)行數(shù)據(jù)處理,通常只允許按順序訪問(wèn) 塊設(shè)備將數(shù)據(jù)按可尋址的塊為單位進(jìn)行處理,可以隨機(jī)訪問(wèn),利用緩沖技術(shù) 網(wǎng)絡(luò)設(shè)備是一類(lèi)特殊的設(shè)備,每塊網(wǎng)卡有名字但沒(méi)有設(shè)備文件與之對(duì)應(yīng) 查看系統(tǒng)中的設(shè)備: /proc/devices ? 主設(shè)備號(hào)和次設(shè)備號(hào) major number: 相同的設(shè)備使用相同的驅(qū)動(dòng)程序 minor number: 用來(lái)區(qū)分具體設(shè)備的實(shí)例 查看設(shè)備及其類(lèi)型“ ls l /dev” ? 設(shè)備文件系統(tǒng) devfs /dev目錄過(guò)于龐大,很多設(shè)備文件沒(méi)有對(duì)應(yīng)系統(tǒng)中的設(shè)備 devfs根據(jù)系統(tǒng)中的實(shí)際設(shè)備構(gòu)建設(shè)備文件,并按目錄存放,如 /dev/disk,/dev/pts 3 基本概念 用戶(hù)空間內(nèi)核空間I / O 請(qǐng)求設(shè)備驅(qū)動(dòng)程序設(shè) 備I S R系統(tǒng)調(diào)用r e t _ f r o m _ s y s _ c a l l返回 , 進(jìn)程繼續(xù)4 基本概念 用戶(hù)程序調(diào)用Fd = f o p e n ( “ / d e v / hda ” , O _ R D W R , 0 ) 。 int(*mmap) (struct file *,struct vm_area_struct *)。 (3) write(file, buf, co