splimp, splx locks in network code - cause of my vanished buffers ?

Nick.SIMON at syntegra.bt.co.uk Nick.SIMON at syntegra.bt.co.uk
Wed Mar 15 14:29:02 UTC 2000


Using rtems 4.0.0, I have two ethernet ports, one running the normal BSD
stack and one with a special raw ethernet stack.  The latter uses the same
pool of mbufs and clusters as the bsd stack, and all the usual macros like
MGETHDR and MFREE.


Unfortunately, with both networks whizzing away merrily, it eventually dies
from lack of mbufs (and there are plenty to start with).  I see that in
rtems_bsdnet_internal.h the macros splimp and splx are defined to do
nothing, which allows certain timing hits an opportunity to screw up the
free chain.


Questions:

(1) Can I use rtems_interrupt_disable() for splimp, ...enable for splx?
(2) What about splnet?
(3) Am I barking up the wrong tree?



TIA



More information about the users mailing list