file_operations登録方法をみる
エントリポイント登録例 - fs.hの例
エントリポイント登録の様子が fs.hにあったので書いておく。
この方法は、定石のようす。
static struct file_operations __fops = { \ .owner = THIS_MODULE, \ .open = __fops ## _open, \ .release = simple_attr_close, \ .read = simple_attr_read, \ .write = simple_attr_write, \ };
ぽちぽちと関数ポインタを登録していってます。
どういう動きになるはずか、事前確認
実際にどういう動きになるか
アプリケーションレベルで確認しておきます。
いちおう。
とりあえず、ぷちテストプログラムを書いてみて、かくにん。
ops_init_test.c
$ cat ops_init_test.c #include <stdio.h> struct ops_t{ void (*op1)(void); void (*op2)(void); }; static void foo(void) { printf("foo\n"); } static void bar(void) { printf("bar\n"); } int main(int argc, char **argv) { struct ops_t ops = { .op1 = foo, .op2 = bar, }; ops.op1(); ops.op2(); return 0; }
コンバイル、実行。
$ gcc ops_init_test.c $ ./a.out foo bar