I am working with the libpcap + ringbuffer and trying to get it
moved
from Debian to Red Hat. The Debian/Slackware code depends upon
/usr/include/linux/system.h which has the kernel version of asm.h
linked to if for the platform. For i386 this is asm-i386.h which has
the macro mb(); that the pcap ringbuffer code relies on to make sure
some obscure race conditions are taken of. [I do not know what the
race condition is beyond it talking to the kernel half of the
ringbuffer.]
Anyway it compiles well on the other Linux versions we have because it
can find the call to mb() without problems. On Fecore Core 3 (and most
likely RHEL4) it does not work at all because of kernel system.h now
in /lib/modules/....
What is the best way of dealing with items like this?
There is an bugzilla item filed under devel for the glibc-kernheaders
package with a request to update them from 2.4 to 2.6 headers. There
are a number of packages that have issues with compiling using the 2.4
headers, especially things that rely on new features like v4l2 etc.
To work around it I've justsym linked /usr/include/linux to the
/lib/modules/... directory. Not sure if this is the right way or will
cause any problems but its seems to be working allright to date.
Pete