亚洲成精品动漫久久精久,九九在线精品视频播放,黄色成人免费观看,三级成人影院,久碰久,四虎成人欧美精品在永久在线

掃一掃
關(guān)注微信公眾號

linux設(shè)備驅(qū)動筆記——字符設(shè)備驅(qū)動3
2007-08-07   中國IT實驗室

※ read和write

ssize_t read(struct file *filp, char _ _user *buff,size_t count, loff_t *offp);
從設(shè)備拷貝數(shù)據(jù)到用戶空間
ssize_t write(struct file *filp, const char _ _user *buff,size_t count, 
loff_t *offp);
從用戶空間拷貝數(shù)據(jù)到設(shè)備上。

※ 參數(shù)buff是指向用戶空間的緩沖區(qū),這個緩沖區(qū)或者保存要寫入的數(shù)據(jù),或者是一個存放新讀入數(shù)據(jù)的空緩沖區(qū)。

         unsigned long copy_to_user(void _ _user *to, const void *from,
unsigned long count);
 
         unsigned long copy_from_user(void *to, const void _ _user *from,
unsigned long count);

※ 這兩個函數(shù)還檢測用戶空間的指針是否有效。

※ Read方法

n 如果返回值等于最為count參數(shù)傳遞給read系統(tǒng)調(diào)用的值,所請求的字節(jié)數(shù)傳輸就成功完成了。這是最好的情況。

n 如果返回值是正的,但是比count小,只有部分?jǐn)?shù)據(jù)成功傳送。這種情況因設(shè)備的不同可能有許多原因。大部分情況下,程序會重新讀數(shù)據(jù)。例如,如果你用fread函數(shù)讀數(shù)據(jù),這個庫庫函數(shù)會不斷調(diào)用系統(tǒng)調(diào)用直至所請求的數(shù)據(jù)傳輸完成。

n 如果返回值為0,它表示已經(jīng)到達(dá)了文件尾。

n 負(fù)值意味著發(fā)生了錯誤。值就是錯誤編碼,錯誤編碼在<linux/errno.h>中定義。

※ 與read相似,根據(jù)如下返回值規(guī)則,write也可以傳輸少于請求的數(shù)據(jù)量:

n 如果返回值等于count,則完成了請求數(shù)目的字節(jié)傳送。

n 如果返回值是正的,但小于count,只傳輸了部分?jǐn)?shù)據(jù)。再說明一次,程序很可能會再次讀取余下的部分。

n 如果值為0,什么也沒寫。這個結(jié)果不是錯誤,而且也沒有什么緣由需要返回一個錯誤編碼。再說明一次,標(biāo)準(zhǔn)庫會重復(fù)調(diào)用write。以后的章節(jié)會介紹阻塞型write,我們會對這種情形最更詳盡的考察。

n 負(fù)值意味發(fā)生了錯誤;語義與read相同。

熱詞搜索:

上一篇:linux設(shè)備驅(qū)動筆記——字符設(shè)備驅(qū)動2
下一篇:PING值的合格界限是200

分享到: 收藏