#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/fs.h>
static int __init hello_start(void)
{
struct file* my_fd;
my_fd = filp_open ("/tmp/foobar", O_WRONLY | O_APPEND, 0);
if (IS_ERR (my_fd))
{
printk (KERN_ERR "Failed to open file. err: %d.\n", my_fd);
}
else
{
my_fd->f_op->write (my_fd, "some data", 10, &my_fd->f_pos);
}
printk(KERN_INFO "Loading hello module...\n");
return 0;
}
static void __exit hello_end(void)
{
printk(KERN_INFO "hello_end.\n");
}
module_init(hello_start);
module_exit(hello_end);
上記のコードは、ファイルに書き込み中にエラー-14を与えています。私はここで何が間違っていますか?ここでLinuxカーネルドライバからのファイル書き込みが失敗しました。
dmesg
出力されます。
[19551.674999] Write returned: -14.
[19551.675004] Loading hello module...
おそらく、エラーコード-14が何を意味しているかを調べることから始めようとします。 –
@JSBangs、14はEFAULTですが、これは私がなぜそれが来るのか分からないことです。 –