splnet() and friends

Thomas Doerfler Thomas.Doerfler at imd-systems.de
Mon May 6 08:57:25 UTC 2002


> Buenas dias.
> I found that spl*() routines does nothing in RTEMS (splx, splnet, splimp 
> especially) but they seem to perform synchronization tasks in original 
> BSD code. Thus if we have two receiving interface which incapsulation is 
> IP, the ipintr() will add packets to IP input queue without 
> locking/unlocking it and under high loads it MAY cause to lost mbufs or 
> even crash. I didn't observed this condition either but it seems 
> possible for me. When I looked for splnet the situation is become worse 
> for me :-/. Can you give some comments on it?
> PS:
> Using rtems_bsdnet_semaphore for locking everything in networking code 
> is not good idea - it will reduce maximum bandwith.

But nevertheless using a global semaphore for locking the 
whole network stack is the method used in the RTEMS port of 
the network stack. See the Documentation "Networking 
Supplement" (or so). I guess adapting the splxxx scheme to 
RTEMS would have been too much effort.


> -- 
> - " Why do you call this software 'beta' ? "
> - " Cuz it beta than nothin' ! "

IMD Ingenieurbuero fuer Microcomputertechnik
Thomas Doerfler           Herbststrasse 8
D-82178 Puchheim          Germany
email:    Thomas.Doerfler at imd-systems.de
PGP public key available at: http://www.imd-

More information about the users mailing list