新聞中心
開發(fā)平臺 芯靈思Sinlinx A64
內(nèi)存: 1GB 存儲: 4GB
開發(fā)板詳細(xì)參數(shù) https://m.tb.cn/h.3wMaSKm
開發(fā)板交流群 641395230網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì)的關(guān)注點(diǎn)不是能為您做些什么網(wǎng)站,而是怎么做網(wǎng)站,有沒有做好網(wǎng)站,給創(chuàng)新互聯(lián)一個(gè)展示的機(jī)會來證明自己,這并不會花費(fèi)您太多時(shí)間,或許會給您帶來新的靈感和驚喜。面向用戶友好,注重用戶體驗(yàn),一切以用戶為中心。
阻塞:阻塞調(diào)用是指調(diào)用結(jié)果返回之前,當(dāng)前進(jìn)程程會被掛起(休眠)。函數(shù)只有在得到結(jié)果之后才會返回。默認(rèn)情況下,文件都是以這種方式打開。
非阻塞:指在不能立刻得到結(jié)果之前,該函數(shù)不會阻塞當(dāng)前進(jìn)程程,而會立刻返回。應(yīng)用程序可選擇以阻塞或非阻塞方式打開設(shè)備文件,然后設(shè)備進(jìn)行讀寫操作,如果驅(qū)動的讀寫函數(shù)支持阻塞和非阻塞功能,這兩種打開方式才會有區(qū)別。
阻塞示例 :fd = open("/xxx/word", O_RDONLY ); // 默認(rèn)阻塞方式打開
如果此時(shí)沒有數(shù)據(jù)可以讀取,則執(zhí)行休眠
如果有數(shù)據(jù)可以讀取,則馬上讀取數(shù)據(jù),不休眠,讀取數(shù)據(jù)后馬上返回。
非阻塞示例 :fd = open("/xxx/word", O_RDONLY | O_NONBLOCK ); //非阻塞方式打開
如果此時(shí)已經(jīng)有數(shù)據(jù)可以讀取,則讀取數(shù)據(jù)再返回。
如果沒有數(shù)據(jù)可以讀,也馬上返回,但是返回一個(gè)錯(cuò)誤碼。
1)驅(qū)動中如何得到用戶空間應(yīng)用程序打開的方式?
open一個(gè)設(shè)備,內(nèi)核會創(chuàng)建一個(gè)file結(jié)構(gòu),并且把打開方式的數(shù)值存放到file結(jié)構(gòu)成員f_flags成員中,驅(qū)動程序的read,write 接口可以使用參數(shù)file指針取得文件打開方式。file結(jié)構(gòu)中有一個(gè)成員是f_flags ,創(chuàng)建時(shí)候,內(nèi)核會把open 函數(shù)的最后一個(gè)參數(shù) flag 數(shù)值保存在 f_flags 變量中。
static ssize_t xxx_read(struct file *pfile, char user *buf, size_t count, loff_t *poff)
{
……
//判斷當(dāng)前是否有按鍵動作
if(沒有按鍵動作)
{
//判斷 pfile->f_flags 成員是否設(shè)置 O_NONBLOCK
if(pfile->f_flags & O_NONBLOCK) //表示用戶空間使用非阻塞打開
{
return - EAGAIN; //返回一個(gè)錯(cuò)誤碼,告訴用戶空間你可以再嘗試讀取
}
//阻塞方式打開,沒有數(shù)據(jù)就休眠,不馬上返回else
{
//休眠,等待有按鍵動作喚醒進(jìn)程。
}
}
}
2)如何知道是否有按鍵動作?
如果按鍵按鍵或松開時(shí)刻,會產(chǎn)生一個(gè)中斷,所以,在中斷程序設(shè)置一個(gè)標(biāo)志即可。
定義一個(gè)全局變量,初始值為 0,表示沒有按鍵動作發(fā)生,在中斷程序中設(shè)置這個(gè)變量值為 1,表示發(fā)生按鍵動作。
3)如何讓進(jìn)程進(jìn)入休眠狀態(tài)?
最簡單,最直接的休眠方式: msleep 函數(shù)
這個(gè)函數(shù):一旦調(diào)用,則調(diào)用進(jìn)程會休眠指定長的時(shí)間,時(shí)間一到內(nèi)核會喚醒這個(gè)進(jìn)程.
//休眠,等待有按鍵動作喚醒進(jìn)程。
while(press == 0)
msleep(5); // 休眠5ms
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
分享文章:芯靈思SinlinxA64開發(fā)板Linux內(nèi)核等待隊(duì)列p-創(chuàng)新互聯(lián)
網(wǎng)站鏈接:http://www.dlmjj.cn/article/djsohe.html