Ubuntu Feisty 7.04 manual page repository

Ubuntu is a free computer operating system based on the Linux kernel. Many IT companies, like DeployIS is using it to provide an up-to-date, stable operating system.

Provided by: freebsd-manpages_6.0-5_all

 

NAME

      lockinit, lockdestroy, lockcount, lockmgr, lockstatus, lockmgr_printinfo
      - lockmgr family of functions
 

SYNOPSIS

      #include <sys/types.h>
      #include <sys/lockmgr.h>
 
      void
      lockinit(struct lock *lkp, int prio, const char *wmesg, int timo,
              int flags);
 
      void
      lockdestroy(struct lock *lkp);
 
      int
      lockcount(struct lock *lkp);
 
      int
      lockmgr(struct lock *lkp, u_int flags, struct mtx *interlkp,
              struct thread *td);
 
      int
      lockstatus(struct lock *lkp, struct thread *td);
 
      void
      lockmgr_printinfo(struct lock *lkp);
 

DESCRIPTION

      The lockinit() function is used to initialize a lock.  It must be called
      before any operation can be performed on a lock.  Its arguments are:
 
      lkp    A pointer to the lock to initialize.
 
msleep(9).
 
      wmesg  The lock message.  This is used for both debugging output and
msleep(9).
 
msleep(9).
 
      flags  The flags the lock is to be initialized with.
 
             LK_NOWAIT      Do not sleep while acquiring the lock.
 
             LK_SLEEPFAIL   Fail after a sleep.
 
             LK_CANRECURSE  Allow recursive exclusive locks.
 
             LK_REENABLE    Re-enable the lock after a drain.
 
             LK_NOPAUSE     Disable the spinlock while acquiring the lock.
 
             LK_TIMELOCK    Use timo during a sleep; otherwise, 0 is used.
 
      The lockdestroy() function is used to destroy a lock, and while it is
      called in a number of places in the kernel, it currently does nothing.
 
      The lockcount() function returns a count of the number of exclusive locks
      and shared locks held against the lock lkp.
 
      The lockmgr() function handles general locking functionality within the
      kernel, including support for shared and exclusive locks, and recursion.
      lockmgr() is also able to upgrade and downgrade locks.
 
      Its arguments are:
 
      lkp       A pointer to the lock to manipulate.
 
      flags     Flags indicating what action is to be taken.
 
                LK_SHARED       Acquire a shared lock.  If an exclusive lock is
                                currently held, it will be downgraded.
 
                LK_EXCLUSIVE    Acquire an exclusive lock.  If an exclusive
                                lock is already held, and LK_CANRECURSE is not
panic(9).
 
                LK_DOWNGRADE    Downgrade exclusive lock to a shared lock.
                                Downgrading a shared lock is not permitted.  If
                                an exclusive lock has been recursed, all refer‐
                                ences will be downgraded.
 
                LK_EXCLUPGRADE  Upgrade a shared lock to an exclusive lock.
                                Fails with EBUSY if there is someone ahead of
                                you in line waiting for an upgrade.  If this
                                call fails, the shared lock is lost.  Attempts
                                to upgrade an exclusive lock will cause a
panic(9).
 
                LK_UPGRADE      Upgrade a shared lock to an exclusive lock.  If
                                this call fails, the shared lock is lost.
                                Attempts to upgrade an exclusive lock will
panic(9).
 
                LK_RELEASE      Release the lock.  Releasing a lock that is not
panic(9).
 
                LK_DRAIN        Wait for all activity on the lock to end, then
                                mark it decommissioned.  This is used before
                                freeing a lock that is part of a piece of mem‐
                                ory that is about to be freed.  (As documented
                                in
 
                LK_SLEEPFAIL    Fail if operation has slept.
 
                LK_NOWAIT       Do not allow the call to sleep.  This can be
                                used to test the lock.
 
                LK_CANRECURSE   Allow recursion on an exclusive lock.  For
                                every lock there must be a release.
 
                LK_INTERLOCK    Unlock the interlock (which should be locked
                                already).
 
      interlkp  An interlock mutex for controlling group access to the lock.
                If LK_INTERLOCK is specified, lockmgr() assumes interlkp is
                currently owned and not recursed, and will return it unlocked.
mtx_assert(9).
 
      td        A thread responsible for this call.  NULL becomes LK_KERNPROC.
 
      The lockstatus() function returns the status of the lock in relation to
      the thread passed to it.  Note that if td is NULL and an exclusive lock
      is held, LK_EXCLUSIVE will be returned.
 
      The lockmgr_printinfo() function prints debugging information about the
VOP_PRINT(9) functions.
      The lockcount() function returns an integer greater than or equal to
      zero.
 
      The lockmgr() function returns 0 on success and non-zero on failure.
 
      The lockstatus() function returns:
 
      LK_EXCLUSIVE  An exclusive lock is held by the thread td.
 
      LK_EXCLOTHER  An exclusive lock is held by someone other than the thread
                    td.
 
      LK_SHARED     A shared lock is held.
 
      0             The lock is not held by anyone.
 

ERRORS

      lockmgr() fails if:
 
      [EBUSY]            LK_FORCEUPGRADE was requested and another thread had
                         already requested a lock upgrade.
 
      [EBUSY]            LK_NOWAIT was set, and a sleep would have been
                         required.
 
      [ENOLCK]           LK_SLEEPFAIL was set and lockmgr() did sleep.
 
      [EINTR]            PCATCH was set in the lock priority, and a signal was
                         delivered during a sleep.  Note the ERESTART error
                         below.
 
      [ERESTART]         PCATCH was set in the lock priority, a signal was
                         delivered during a sleep, and the system call is to be
                         restarted.
 
      [EWOULDBLOCK]      a non-zero timeout was given, and the timeout expired.
 

LOCKS

      If LK_INTERLOCK is passed in the flags argument to lockmgr(), the
      interlkp must be held prior to calling lockmgr(), and will be returned
      unlocked.
 
      Upgrade attempts that fail result in the loss of the lock that is cur‐
      rently held.  Also, it is invalid to upgrade an exclusive lock, and a
panic(9) will be the result of trying.
VOP_PRINT(9)
 

AUTHORS

      This manual page was written by Chad David 〈davidc@acns.ab.ca〉.
 

Sections

What does Ubuntu mean?
Ubuntu is an African word meaning 'Humanity to others', or 'I am what I am because of who we all are'. The Ubuntu distribution brings the spirit of Ubuntu to the software world.