kernel system call open - Linux

Isla avatar
By Isla
at 2016-06-10T10:30

Table of Contents

最近想追一下 kernel ,就從網路上常見的 chrdev driver 開始看起

知道在

init_xxx(){

register_chrdev(major, name, &fops)

}



module_init(init_xxx)


註冊 driver 。到 register_chrdev 去看,裡面的內容大致說---註冊 struct cdev

到系統,以及對 cdev 的成員賦值。例如: kobject 或者 file operation 等等..


另外在 write 奧秘這篇網誌我看到,他open file 後會得到 file descriptor,

再透過 file descriptor 得到 file 結構,再透過 file 結構內的 ops 得到

driver method。


綜合上面兩個,我還是不知道他是如何透過 open 將 file 結構和 driver 內的

file_operations 結構關聯在一起,能有大大指點嗎? 謝謝。

--
Tags: Linux

All Comments

Frederic avatar
By Frederic
at 2016-06-10T20:18
ok,從 sys_open開始 trace,有說到了最後是透過
Isla avatar
By Isla
at 2016-06-12T12:29
inode 去找到驅動程式的 method,並回傳 fd

電視盒接pi

Doris avatar
By Doris
at 2016-06-10T00:02
最近突發奇想,想要自己出門在外也能看第四台的電視, 想法是透過家裡XX大寬頻之類的數位電視機上盒, 輸出端連結到樹梅派3的HDMI孔,作為影像輸入 輸出則是Pi接收到電視訊號後, 使用GStreamer RTSP Server做為網路串流輸出。 不過因為google好久都找不到類似的文章, 因此一切皆是我自行 ...

請問在 Ubuntu 16.04 上面該怎麼跑 wine-staging 呢?

Caitlin avatar
By Caitlin
at 2016-06-07T17:29
已經加了 PPA 並且安裝完畢,卻看不到指令 請問這該要怎麼使用呢? 已加入 ppa:wine/wine-builds 並安裝 wine-staging - ...

怎麼寫正式的Linux命令工具

Yedda avatar
By Yedda
at 2016-06-06T19:35
現在有一支java (當server) 還有幾個script (彼此叫來叫去 也會產生java 和起動java) 之後還會有c程式負責別的功能 我想把這些東西整合成很完整的像某個bash常用的命令 也要寫man (不然後面的人不會操作這個工具) 還要考慮很多command option防呆的問題 請問對於寫 ...

如何等到檔案出現後才執行另外的程式

Connor avatar
By Connor
at 2016-06-06T16:40
各位板上先進好 目前手邊有個shell script不知如何寫,想請教各位 問題:目前我執行第一個程式,它會產生A file及B file(兩個file產生的時間不同), 我需要等待兩個file都產生之後才能執行第二個程式,想請教該如何寫 不曉得是否要用到每隔一段時間就檢查一遍兩個file是否產生 謝謝 ...

NVidia driver不支援kernel 4.6

Jacob avatar
By Jacob
at 2016-06-05T20:28
前幾天我把筆電上的Ubuntu 16.04 的kernel更新到4.6 之後安裝最新的Nvidia官方driver 想不到driver不支援kernel 4.6 因為4.6才剛出 網路上相關討論還很少 請問各位版友有建議的解決方法嗎? 用open source的driver? - ...