freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

網(wǎng)絡(luò)操作系統(tǒng)課程設(shè)計(jì)-資料下載頁

2025-07-07 15:51本頁面
  

【正文】 程比較簡單,命令如下:sudomakesudoinsmod(此處可用sudolsmod看看是否成功)sudomknod/dev/chardev0 c 255 0(chardev0是設(shè)備名,c代表字符設(shè)備,255是主設(shè)備號(hào),0是從設(shè)備號(hào))然后在寫一個(gè)測試程序測試就可以了。這里我只給了這個(gè)設(shè)備一個(gè)字符的緩沖區(qū)大小。我的讀寫測試程序是分開的,就是有一個(gè)程序讀,另一個(gè)程序?qū)?。源代碼(1)字符驅(qū)動(dòng)設(shè)備程序include linux/include linux/include linux/include asm/include linux/MODULE_LICENSE(GPL)。MODULE_AUTHOR(SH)。define DP_MAJOR 255define DP_MINOR 0/*具體的操作函數(shù)聲明*/static ssize_t char_read(struct file *, char *, size_t, loff_t*)。static ssize_t char_write(struct file *, const char *, size_t, loff_t*)。static ssize_t char_open(struct inode *,struct file *)。static ssize_t char_release(struct inode *,struct file *)。/* file_operations結(jié)構(gòu)體*/struct file_operations char_ops = {.read = char_read,.write = char_write,.open = char_open,.release = char_release,}。/*字符設(shè)備的緩沖區(qū)*/static char buffer = 39。c39。static int dev_open。/*初始化*/static int __init char_init(void){int ret。ret = register_chrdev(DP_MAJOR,chardev,amp。char_ops)。//注冊設(shè)備if(ret){printk(chardev register failure)。}else{printk(chardev register success)。}return ret。}/*退出*/static void __exit char_exit(void){printk(unregister......)。unregister_chrdev(DP_MAJOR,chardev)。//注銷}/*打開一個(gè)設(shè)備*/static ssize_t char_open(struct inode *inode,struct file *file){if(dev_open==0)dev_open++。else{printk(KERN_ALERTAnother process open the char device\n)。return 1。}try_module_get(THIS_MODULE)。return 0。}/*關(guān)閉一個(gè)設(shè)備*/static ssize_t char_release(struct inode *inode,struct file *file){if(dev_open==1){dev_open。}module_put(THIS_MODULE)。return 0。}/*讀取緩沖區(qū)內(nèi)容*/static ssize_t char_read(struct file *filp, char *buf, size_t len, loff_t *off){if(copy_to_user(buf,amp。buffer,sizeof(int))){return EFAULT。}return sizeof(int)。}/*向緩沖區(qū)中寫入內(nèi)容*/static ssize_t char_write(struct file *filp, const char *buf, size_t len, loff_t *off){if(copy_from_user(amp。buffer,buf,sizeof(int))){return EFAULT。}return sizeof(int)。}module_init(char_init)。module_exit(char_exit)。(2)makefile文件ifeq ($(KERNELRELEASE),)KERNELDIR ?=/usr/src/PWD := $(shell pwd)modules:$(MAKE) C $(KERNELDIR) M=$(PWD)modules_install:$(MAKE) C $(KERNELDIR) M=$(PWD)modules_installclean:rm rf *.o *~core .depend .*.cmd *.ko *. tmp_versions.PHONY:modules modules_install cleanelseobjm := endif(3)include include include sys/include sys/include include include int main(void){int testdev。int i。char buf。testdev = open(/dev/chardev0,O_RDWR)。if ( testdev == 1 ){printf(Cann39。t open file \n%d\n,testdev)。exit(0)。}memset(amp。buf, 0, sizeof(char))。read(testdev,amp。buf,sizeof(char))。printf(%c\n,buf)。close(testdev)。return 0。}(4)include include include sys/include sys/include include include int main(void){int testdev。int i。char buf。testdev = open(/dev/chardev0,O_RDWR)。if ( testdev == 1 ){printf(Cann39。t open file \n%d\n,testdev)。exit(0)。}printf(please input the number written\n)。scanf(%c,amp。buf)。write(testdev,amp。buf,sizeof(char))。close(testdev)。return 0。}任務(wù)管理器這個(gè)程序基本上是參照了windows下的任務(wù)管理器來寫的,所以基本上就叫做任務(wù)管理器了。整個(gè)管理器的圖形部分是由GTK編寫的,用到了一些常用構(gòu)件和容器比如label、progress_bar、notebook等,還用到了一些其他構(gòu)件比如GtkListStore、GtkTreeViewColumn、GtkTreeIter等。整個(gè)程序還是有一定的復(fù)雜性的,但總的來說終點(diǎn)主要是在兩個(gè)方面,一個(gè)是從/proc文件夾下讀取所需要的系統(tǒng)信息并進(jìn)行加工利用,另一個(gè)就是是用GTK完成整個(gè)界面的設(shè)計(jì)。由于代碼量還是有一點(diǎn)大,這里無法詳細(xì)的進(jìn)行解釋,所以請參照代碼的注釋和程序運(yùn)行的結(jié)果理解。本程序的源代碼經(jīng)過了一定的整理,在結(jié)構(gòu)上還是比較清晰的,而且在關(guān)鍵的地方都有注釋,包括相應(yīng)的信息是從哪個(gè)文件讀取的等等。程序運(yùn)行的結(jié)果如
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1