免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2440 | 回复: 9
打印 上一主题 下一主题

E4,你怎么在内核中直接写文件的? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-09-09 09:06 |只看该作者 |倒序浏览
" 现在我需要实现一个内核日志,试过直接在内核写二进制文件,但容易在半底panic"
怎么实现的呀?

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2003-09-09 17:24 |只看该作者

E4,你怎么在内核中直接写文件的?

很简单啊:

  1.         file->;f_op->;write(file, (char *)onelog,
  2.                                sizeof(struct log), &file->;f_pos);
复制代码


struct log是你的日志结构,也要做很多处理,比如读写锁等等

论坛徽章:
0
3 [报告]
发表于 2003-09-09 17:50 |只看该作者

E4,你怎么在内核中直接写文件的?

原帖由 "e4gle" 发表:

struct log是你的日志结构,也要做很多处理,比如读写锁等等
   
我靠,我想了好几天才想到了,没有想到你又比我提前做了,吸吸,你的file 结构是通过普通的进程传递到内核的么?     
顺便说一句,你的图象帅呆了哦

论坛徽章:
0
4 [报告]
发表于 2003-09-09 17:52 |只看该作者

E4,你怎么在内核中直接写文件的?

这样写感觉对性能会有所影响,特别是针对网络流量较大的主机,而且会不会造成DOS也不清楚,E4你对这块测试过吗?

论坛徽章:
0
5 [报告]
发表于 2003-09-10 16:44 |只看该作者

E4,你怎么在内核中直接写文件的?

这样是绕过了cache,直接到了设备驱动里了吧。

论坛徽章:
0
6 [报告]
发表于 2003-09-11 08:18 |只看该作者

E4,你怎么在内核中直接写文件的?

[quote]原帖由 "qjlemon"]这样是绕过了cache,直接到了设备驱动里了吧。[/quote 发表:
     
没有绕过,我觉得,因为sys_write里面就是这样的.可以开sys_write代码.   
172 asmlinkage ssize_t sys_write(unsigned int fd, const char * buf, size_t count)
173 {
174 ssize_t ret;
175 struct file * file;
176
177 ret = -EBADF;
178 file = fget(fd);
179 if (file) {
180 if (file->;f_mode & FMODE_WRITE) {
181 struct inode *inode = file->;f_dentry->;d_inode;
182 ret = locks_verify_area(FLOCK_VERIFY_WRITE, inode, file,
183 file->;f_pos, count);
184 if (!ret) {
185 ssize_t (*write)(struct file *, const char *, size_t, loff_t *);
186 ret = -EINVAL;
187 if (file->;f_op && (write = file->;f_op->;write) != NULL)
188 ret = write(file, buf, count, &file->;f_pos);
189 }
190 }
191 if (ret >; 0)
192 dnotify_parent(file->;f_dentry, DN_MODIFY);
193 fput(file);
194 }
195 return ret;
196 }
197
198



第187句不就是么?

论坛徽章:
0
7 [报告]
发表于 2003-09-11 08:30 |只看该作者

E4,你怎么在内核中直接写文件的?

那这样xie_minix说的DOS的问题应该就不存在了。

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
8 [报告]
发表于 2003-09-15 14:20 |只看该作者

E4,你怎么在内核中直接写文件的?

本来就不存在,我已经经过大量的压力测试了

file结构是通过内核线程传递的

论坛徽章:
0
9 [报告]
发表于 2003-09-22 13:03 |只看该作者

E4,你怎么在内核中直接写文件的?

这个是什么内核啊????linux???

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2003-09-23 13:32 |只看该作者

E4,你怎么在内核中直接写文件的?

是的,linux
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP