#ifndef __KERNEL__ #define __KERNEL__ #endif #ifndef MODULE #define MODULE #endif #include #include #include #include #include #include #include #include #include static inline int stackusage(void) { unsigned long v; __asm__("andl %%esp,%0; ":"=r" (v) : "0" (8191UL)); return 8192-v; } static int myfunc(void *dummy) { struct task_struct *curtask = current; daemonize(); strcpy(curtask->comm, "testing"); printk("myfunc(): current=%08X, pid=%d, stackusage=%d\n", (unsigned)current,current->pid,stackusage()); current->state=TASK_INTERRUPTIBLE; schedule_timeout(HZ*10); if (current->sigpending) { /* Warning here is a potential race */ MOD_DEC_USE_COUNT; return 0; } kernel_thread(myfunc, NULL, CLONE_FS | CLONE_FILES); return 0; } int init_module() { MOD_INC_USE_COUNT; kernel_thread(myfunc, NULL, CLONE_FS | CLONE_FILES); return 0; }