Arbitrary-Level Synchronization
Arbitrary-level synchronization protects an arbitrary group of modules or drivers (including all instances of each module or driver).
A name passed when setting this level (with the str_install utility) is used to associate modules together. The name is decided by convention among cooperating modules.
Arbitrary-level synchronization is used for synchronizing a group of modules that access each other's data. An example might be a networking stack such as a Transmission Control Protocol (TCP) module and an Internet Protocol (IP) module, both of which share data. Such modules might agree to pass the string "tcp/ip".
In the Arbitrary-Level Synchronization figure (Figure 1), modules A and B are protected by arbitrary-level synchronization. Module A and both instances of module B are in the same group. The boxes highlighted in bold show the protected area; only one thread can access this area.
