RE: sharing data

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

 



yes ,
you are right  spin_irqsave is OK here,in any case.
as it disables the interrupt.
i apologize as i  given answer  without even seeing
that. 

And yes one question are your receiver and transmitter
kernel thread are on same machine as you are waking up
the receiver from transmitter thread,

But ofcource this must be not the case otherwise why
are you using sockets,
then if your receiver thread is sleeping at some
remote machine ,how will it receive the massage.
On same machine this is dome by the scheduler.
Please let me know this!

thanks
Prasanna
--- Nilanjan Roychowdhury
<nilanjan@genesis-microchip.com> wrote:
> 
> 
> -----Original Message-----
> From: prasanna wakhare
> [mailto:prasannawakhare@yahoo.com] 
> Sent: Friday, June 04, 2004 3:31 PM
> To: Nilanjan Roychowdhury
> Cc: kernelnewbies@nl.linux.org
> Subject: Re: sharing data
> 
> 
> hi,
> 
> > 1. I share a data between a kernel thread and an
> > ISR. ( this is a uniprocessor system). In kernel
> > thread I do spin_lock_irqsave
> >  and then unlocking. Where as accessing the data
> > from the ISR I do not use any spin lock coz I know
> > when the ISR is running the kernel thread does not
> > get a chance to run. Am I right ???
> but when your kernel thread is accessing data and
> interrupt handler comes preepmts the thread and
> access
> the shared  data then this is not at all safe,
> 
> >>>>>>>> how can interrupt handler prempts it when I
> use spin lock irq save. >>>>>>>>It disables the
> interrupts in a uniprocessor system.
> 
> rather atomic access of  data structure in most
> cases
> should need becuse of  keeping them  atomic  between
> ISR and other parts accessing the shared  data 
> 
> > 2. I want to implement a message quque send and
> recv
> > routine between two kernel threads. ( here I can
> not
> > use the standard message quques)
> > What I do is in recv call I check if there is any
> > message in the queue. If no then I sleep on a wait
> > queue.
> Yes this is right way i think becuase thread
> executes
> in kernel space if you do not wait then this will
> halt
> your system,look i think until unless you do not
> yeild ,your thread will never preempt(plz correct if
> any mistake)so better to sleep on waitqueues
> > While sending a message I always add the message
> to
> > the queue and and use wake up call on wait queue.
> > Is my implementation leak proff.....or there are
> > some flaws???
> >  
> Is your sender and receiver thread  is any way
> connected to ISR?and whom you are going to wake up,
> if data availaible to send is ready?I'm not clear
> about above?plz let me know more.
> Yes ,and to protect shared data between handler and
> threads,ofcourse you wont used semaphore and spin
> locks,rather use atomic_t data structure,although
> they
> are busy wait,but why to used you can get more
> information on linux device driver book.
> 
> >>>> in sendmsg call I will wakeup the receiver
> thread.
> thanks
> Prasanna
> 
> 
> 
> 	
> 		
> __________________________________
> Do you Yahoo!?
> Friends.  Fun.  Try the all-new Yahoo! Messenger.
> http://messenger.yahoo.com/ 
> 
> --
> Kernelnewbies: Help each other learn about the Linux
> kernel.
> Archive:      
> http://mail.nl.linux.org/kernelnewbies/
> FAQ:           http://kernelnewbies.org/faq/
> 



	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 

--
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