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

正文內(nèi)容

linux操作系統(tǒng)操作系統(tǒng)課程設計報告(編輯修改稿)

2025-06-09 22:31 本頁面
 

【文章內(nèi)容簡介】 環(huán)讀一個字節(jié)直到文件尾 if(bytes_read==1) return 0。 //一個致命的錯誤發(fā)生了 if(bytes_read0){ bytes_write=sys_write(to_fd,buffer,bytes_read)。 //寫一個字節(jié) if(bytes_write==1)return 0。 // 一個致命錯誤發(fā)生了 } } set_fs(old_fs)。 sys_close(from_fd)。 //關(guān)閉文件 sys_close(to_fd)。 //關(guān)閉文件 return 1。}B. 測試程序include include include include sys/ include sys/ include include int main(int argc,char *argv[]){ int from_fd,to_fd。 if(argc!=3){ //三個參數(shù) printf(Input error!\n)。 return(1)。 } else if(syscall(338,argv[1],argv[2]))printf(Successful!\n)。 //系統(tǒng)調(diào)用號為338 else printf(Failed!\n)。 return 1。}三、 添加新的設備驅(qū)動程序A. 驅(qū)動源程序include linux/include linux/include linux/include linux/include asm/include linux/define MAJOR_NUM 100 MODULE_LICENSE(GPL)。MODULE_AUTHOR(HQM)。char buffer[1024]。 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 *)。struct file_operations char_fops={ read:char_read, write:char_write,}。static int char_init(void) //注冊字符設備{ if(register_chrdev(MAJOR_NUM, rollover, amp。char_fops)) { printk(rollover register failure\n)。 return 1。 } else { printk(rollover register success\n)。 return 0。 }}static void char_exit(void) //注銷字符設備{ unregister_chrdev(MAJOR_NUM, rollover)。}static ssize_t char_read(struct file *filp, char *buf, size_t len, loff_t *off) //字符設備的讀操作{ printk(\nread in:%s\n, buf)。 if(copy_to_user(buf, buffer, len)) //將文件內(nèi)容讀到緩沖區(qū)buf { return 0。 } return true。}static ssize_t char_write(struct file *filp, const char*buf, size_t len, loff_t *off) //字符設備的寫操作{ int i = 0。 char temp[len]。 //緩存區(qū)temp大小 if(copy_from_user(temp, buf, len)) //將內(nèi)容拷貝到緩沖區(qū)temp { return 0。 } while(i len1) //將temp內(nèi)容倒序?qū)懭隻uffer { buffer[leni2]=temp[i]。 i++。 printk(\nwrite out:%c, buffer[leni])。 } return true。}module_init(char_init)。module_exit(char_exit)。B. 文件Makefile內(nèi)容ifneq ($(KERNELRELEASE),) kbuild syntax.模塊的文件組成mymoduleobjs := 生成的模塊文件名 objm := elsePWD :=$(shell pwd)KVER :=$(shell uname r)KDIR :=/lib/modules/$(KVER)/buildall: $(MAKE) C $(KDIR) M=$(PWD)clean: rm f *.cmd *.o *.mod *.ko rm rf .*.cmd *.o *. *.ko .tmp_versions $(MAKE) C $(KDIR) M=$(PWD) cleanEndifC. 測試程序include sys/include sys/include include void main(void){ int fd。 int count=0。 char buf[1024]。 //緩沖區(qū)大小 fd = open(/dev/rollover, O_RDWR, S_IRUSR | S_IWUSR)。 //打開字符設備文件 if (fd != 1 ) { printf(please input letters:)。 //用戶輸入字符串 scanf(%s, buf)。 while(buf[count++]) //count為字符串長度 { 。 } if(write(fd,buf, count)) //向字符設備文件寫入字符串 { if(read(fd,buf, count)) //從字符設備文件讀出字符串 printf(The letters is: %s\n, buf)。 else printf(Read Error!\n)。 } else printf(Write Error!\n)。 close(fd)。 //關(guān)閉字符設備文件 } else //打開字符設備錯誤的情況 { printf(Device open failure\n)。 }}四、 任務管理器源程序A. 任務管理器源程序include include include include include sys/include sys/include include include include include include include define GTK_ENABLE_BROKEN//在文本構(gòu)件中使用int read_proc()。//讀取proc文件內(nèi)容int timeout_refresh()。//時間刷新函數(shù)char *strcut(char *main_str, char *sub_str)。//取字符串char *findstr(char *mainstr,int n)。 //查找字符串void on_button_H_clicked (GtkWidget *button,gpointer userdata)。 //關(guān)機的對話框void on_button_G_clicked (GtkWidget *button,gpointer userdata)。 //重啟的對話框void on_button_E_clicked (GtkWidget *button,gpointer userdata)。 //退出的對話框void on_button_P_clicked (GtkWidget *button,gpointer userdata)。 //結(jié)束進程的對話框void on_button_M_clicked (GtkWidget *button,gpointer userdata)。 //卸載模塊的對話框void kill_proc(void)。void uninst_mod(void)。static char pro_buf[256][5][32]。//進程信息static char *pro_pid。 //進程pidstatic char *mod_name。//模塊名static char sys_buf[2][10][196]。//系統(tǒng)信息static char mm_buf[10][196]。//內(nèi)存信息static char module_buf[256][3][32]。//模塊信息static char cpu_buf[256][10][32]。 //cpu信息static int pro_row。static int mod_row。static int temp_pro。//當前進程數(shù)static int pre_pro。static int run_pro=1。 //運行進程數(shù)static int temp_module。//當前模塊數(shù)static int pre_module。static int temp_cpu。 //CPU個數(shù)static double pre_cpu。static int CPU[60]。GtkWidget *window。GtkWidget *pro_list。//進程列表指針GtkWidget *module_list。//模塊列表指針GtkWidget *pbar1, *pbar2, *pbar3,*pbar4。 //進度條GtkWidget *vb。GtkPixmap *pixmap=NULL。GtkWidget *drawing_area。 //CPU折線顯示窗口GtkWidget *pbar1label1, *pbar1label2, *pbar1label3, *pbar2label1, *pbar2label2, *pbar2label3, *pbar3label1,*pbar4label1。/*關(guān)機按鈕的對話框*/void on_button_H_clicked (GtkWidget *button,gpointer userdata){ GtkWidget *dialog_H。 gint result_H。 dialog_H = gtk_message_dialog_new(NULL,GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,GTK_BUTTONS_YES_NO,是否確定關(guān)閉計算機?)。 gtk_window_set_title(GTK_WINDOW(dialog_H), 關(guān)機提示)。 result_H=gtk_dialog_run(GTK_DIALOG(dialog_H))。 switch (result_H){ case 8: //8表示確定 system(shutdown h now)。 //關(guān)機 break。 default: break。 } gtk_widget_destroy(dialog_H)。}/*重啟按鈕的對話框*/void on_button_G_clicked (GtkWidget *button,gpointer userdata){ GtkWidget *dialog_G。 gint result_G。 dialog_G = gtk_message_dialog_new(NULL,GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION,GTK_BUTTONS_YES_NO,是否確定重新啟動計算機?)。 gtk_window_set_title(GTK_WINDOW(dialog_G), 重啟提示)。 result_G=gtk_dialog_run(GTK_DIALOG(dialog_G))。 switch (result_G){ case 8: system(shutdown r now)。 //重啟 break。 default: break。 } gtk_widget_destroy(dialog_G)。}/*退出按鈕的對話框*/void on_button_E_clicked (GtkWidget *button,gpointer userdata){
點擊復制文檔內(nèi)容
職業(yè)教育相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1