当前位置:  技术问答>linux和unix

有关slab的简单应用,导致系统崩溃,请高手指点

    来源: 互联网  发布时间:2015-10-22

    本文导语:  #include #include #include #include static kmem_cache_t * my_kmem_cache; struct great{  char name[40];  char sex[6];  int age;  int class; }; struct great * my_great_create(void) {         struct great * one;         one=kmem_cache_alloc(my_kmem_cac...

#include
#include
#include
#include

static kmem_cache_t * my_kmem_cache;
struct great{
 char name[40];
 char sex[6];
 int age;
 int class;
};

struct great * my_great_create(void)
{
        struct great * one;
        one=kmem_cache_alloc(my_kmem_cache,GFP_KERNEL);
        if(!one)
                return NULL;
        else{
                sprintf(one->name,"hacker007");
                sprintf(one->sex,"femal");
                one->age=26;
                one->class=703;
        }
        return one;
}

void my_great_read(struct great * one )
{
        printk("neme=%sn",one->name);
        printk("sex=%sn",one->sex);
        printk("age=%dn",one->age);
        printk("class=%dn",one->class);
        kmem_cache_free(my_kmem_cache,one);
}


static int __init slab_init(void)
{
        my_kmem_cache=kmem_cache_create("great",sizeof(struct great),0,SLAB_MUST_HWCACHE_ALIGN,NULL,NULL);
        if(!my_kmem_cache)
                panic("kmem_cache_create errorn");
        return 0;
}

static void __exit slab_exit(void)
{
        if(!kmem_cache_destroy(my_kmem_cache))
        panic("kmem_cache_destroy errorn");
}

EXPORT_SYMBOL(my_great_create);
EXPORT_SYMBOL(my_great_read);
module_init(slab_init);
module_exit(slab_exit);
在2.6内核中编译,加载,然后编写如下程序test.c:
#include
#include
#include
#include

static int my_return()
{
        return 0;
}

static int __init my_init(void)
{
        struct great * one = my_great_create();
        if(one==NULL){
                printk("the pointer is NULLn");
                BUG_TRAP(!my_return());
        }else
                my_great_read(one);
        return 0;
}

static void __exit my_exit(void)
{
        printk("This is inside the exit functionn");
}

module_init(my_init);
module_exit(my_exit);
并编译加载,看到了相关的输出信息,但是我在rmmod test (也就是第二个文件)之后,rmmod第一个文件出错了。导致系统崩溃。我知道应该是在退出函数里面的 panic("kmem_cache_destroy errorn");引起。具体输出报错信息为: Kernel panic - not syncing: kmem_cache_destroy err
or
然后就崩溃了。不知道为什么会导致这一步?请高手指点,谢谢。

|
谁说的不能用sprintf

|
就是,完全可以调用sprintf

    
 
 

您可能感兴趣的文章:

  • 有关java applet的绘图问题,请高手指点!!!!
  • 有关linux这方面的应用和发展方向有哪位高手可以指点我一下!!!
  • 有关Ubuntu的问题,请大牛指点(内详)
  • 有关静态库*.a的调用问题,请高手指点,急急急!
  • 一个有关jdbc的RMI的问题,JAVA高手指点一下
  • 有关静态库*.a的调用问题,请高手指点,急急急! iis7站长之家
  • 有关TOMCAT中类库的存放路径,问题很菜,请不吝指点?在线等待。
  • 有关邮件的自动回复问题希望大家指点
  • 有关new File(URI uri)的问题,请各位指点一二!
  • 请高手指点有关rmi的问题。。。 - 多谢!!!!
  • 有关MVC的问题,请高手指点
  • 马上要研二了准备要开题,想做我linux有关的东西,请大家指点一下
  • 真心需要各位前辈指点,谢谢 有关LINUX USB驱动程序编写的一个问题
  • 有关Applet的概念问题,请指点一下吧,我就这么多的分了,在线等待结帐
  • 有关GTK+编译的一个简单问题,请大侠指点一下,谢谢
  • 有关操作系统的几个问题?感谢大家的指点?
  • 有关jdbc-odbc的问题,有源码,那位高人能指点一二,高分相送
  • 有关部署守护进程的问题,请大家指点。
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • ​有关Docker的八个令人难以置信的事实
  • 有关内码转换(跟HttpServletRequest有关)
  • 求有关png图像处理的libpng库的有关中文资料
  • 大家推荐一下有关LINUX7有关的网络编程的书。最好是比较全面的!比较经典的。
  • 求教有关smartupload的问题,有关就给分!!
  • 有关KDevelop-3.0.4-0.1.i386.rpm的有关软件包
  • 有关在sco unix5.0.4下有关网卡设置的问题(非常急,高分相送)
  • 有关snmp的一个很菜,但是困扰了我很久的问题,有关工作原理的,望大家赐教
  • 有关KDevelop编程的资料
  • 有关集群与数据同步
  • 请教有关英文简历方面的词句!
  • 有关报表打印(在JAVA,WEB下应用)急用!
  • 请各位大哥告知JAVA中消息机制的有关资料,拜托!
  • 有关cocoon的问题??
  • 有关jbuilder
  • 我想看看有关Linux和Unix的源码,有什么好的建议
  • 有关J2ME的帮助文档!
  • 100分求助 能不能提供一些有关图像分割的算法和实现代码!谢谢
  • 在哪里可以弄到有关tomcat配置方面的资料?
  • Helper! 有关Jbuilder使用问题???
  • 有关swing的问题,请高手回答


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3