Re: sleep process, wait queues

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

 



On Sun, Jul 03, 2005 at 11:58:54AM +0100, Deepak Joshi wrote:
> 
> --- Deepak Joshi <deepak_cins@xxxxxxxxxxx> wrote:
> 
> > #include <linux/module.h>
> > #include <linux/kernel.h>
> > #include <linux/wait.h>
> > #include <linux/sched.h>
> > #include <linux/list.h>
> > MODULE_LICENSE("GPL");
> >                                                     
> >  
> >                                           
> > static DECLARE_WAIT_QUEUE_HEAD (my_queue);
> > int init_module(void)
> > {
> >         struct task_struct *my_task ;
> >         my_task = find_task_by_pid(1477);
> >         DECLARE_WAITQUEUE(wait, my_task);
> >         my_task->state = TASK_UNINTERRUPTIBLE ;
> >         init_waitqueue_entry( &wait, my_task);
> >         add_wait_queue( &my_queue , &wait);
> >         sleep_on(&my_queue);
> >         interruptible_sleep_on(&my_queue);
> >         schedule( );

the last 3 calls all operate on the current process, not my_task (read
the sources). Also, you are sleeping twice here and only waking up once
below.

> >         return 0;
> > }
> > 
> > 
> > void cleanuo_module()
> > {
> >         printk("Bye");
> >         wake_up( &my_queue );
> > }


AFAICT what you are trying to do is not really possible using
waitqueues, try to look at kernel/signal.c and SIGSTOP and SIGCONT
instead.

bye
-- 
mattia
:wq!

--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           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