Home | History | Annotate | Line # | Download | only in lib
lock.c revision 1.1.1.1.4.2
      1  1.1.1.1.4.2  rmind /*	$NetBSD: lock.c,v 1.1.1.1.4.2 2014/05/18 17:46:03 rmind Exp $	*/
      2  1.1.1.1.4.2  rmind 
      3  1.1.1.1.4.2  rmind /*++
      4  1.1.1.1.4.2  rmind 
      5  1.1.1.1.4.2  rmind Copyright (c) 1998  Intel Corporation
      6  1.1.1.1.4.2  rmind 
      7  1.1.1.1.4.2  rmind Module Name:
      8  1.1.1.1.4.2  rmind 
      9  1.1.1.1.4.2  rmind     lock.c
     10  1.1.1.1.4.2  rmind 
     11  1.1.1.1.4.2  rmind Abstract:
     12  1.1.1.1.4.2  rmind 
     13  1.1.1.1.4.2  rmind     Implements FLOCK
     14  1.1.1.1.4.2  rmind 
     15  1.1.1.1.4.2  rmind 
     16  1.1.1.1.4.2  rmind 
     17  1.1.1.1.4.2  rmind Revision History
     18  1.1.1.1.4.2  rmind 
     19  1.1.1.1.4.2  rmind --*/
     20  1.1.1.1.4.2  rmind 
     21  1.1.1.1.4.2  rmind 
     22  1.1.1.1.4.2  rmind #include "lib.h"
     23  1.1.1.1.4.2  rmind 
     24  1.1.1.1.4.2  rmind 
     25  1.1.1.1.4.2  rmind VOID
     26  1.1.1.1.4.2  rmind InitializeLock (
     27  1.1.1.1.4.2  rmind     IN OUT FLOCK    *Lock,
     28  1.1.1.1.4.2  rmind     IN EFI_TPL      Priority
     29  1.1.1.1.4.2  rmind     )
     30  1.1.1.1.4.2  rmind /*++
     31  1.1.1.1.4.2  rmind 
     32  1.1.1.1.4.2  rmind Routine Description:
     33  1.1.1.1.4.2  rmind 
     34  1.1.1.1.4.2  rmind     Initialize a basic mutual exclusion lock.   Each lock
     35  1.1.1.1.4.2  rmind     provides mutual exclusion access at it's task priority
     36  1.1.1.1.4.2  rmind     level.  Since there is no-premption (at any TPL) or
     37  1.1.1.1.4.2  rmind     multiprocessor support, acquiring the lock only consists
     38  1.1.1.1.4.2  rmind     of raising to the locks TPL.
     39  1.1.1.1.4.2  rmind 
     40  1.1.1.1.4.2  rmind     Note on a debug build the lock is acquired and released
     41  1.1.1.1.4.2  rmind     to help ensure proper usage.
     42  1.1.1.1.4.2  rmind 
     43  1.1.1.1.4.2  rmind Arguments:
     44  1.1.1.1.4.2  rmind 
     45  1.1.1.1.4.2  rmind     Lock        - The FLOCK structure to initialize
     46  1.1.1.1.4.2  rmind 
     47  1.1.1.1.4.2  rmind     Priority    - The task priority level of the lock
     48  1.1.1.1.4.2  rmind 
     49  1.1.1.1.4.2  rmind 
     50  1.1.1.1.4.2  rmind Returns:
     51  1.1.1.1.4.2  rmind 
     52  1.1.1.1.4.2  rmind     An initialized F Lock structure.
     53  1.1.1.1.4.2  rmind 
     54  1.1.1.1.4.2  rmind --*/
     55  1.1.1.1.4.2  rmind {
     56  1.1.1.1.4.2  rmind     Lock->Tpl = Priority;
     57  1.1.1.1.4.2  rmind     Lock->OwnerTpl = 0;
     58  1.1.1.1.4.2  rmind     Lock->Lock = 0;
     59  1.1.1.1.4.2  rmind }
     60  1.1.1.1.4.2  rmind 
     61  1.1.1.1.4.2  rmind 
     62  1.1.1.1.4.2  rmind VOID
     63  1.1.1.1.4.2  rmind AcquireLock (
     64  1.1.1.1.4.2  rmind     IN FLOCK    *Lock
     65  1.1.1.1.4.2  rmind     )
     66  1.1.1.1.4.2  rmind /*++
     67  1.1.1.1.4.2  rmind 
     68  1.1.1.1.4.2  rmind Routine Description:
     69  1.1.1.1.4.2  rmind 
     70  1.1.1.1.4.2  rmind     Raising to the task priority level of the mutual exclusion
     71  1.1.1.1.4.2  rmind     lock, and then acquires ownership of the lock.
     72  1.1.1.1.4.2  rmind 
     73  1.1.1.1.4.2  rmind Arguments:
     74  1.1.1.1.4.2  rmind 
     75  1.1.1.1.4.2  rmind     Lock        - The lock to acquire
     76  1.1.1.1.4.2  rmind 
     77  1.1.1.1.4.2  rmind Returns:
     78  1.1.1.1.4.2  rmind 
     79  1.1.1.1.4.2  rmind     Lock owned
     80  1.1.1.1.4.2  rmind 
     81  1.1.1.1.4.2  rmind --*/
     82  1.1.1.1.4.2  rmind {
     83  1.1.1.1.4.2  rmind     RtAcquireLock (Lock);
     84  1.1.1.1.4.2  rmind }
     85  1.1.1.1.4.2  rmind 
     86  1.1.1.1.4.2  rmind 
     87  1.1.1.1.4.2  rmind VOID
     88  1.1.1.1.4.2  rmind ReleaseLock (
     89  1.1.1.1.4.2  rmind     IN FLOCK    *Lock
     90  1.1.1.1.4.2  rmind     )
     91  1.1.1.1.4.2  rmind /*++
     92  1.1.1.1.4.2  rmind 
     93  1.1.1.1.4.2  rmind Routine Description:
     94  1.1.1.1.4.2  rmind 
     95  1.1.1.1.4.2  rmind     Releases ownership of the mutual exclusion lock, and
     96  1.1.1.1.4.2  rmind     restores the previous task priority level.
     97  1.1.1.1.4.2  rmind 
     98  1.1.1.1.4.2  rmind Arguments:
     99  1.1.1.1.4.2  rmind 
    100  1.1.1.1.4.2  rmind     Lock        - The lock to release
    101  1.1.1.1.4.2  rmind 
    102  1.1.1.1.4.2  rmind Returns:
    103  1.1.1.1.4.2  rmind 
    104  1.1.1.1.4.2  rmind     Lock unowned
    105  1.1.1.1.4.2  rmind 
    106  1.1.1.1.4.2  rmind --*/
    107  1.1.1.1.4.2  rmind {
    108  1.1.1.1.4.2  rmind     RtReleaseLock (Lock);
    109  1.1.1.1.4.2  rmind }
    110