kernel thread 사용하기.
글쓴이: mach337 / 작성시간: 목, 2005/11/03 - 4:08오후
2초에 한번씩 일정한 작업을 커널 에서 하려합니다.
아래와 같은 코드를 테스트 해보니 의도했던 대로 안나오는데
어디가 잘못된거죠...?
gcc -D__KERNEL__ -I/usr/src/linux-2.4/include -DMODULE -Wall -O2 -c kwdtd.c -o kwdtd.o
#include <linux/module.h> #if defined(CONFIG_MODVERSIONS) #define MODVERSIONS #include <linux/modversions.h> #endif #include <linux/kernel.h> #include <linux/sched.h> int kwdtd(void *unused) { daemonize(); for (;;) { printk(KERN_DEBUG "What's going on, kernel!\n"); schedule_timeout(2); } } int init_module(void) { kernel_thread(kwdtd, NULL, 0); printk(KERN_DEBUG "Hello, kernel!\n"); return 0; } void cleanup_module(void) { printk(KERN_DEBUG "Good-bye, kernel!\n"); }
--------------8<--------------8<--------------8<--------------8<--------------
위 모듈을 insmod 한 결과 입니다.
PID USER PRI NI SIZE RSS SHARE STAT %CPU %MEM TIME CPU COMMAND 122 root 25 0 0 0 0 RW 50.5 0.0 0:08 0 insmod 103 root 25 0 632 632 452 R 25.9 1.0 0:05 0 klogd 106 root 15 0 764 764 648 S 22.8 1.2 0:04 0 syslogd 118 root 16 0 1076 1076 892 R 0.5 1.7 0:00 0 top root@mach337:~# tail -f /var/log/syslog Oct 1 10:57:36 mach337 kernel: What's going on? kernel! Oct 1 10:57:36 mach337 last message repeated 291 times Oct 1 10:57:36 mach337 kernel: What's el! Oct 1 10:57:36 mach337 kernel: What's going on? kernel! Oct 1 10:57:37 mach337 last message repeated 584 times Oct 1 10:57:37 mach337 kernel: el! Oct 1 10:57:37 mach337 kernel: What's going on? kernel!
Forums:
[quote] schedule_timeout(2 [b]* HZ[/b]);
[quote="kslee80"][quote] schedule_timeou
결과가 변함이 없이 같습니다. jiffie 단위이기 때문에 HZ 를 사용하는 것이 옳은것 같은데 다른곳에 문제가 있나 봅니다. :(
답변 감사합니다. :)
set_current_state(TASK_INTERRUPTIBLE);
set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(2*HZ);
하면 잘 동작하는군요.
오래된 질문이지만 누군가 도움이 되겠죠... ^^;
정말 누군가에는 도움이 되네요...
감사합니다...
댓글 달기