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