免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: mq110

写了一个内核模块 实现简单的类似ps命令. [复制链接]

论坛徽章:
0
发表于 2005-11-22 19:14 |显示全部楼层
我来提点建议:

static int ps_read(char *page, char **start, off_t offset,int count, int *eof, void *data)  
{
    static char buf[1024*8]={0}; // 核心栈不大, 省着点用. 用kmalloc()好一些.
}

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2005-11-22 19:16 |显示全部楼层
原帖由 richardhesidu 于 2005-11-22 19:14 发表
我来提点建议:



接受..
我写的时候也在想这个问题 到底要分配多少空间才合适..

论坛徽章:
0
发表于 2005-11-23 09:14 |显示全部楼层
原帖由 mq110 于 2005-11-22 19:16 发表


接受..
我写的时候也在想这个问题 到底要分配多少空间才合适..


没仔细看代码,proc以前没写过..内核栈一般是8k,还有很多人愿意配成4k,要省着用呀

论坛徽章:
0
发表于 2005-11-23 09:43 |显示全部楼层
现在这么发达@!浪费点也没关西啦!哈哈!

论坛徽章:
0
发表于 2005-11-23 09:53 |显示全部楼层
原帖由 1jjk 于 2005-11-23 09:43 发表
现在这么发达@!浪费点也没关西啦!哈哈!


开玩笑了吧? 内核中如果存在一定点内存泄漏,kmalloc的不释放,极短的时间就会耗尽内存;
何况栈? 你去看哪些TCP/IP协议栈的中断处理,全都是kmalloc/get_free_pages,没有谁敢随便用栈空间。

论坛徽章:
0
发表于 2005-11-23 10:11 |显示全部楼层

就是玩笑呵呵!

论坛徽章:
0
发表于 2005-11-23 10:11 |显示全部楼层
看大家都这么紧张,缓解一下气愤

论坛徽章:
0
发表于 2005-11-23 10:21 |显示全部楼层
下面几句代码似乎不地道!

static int ps_read(char *page, char **start, off_t offset,int count, int *eof, void *data)  
{
    static char buf[1024*8]={0};
~~~~~~~~~~~~~~~~~~~~~`~~~~~~
    char tmp[128];
    struct task_struct *p;
    rwlock_t tasklist=RW_LOCK_UNLOCKED;

    if(offset >0)
        return 0;
    memset(buf,0,sizeof(buf));
~~~~~~~~~~~~~~~~~~~~~~~~~~.bss数据段自动初始化为0, 没必要memset()的!

    read_lock(&tasklist);

论坛徽章:
0
发表于 2005-11-23 13:14 |显示全部楼层
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/proc_fs.h>
#include <linux/init.h>
#include <linux/sched.h>

MODULE_LICENSE("GPL");
MODULE_AUTHOR("mq110");

static int ps_read(char *page, char **start, off_t offset,int count, int *eof, void *data)  
{
    static char buf[1024*8]={0};//高手能解释一下这个地方初始化的用法不?不太明白?每个字符数组都被初始化0了?
谢谢!

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
发表于 2005-11-23 13:27 |显示全部楼层
>>memset(buf,0,sizeof(buf));
~~~~~~~~~~~~~~~~~~~~~~~~~~.bss数据段自动初始化为0, 没必要memset()的

这是静态空间啊..如果多执行几次的话.(不清0)肯定会超出buf的范围的会.溢出的。....
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

SACC2021中国系统架构师大会

【数字转型 架构重塑】
2022年1月13-15日,由IT168旗下ITPUB企业社区平台主办的第十四届中国系统架构师大会(SACC2021)将在云端进行网络直播。
为期3天的议程,涉及20+专场,近120个主题,完整迁移到线上进行网络直播对会议组织来说绝非易事;但考虑到云端会议的直播形式可以实现全国各地技术爱好者的参与,也使ITPUB作为技术共享交流平台得到更好的普及,我们决定迎难而上。

大会官网
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP