作者janyfor (你哪位ㄚ)
看板LinuxDev
标题[问题] Kernel space 档案存取
时间Wed Nov 9 00:56:47 2011
最近希望在 kernel space 对档案进行读写
但是遇到了一些问题
1. 我只能在当下目录写档案(config), 如果设定如 "/system/config",
那麽在开机时就会卡在某个地方, 连 log 都看不到,
请问有哪个地方没注意到的吗?
2. 目前可以正常读写, 但是只要重新开机之後,
档案会重建, 请问可以在关机之後还存在吗?
char result[Buff_Lenght];
f = filp_open("config", O_CREAT | O_RDONLY | O_TRUNC, 0600);
f->f_op->read(f, result, Buff_Size, &f->f_pos);
开机会利用上述方式先去读一次(仅列重要步骤), 并检查 result 字串长度,
如果是零(表示档案新建)就会利用下列方式将预设值写入档案
mm_segment_t oldfs;
struct file *f = NULL;
oldfs = get_fs();
set_fs(KERNEL_DS);
f = filp_open("config", O_CREAT | O_WRONLY | O_TRUNC, 0600);
char result[Buff_Lenght];
memset(result, 0, Buff_Size);
sprintf(result, "%d", threshold);
f->f_op->write(f, result, strlen(result) * sizeof(char), &f->f_pos);
set_fs(oldfs);
filp_close(f, NULL);
set_fs(oldfs);
按照想法, 下次开机应该不会写入预设值, 但 log 依旧出现预设值.
(没关机前, 中间数次的 read/write 都是正确的)
希望大家可以指教
Android 2.3.5
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.71.244.147
1F:推 eleghost:我也有再kernelspace写档, 没问题... 11/18 12:42
2F:→ eleghost:我是透过sysfs写到/data下的目录, 没有你说的当掉问题 11/18 12:42