メモ帳
メモ帳
スポンサーサイト
--年--月--日 (--) --:-- | 編集
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
/procファイルを使う
2007年05月18日 (金) 10:52 | 編集
/procファイルって何?
 ソフトウェアが作成する特殊なファイルシステムらしい。
 カーネルが情報を外部にエクスポートするために使用するらしい。

デバイスドライバの情報を簡単に外部(ユーザ空間)に出せるって考えればいいのかな?
デバッグなんかでprintkでコンソールに情報を出すのもいいけど
タイミングがシビアなドライバだとprintkの処理による処理落ちで内部処理が
変わってきちゃうからそんなのとかの回避に使うといいみたい。

まずは関数から
エントリーを作成する関数がこれ。
struct proc_dir_entry *create_proc_read_entry(const char *name, mode_t mode,
struct proc_dir_entry *base, read_proc_t *read_proc, void *data)

長い。
引数1:nameは作成するファイル名。
引数2:modeはファイルの保護マスク。保護マスクって何?デフォルトモードは0らしい。
引数3:baseはファイルが作成されるディレクトリ。NULLだと/procになる。
引数4:read_procは/proc読み出すときに呼ばれる関数を指定。
引数5:dataは謎。カーネルは無視するけどread_procには渡されるとか。

で、引数4のread_procってのは
int (*read_proc) (char *page, char **start, off_t offset, int count, int *eof, void *data)
って関数を使うらしい。
引数1:pageはデータを書き込む先のバッファ
引数2:startは対照のデータがpageのどこをさしているかを示す
引数3:offsetはアクセスしている位置
引数4:countはread出来る最大文字数
引数5:eofはデータがすべて書かれたときに返す値
引数6:dataは内部処理に使うらしい


エントリーの逆も必要なわけで。
void remove_proc_entry(const char *name, struct proc_dir_entry *base)
引数1:nameは生成のときのnameと一緒
引数2:baseも生成のときのbaseと一緒

で、今回は読み取り関数だけを使用する場合だけど、書き込みも出来るらしい。
それの覚書はまた今度。

で、いつもどおり続きに動くかわからないサンプルコード。
いいかげんな関数の説明より、実装例を見たほうがたぶん簡単。
≫ "/procファイルを使う" の続きを読む...
スポンサーサイト
insmodの時に引数を渡したい
2007年05月12日 (土) 18:39 | 編集
モジュールパラメータというらしい。
これを使えば、処理の切り分けやら、メッセージのオンオフを
わざわざ再コンパイルしてロードしなおさなくても良くなる。
≫ "insmodの時に引数を渡したい" の続きを読む...
copyright © 2004 Powered By FC2 allrights reserved. / template: sukechan
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。