カーネルとユーザー空間の間で変数を共有したいのですが、procfsで可能であることがわかりました。指定された値が設定されている場合、カーネルモジュールは特定の方法で動作する必要があります。ユーザー空間プログラムはこの値を変更する責任がありますが、カーネル モジュールは必要に応じてそれを読み取る必要があります。
/proc
カーネルモジュールでファイルを作成する必要があることはわかっています。私の質問は、カーネルモジュールからファイルを読み取る方法ですか?
カーネルとユーザー空間の間で変数を共有したいのですが、procfsで可能であることがわかりました。指定された値が設定されている場合、カーネルモジュールは特定の方法で動作する必要があります。ユーザー空間プログラムはこの値を変更する責任がありますが、カーネル モジュールは必要に応じてそれを読み取る必要があります。
/proc
カーネルモジュールでファイルを作成する必要があることはわかっています。私の質問は、カーネルモジュールからファイルを読み取る方法ですか?
ソース: linux.die.net/lkmpg/x769.html
/**
* This function is called with the /proc file is written
*
*/
int procfile_write(struct file *file, const char *buffer, unsigned long count,
void *data)
{
/* get buffer size */
procfs_buffer_size = count;
if (procfs_buffer_size > PROCFS_MAX_SIZE ) {
procfs_buffer_size = PROCFS_MAX_SIZE;
}
/* write data to the buffer */
if ( copy_from_user(procfs_buffer, buffer, procfs_buffer_size) ) {
return -EFAULT;
}
return procfs_buffer_size;
}
明確にするために、ユーザーがprocfsであなたのファイルに書き込むたびにあなたのモジュールで、この例はそのような書き込みを処理する方法を示しています。