timer problem
Prashant Shah
pshah.mumbai at gmail.com
Wed Jul 6 12:52:04 EDT 2011
Hi,
I am test out a simple schedule_timeout() code. When I insert the
module kernel goes in a infinite loop printing this in the log :
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281659] Pid: 0, comm: swapper
Not tainted 2.6.35-22-generic #33-Ubuntu
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281663] Call Trace:
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281671] [<ffffffff8104d15a>]
dequeue_task_idle+0x3a/0x50
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281679] [<ffffffff81052d6a>]
dequeue_task+0x9a/0xb0
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281687] [<ffffffff81052dae>]
deactivate_task+0x2e/0x40
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281693] [<ffffffff81586ba9>]
schedule+0x4a9/0x830
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281702] [<ffffffff81008ddb>]
cpu_idle+0xeb/0x110
Jul 6 22:04:35 ubuntupc kernel: [ 5738.281710] [<ffffffff815832ad>]
start_secondary+0x100/0x102
Any ideas on what is going on ?
---------------------------------- <testmod.c>
----------------------------------
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/timer.h>
#include <linux/delay.h>
#include <linux/sched.h>
struct timer_list tim;
void timfunc(unsigned long data)
{
printk("hi this is a timer %lu\n", data);
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(10 * HZ);
printk("hi again this is a timer after timeout %lu\n", data);
}
static int __init init_testmod(void)
{
init_timer(&tim);
tim.expires = jiffies + HZ*5;
tim.data = 1000;
tim.function = timfunc;
add_timer(&tim);
return 0;
}
static void __exit exit_testmod(void)
{
printk("end of module\n");
return;
}
module_init(init_testmod);
module_exit(exit_testmod);
MODULE_LICENSE("GPL");
------------------------------ </testmod.c> ----------------------------------
---------------------------------- <Makefile> ----------------------------------
obj-m += testmod.o
KERNELDIR ?= /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KERNELDIR) M=$(PWD)
clean:
rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions
depend .depend dep:
$(CC) $(CFLAGS) -M *.c > .depend
ifeq (.depend,$(wildcard .depend))
include .depend
endif
---------------------------------- </Makefile>
----------------------------------
More information about the Kernelnewbies
mailing list