I apologize in advance in case this is not the right forum for my
questions. I am a candidate for a Master's degree in Computer Science,
and my project deals in adding functionality to the TCP/IP stack in
linux. I am running into some problems, and I am curious about some
synchronization mechanisms I am using. When is it safe and not safe to
use the start_bh_atomic() and end_bh_atomic() calls to try to guarantee
single access to critical sections of code? I am working on the 2.0.36
kernel until I get this working, then I will port it to 2.1.x or 2.2.x (if
it's released before I finish). If start/end_bh_atomic() is not supposed
to be used for a general synch. mechanism, is there one to use, or should
I roll my own? Also, when I look at the defs for the
start/end_bh_atomic() calls, they reference a function called barrier()
that is #defined as:
#define barrier() __asm__("": : :"memory")
I have never seen an assembly instruction like this, and I was wondering
if I could ask anyone what this was and how to use it so that if I have
to, I can roll my own synch. mechanisms.
Thank you in advance for your time.
Sincerely,
Jason Pfeil
----
Jason A. Pfeil pfeil@cs.fsu.edu
Information Systems Developer jpfeil@lsi.fsu.edu
CASDL (850)644-8014; fax: (850)644-4952
Learning Systems Institute University Center C-3527
http://idl.fsu.edu Tallahassee, FL 32306-2540
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/