デバイスファイル
/dev/consoleとりあえずみてみた
- メジャー番号とマイナー番号が入っているただの箱
- catとかしてもなんか反応しなかった…
ls -lsa /dev/console
0 crw------- 1 hoge staff 0, 0 8 16 06:08 /dev/console
メジャー番号、マイナー番号どこで生成しているのだろうか
- insmodっぽい
- insmod ドライバファイル.o
- そしたらドライバファイルの中のinsmodに対する関数が実行
- その中でメジャー番号の確保,システムコールハンドラの登録、カーネルへの登録(対応表みたいなやつ)
- insmodあと下のようなコマンドでメジャー番号をみつけて
cat /proc/devices | grep hoge
- それを元にmknod メジャー番号 したような。
insmod
- カーネルに対して動的リンクする
- 動的リンク
- メモリ再配置してカーネルの対応表を埋めてセクションをまとめる(.textとかその他もろもろ)
- 動的リンク
open
その後にopen()したような
プロセスとドライバのinodeを結んでファイルを開くようにfopみたいなドライバのオペレーションをfile構造体に設定して、ドライバの各関数を使用できるようにする。