On 4/5/07, Erik Mouw <mouw@xxxxxxxxxxxx> wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Thu, Apr 05, 2007 at 09:05:43AM +0100, Hemanth Kumar wrote: > I need some help in writing daemon , I googled it but > unable to find any good links , can some body please > give me good links on writing daemons . How is this kernel related?
I see daemons in the kernel too! Cifs/jffs /usb-storage/sas-queue many others Various places people are doing Kernel_therad() And then in the thread routine Daemonize() May be unblock some signals allow_signal(SIGKILL); allow_signal(SIGSTOP); allow_signal(SIGCONT); & loop/do ur work.. until you are interrupted Here daemonize works similar to what is said for userspace It creates a thread with no userspace resources attached Blocks signals Does reparent_to_init() Some example code below. You can see it in ps listing And then Kill it --- int daemon_routine(void * data) { printk(KERN_INFO "Inside daemon_routine() \n"); daemonize("kern_daemon"); allow_signal(SIGKILL); allow_signal(SIGTERM); do{ printk(KERN_INFO "kerne_daemon alive\n"); set_current_state(TASK_INTERRUPTIBLE); schedule_timeout(10*HZ); }while(!signal_pending(current)); return 0; } int kerndaemon_init(void) { int ret_val=0; printk(KERN_INFO"kernel daemon starting a kernel thread\n"); ret_val = kernel_thread(daemon_routine,NULL,0); if(ret_val < 0 ){ printk(KERN_ALERT "Daemon thread creation failed\n"); return -1; } printk(KERN_INFO"kernel daemon \n"); return 0; } -- Milind Arun Choudhary -- To unsubscribe from this list: send an email with "unsubscribe kernelnewbies" to ecartis@xxxxxxxxxxxx Please read the FAQ at http://kernelnewbies.org/FAQ