這是我從內核寫入文件的代碼(我知道從內核直接讀寫並不是一個好主意,但這只是一個測試)。vfs_write引起內核恐慌
static void write_startup_file(char *startstring)
{
mm_segment_t oldfs;
struct file *f;
loff_t pos=0;
f = filp_open("/bin/startupcheck",O_WRONLY|O_CREAT, 0644);
oldfs = get_fs();
set_fs (KERNEL_DS);
if(f)
{
vfs_write(f,startstring, strlen(startstring), &pos);
set_fs(oldfs);
filp_close(f, NULL);
}
else
printk(KERN_CRIT "Unable to open startfile...\n");
}
我這樣稱呼它在另一個功能ourVeryOwnFunction()
作爲
if(dbval==NULL) { write_startup_file("FAILED");}
凡dbval
是一個值爲read.But當我編譯內核並運行它(IM運行它在VMware)。我得到的內核恐慌是here
顯然我做錯了什麼。尋找一些幫助。謝謝。
如果filp_open失敗,會發生'old_fs'怎麼辦? – MirkoBanchi