Home | History | Annotate | Download | only in Protocol
      1 /** @file
      2   Emulator Thunk to abstract OS services from pure EFI code
      3 
      4   Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>
      5   Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
      6 
      7   This program and the accompanying materials
      8   are licensed and made available under the terms and conditions of the BSD License
      9   which accompanies this distribution.  The full text of the license may be found at
     10   http://opensource.org/licenses/bsd-license.php
     11 
     12   THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
     13   WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
     14 
     15 **/
     16 
     17 #ifndef __EMU_THREAD_THUNK__
     18 #define __EMU_THREAD_THUNK__
     19 
     20 
     21 typedef struct _EMU_THREAD_THUNK_PROTOCOL  EMU_THREAD_THUNK_PROTOCOL;
     22 
     23 
     24 typedef
     25 UINTN
     26 (EFIAPI *THREAD_THUNK_MUTEX_LOCK) (
     27   IN VOID *Mutex
     28   );
     29 
     30 
     31 typedef
     32 UINTN
     33 (EFIAPI *THREAD_THUNK_MUTEX_UNLOCK) (
     34   IN VOID *Mutex
     35   );
     36 
     37 
     38 typedef
     39 UINTN
     40 (EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK) (
     41   IN VOID *Mutex
     42   );
     43 
     44 
     45 typedef
     46 VOID *
     47 (EFIAPI *THREAD_THUNK_MUTEX_INIT) (
     48   IN VOID
     49   );
     50 
     51 
     52 typedef
     53 UINTN
     54 (EFIAPI *THREAD_THUNK_MUTEX_DISTROY) (
     55   IN VOID *Mutex
     56   );
     57 
     58 
     59 
     60 typedef
     61 VOID *
     62 (EFIAPI *THREAD_THUNK_THREAD_ENTRY) (
     63   IN  VOID *Context
     64   );
     65 
     66 typedef
     67 UINTN
     68 (EFIAPI *THREAD_THUNK_CREATE_THREAD) (
     69   IN  VOID                      *Thread,
     70   IN  VOID                      *Attribute,
     71   IN  THREAD_THUNK_THREAD_ENTRY Start,
     72   IN  VOID                      *Context
     73   );
     74 
     75 typedef
     76 VOID
     77 (EFIAPI *THREAD_THUNK_EXIT_THREAD) (
     78   IN VOID *ValuePtr
     79   );
     80 
     81 
     82 typedef
     83 UINTN
     84 (EFIAPI *THREAD_THUNK_SELF) (
     85   VOID
     86   );
     87 
     88 
     89 struct _EMU_THREAD_THUNK_PROTOCOL {
     90   THREAD_THUNK_MUTEX_LOCK       MutexLock;
     91   THREAD_THUNK_MUTEX_UNLOCK     MutexUnlock;
     92   THREAD_THUNK_MUTEX_TRY_LOCK   MutexTryLock;
     93   THREAD_THUNK_MUTEX_INIT       MutexInit;
     94   THREAD_THUNK_MUTEX_DISTROY    MutexDistroy;
     95   THREAD_THUNK_CREATE_THREAD    CreateThread;
     96   THREAD_THUNK_EXIT_THREAD      ExitThread;
     97   THREAD_THUNK_SELF             Self;
     98 };
     99 
    100 extern EFI_GUID gEmuThreadThunkProtocolGuid;
    101 
    102 #endif
    103 
    104