On Fri, Jul 12, 2002 at 10:31:14AM +0200, Peter Hanappe wrote:
> [EMAIL PROTECTED] wrote:
> > On Fri, Jul 12, 2002 at 01:40:42AM +0200, Peter Hanappe wrote:
> > 
> >>[EMAIL PROTECTED] wrote:
> >>
> >>
> >>>For example, in RTLinux, fifos shared
> >>>between Linux (non-rt) processes and RT threads are asymmetric: the
> >>>RT thread never blocks, the non-RT thread blocks. In many cases
> >>>it is best to optimize the data operations and perform them under
> >>>a spin_lock with interrupts disabled. In RTLinux pthread_spin_lock
> >>>disables irqs and, in SMP also sets the lock
> >>>   pthread_spin_lock(&myq.spin);
> >>>   myq.tail->next = new;
> >>>   new->next = 0;
> >>>   myq.tail= next;
> >>>   if(!myq.head)myq.head = new;
> >>>   pthread_spin_unlock(&myq.spin);
> >>>
> >>How do you tell a blocking non-RT thread that new data is available?
> >>
> > 
> > It's done automatically by a write: a write does sends a soft interrupt to 
> > Linux and the interrupt handler does a standard wakeup on flagged fifos.
> 
> This wakeup doesn't involve a call to the scheduler?
> 

It does - but to the Linux scheduler.

> 
> 
> 
> 

-- 
---------------------------------------------------------
Victor Yodaiken 
Finite State Machine Labs: The RTLinux Company.
 www.fsmlabs.com  www.rtlinux.com

Reply via email to