linux硬體裝置操作函式(open舉例)

2021-08-10 22:43:59 字數 1287 閱讀 8278

open(/dev/ietctl, o_rdwr)

這是檔案i/o的常用函式,open函式,open函式用來開啟乙個裝置,他返回的是乙個整型變數,如果這個值等於-1,說明開啟檔案出現錯誤,如果為大於0的值,那麼這個值代表的就是檔案描述符。一般的寫法是if((fd=open("/dev/ttys0",o_rdwr | o_noctty | o_ndelay)<0)

這個事常用的一種用法fd是裝置描述符,

linux在操作硬體裝置時,遮蔽了硬體的基本細節,

只把硬體當做檔案來進行操作

,而所有的操作都是以open函式來開始,它用來獲取fd,然後後期的其他操作全部控制fd來完成對硬體裝置的實際操作。你要開啟的/dev/ttys0,代表的是串列埠1,也就是常說的com1,後面跟的是一些控制字。int open(const char *pathname, int oflag, …/*, mode_t mode * / ) ;這個就是open函式的公式。控制字可以有多種,我現在給你列出來:

o_rdonly 唯讀開啟。

o_wronly 只寫開啟。

o_rdwr 讀、寫開啟。

o_creat 若此檔案不存在則建立它。使用此選擇項時,需同時說明第三個引數mode,用其說明該新檔案的訪問許可權位。

o_excl 如果同時指定了o_creat,而檔案已經存在,則出錯。這可測試乙個檔案是否存在,如果不存在則建立此檔案成為乙個原子操作。

o_trunc 如果此檔案存在,而且為唯讀或只寫成功開啟,則將其長度截短為0。

o_noctty 如果p a t h n a m e指的是終端裝置,則不將此裝置分配作為此程序的控制終端。

o_nonblock 如果p a t h n a m e指的是乙個f i f o、乙個塊特殊檔案或乙個字元特殊檔案,則此選擇項為此檔案的本次開啟操作和後續的i / o操作設定非阻塞方式。

o_sync 使每次w r i t e都等到物理i / o操作完成。

這些控制字都是通過「或」符號分開(|)

當呼叫系統呼叫open時,作業系統會將檔案系統對應裝置檔案的inode中的file_operations安裝進使用者程序的task_struct中的file_struct,然後再呼叫具體檔案的file_operations中的open函式,其他的read、write等等也是如此,所以實際上open操作實際上是乙個連線過程,我個人認為稱其為open容易誤導。至於file_operations中的針對底層硬體的操作,簡單地說實際上就是對具體硬體介面的控制/狀態暫存器和資料暫存器的讀寫,如硬碟這種硬體有其自己的控制器,所以他自己內部會定期處理暫存器的命令和資料,完成相應的操作請求,請求完成後cpu發中斷(說的好!!)

原 Linux裝置網路硬體管理

遇到網路問題時候,一般情況下,我們第一反應是查詢軟體方面問題,但排查之後,軟體沒有問題的時候,我們就需要排查硬體方面工作是否正常。我們可能需要查詢網絡卡裝置本身的狀態,查詢網絡卡是否有資料報傳送接收 這裡我簡要寫一點相關命令,有需要的朋友可以檢視。1.ifconfig a 這裡的 up broadc...

Linux檢視硬體資訊及驅動裝置

檢視linux版本 uname r ika615 用硬體檢測程式kudzu探測新硬體 service kudzu start or restart 檢視cpu資訊 cat proc cpuinfo 檢視板卡資訊 cat proc pci 檢視pci資訊 lspci 相比cat proc pci更直觀...

Linux下操作硬體GPIO

4 關閉配置檔案 說明 使用者層操作gpio,用於簡單除錯 1 找到相關配置檔案 sys class gpio 若沒有此檔案則需要重新編譯核心並在編譯核心檔案時配置 device drivers gpio support sys class gpio sysfs inte ce example ec...