Re: daemon

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux