?? pipe.c
字號:
/** linux/fs/pipe.c** (C) 1991 Linus Torvalds*/#include <signal.h> // 信號頭文件。定義信號符號常量,信號結構以及信號操作函數原型。#include <linux/sched.h> // 調度程序頭文件,定義了任務結構task_struct、初始任務0 的數據,// 還有一些有關描述符參數設置和獲取的嵌入式匯編函數宏語句。#include <linux/mm.h> /* for get_free_page */ /* 使用其中的get_free_page */// 內存管理頭文件。含有頁面大小定義和一些頁面釋放函數原型。#include <asm/segment.h> // 段操作頭文件。定義了有關段寄存器操作的嵌入式匯編函數。//// 管道讀操作函數。// 參數inode 是管道對應的i 節(jié)點,buf 是數據緩沖區(qū)指針,count 是讀取的字節(jié)數。intread_pipe (struct m_inode *inode, char *buf, int count){ int chars, size, read = 0;// 若欲讀取的字節(jié)計數值count 大于0,則循環(huán)執(zhí)行以下操作。 while (count > 0) {// 若當前管道中沒有數據(size=0),則喚醒等待該節(jié)點的進程,如果已沒有寫管道者,則返回已讀// 字節(jié)數,退出。否則在該i 節(jié)點上睡眠,等待信息。 while (!(size = PIPE_SIZE (*inode))) { wake_up (&inode->i_wait); 管道緩沖區(qū)長度(PAGE_SIZE)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -