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

新手问一下关于内核定时器的问题, 加载就死机

    来源: 互联网  发布时间:2017-05-08

    本文导语:  本帖最后由 danistmein 于 2013-12-06 11:29:25 编辑 下面是代码. 就是想做一个定时器实验... #include  /**/  #include  /*printk()*/  #include  /*file_operations*/  #include  /*cdev_init() cdev_add()*/  #include  /*size_t*/  #include  /*dev_t*/  #include ...

本帖最后由 danistmein 于 2013-12-06 11:29:25 编辑
新手问一下关于内核定时器的问题, 加载就死机[图片]

下面是代码. 就是想做一个定时器实验...

#include  /**/ 
#include  /*printk()*/ 
#include  /*file_operations*/ 
#include  /*cdev_init() cdev_add()*/ 
#include  /*size_t*/ 
#include  /*dev_t*/ 
#include  /*timer_list and timer API*/ 
#include  /*kmalloc() kfree()*/ 

#define     DEV_NUM 1
#define     NAME "timer"

struct timer_list *timer;
int tmajor;
int tminor;
struct cdev *dev;
int tdelay = 1000;
int count;



void timer_fn(unsigned long data)
{
count++;
printk(KERN_INFO "timer start is already %d secn", count);
timer->expires += tdelay;
add_timer(timer);
}


static int topen(struct inode *node, struct file *pfile)
{
return 0;
}

static int trelease(struct inode *node, struct file *pfile)
{
return 0;
}

static ssize_t twrite(struct file *pfile, const char __user *buff, size_t count, loff_t *f_pos)
{
return 0;
}

static ssize_t tread(struct file *pfile, char __user *buff, size_t count, loff_t *f_pos)
{
return 0;
}

static struct file_operations tops = 
{
.owner = THIS_MODULE,
.open = topen,
.write = twrite,
.read = tread,
.release= trelease,
};


void timer_setup(void)
{
cdev_init(dev, &tops);
dev->owner = THIS_MODULE;
dev->ops = &tops;
cdev_add(dev, MKDEV(tmajor, tminor), DEV_NUM);
}




static int __init timer_init(void)
{
int result;
dev_t devno;
dev = kmalloc(sizeof(struct cdev), GFP_KERNEL);

result = alloc_chrdev_region(&devno, tminor, DEV_NUM, NAME);
tmajor = MAJOR(devno);
if (result expires = jiffies + tdelay;
timer->data = 0;
timer->function = timer_fn;
add_timer(timer);

return 0;
}


static void __exit timer_exit(void)
{
printk(KERN_WARNING "goodbye timer");

cdev_del(dev); /*注销设备*/ 
unregister_chrdev_region(MKDEV(tmajor, tminor), DEV_NUM); /*删除设备*/ 
kfree(dev);

del_timer(timer);
kfree(timer);
}

MODULE_AUTHOR("Sinn x.F");
MODULE_LICENSE("GPL");

module_init(timer_init);
module_exit(timer_exit);

但是加载了就会导致oops... 而且oops说的/build/buildd/linux-3.2.0/kernel/timer.c 根本就没有这个路径啊.. 
顺便问一下.. 当产生oops的时候 能把这个oops保存下来吗...每次得拿手机拍下来..

|
保存下来一般用kdump就好了,配置下

问题好像出在alloc_chrdev_region

    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 做一位新手,求一个内核讨论群,都是喜欢内核的,谢谢了,
  • 新手的菜鸟问题:不同内核版本下编译的程序能否互相调用,是否需要在同一内核下重新编译.
  • (新手)内核究竟是什么?
  • 我是新手请问什末是内核
  • 新手求救,关于内核makefile,请帮忙!
  • 开始接触学习内核,新手提问!!很简单的,来得分吧
  • 求教——编译内核(新手大派送)
  • 新手提问:新内核的telnet问题
  • 新手,请教:有谁知道linux内核0.01版源代码中的几个目录都是做什么的。
  • 新手请教个内核编译的问题
  • 新手请教编译内核问题!
  • 新手提问:请问怎么更新linux的内核?
  • 求助:新手想要学习linux内核,请问,该看些什么书?(中英文都可以)
  • 新手问题,如何应用内核中的i2c设备驱动
  • 新手请教 移植2.6内核到arm9,芯片:arm926ejs,Flash: NOR
  • 内核编程问题,新手上路,多指点!
  • 新手请教啦~~能不能帮忙推荐几本书 iis7站长之家
  • 关于一个简单内核模块的编译,新手请教
  • 新手学习Linux内核的三个个问题
  • 怎么升级内核??别笑我,我是新手!
  • 新手如何加入开源项目 有什么好的c++,java 开源适合新手 请指点!
  • JDBC的问题,新手高手都来看看吧,说不定能帮帮我这个新手呢,谢谢!
  • 想找共同学习Linux的新手,一起学习,共同成长
  • 新手关于驱动开发的疑问
  • 新手有关linux的问题!
  • 新手急求~~~~~~~~~~~~~~~~~~~
  • 新手学习该用哪个版本
  • 面向新手的终端辅助工具 Clicompanion
  • 我是个新手,请各位老兄给介绍基本好书?
  • 新手请教啦~~能不能帮忙推荐几本书
  • 我是新手


  • 站内导航:


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

    ©2012-2021,