Copyright Digital Equipment Corp. All rights reserved.

Description

   This routine attempts to acquire the read-write lock referenced
   by rwlock for write access. If any thread already holds that lock
   for write access or read access, this routine fails and returns
   [EBUSY] and the calling thread does not wait for the lock to
   become available.

   Results are undefined if the calling thread holds the read-write
   lock (whether for read or write access) at the time this routine
   is called.

   If the read-write lock object referenced by rwlock is not
   initialized, the results of calling this routine are undefined.

   Realtime applications can encounter priority inversion when using
   read-write locks. The problem occurs when a high-priority thread
   acquires a read-write lock that is about to be unlocked (that
   is, posted) by a low-priority thread, but the low-priority thread
   is preempted by a medium-priority thread. This scenario leads to
   priority inversion in that a high-priority thread is blocked by
   lower-priority threads for an unlimited period of time. During
   system design, realtime programmers must take into account the
   possibility of priority inversion and can deal with it in a
   number of ways, such as by having critical sections that are
   guarded by read-write locks execute at a high priority, so that
   a thread cannot be preempted while executing in its critical
   section.