これは私の最初のカーネルで、以下のサンプル プログラムでは、単純な proc/filesystem を作成しました。カーネルを cat するたびに READ が 3 回呼び出されます。なぜこれをしているのか不思議です。
アウトとコードは以下のとおりです。
cat /proc/myKernel
dmesg | grep -i myKernel
myKernel: Read (/proc/myKernel) called
myKernel: Read (/proc/myKernel) called
myKernel: Read (/proc/myKernel) called
int myKernel_read( char *buffer, char **bufferLocation, off_t offset, int bufferLength, int *eof, void *data )
{
int ret = 0;
u64 msrvalue;
printk(KERN_INFO "myKernel: Read (/proc/%s) called\n", procFile_name);
ret = sprintf(buffer, "Hello World\n");
return ret;
}
static int __init myKernel_init(void)
{
entry = create_proc_entry(procFile_name, 0644, NULL);
if(!entry)
printk(KERN_INFO "myKernel: error registering proc control file\n");
else
{
entry->read_proc = myKernel_read;
}
return 0;
}