EmuThread.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. /** @file
  2. Emulator Thunk to abstract OS services from pure EFI code
  3. Copyright (c) 2010 - 2011, Apple Inc. All rights reserved.<BR>
  4. Copyright (c) 2011, Intel Corporation. All rights reserved.<BR>
  5. SPDX-License-Identifier: BSD-2-Clause-Patent
  6. **/
  7. #ifndef __EMU_THREAD_THUNK__
  8. #define __EMU_THREAD_THUNK__
  9. typedef struct _EMU_THREAD_THUNK_PROTOCOL EMU_THREAD_THUNK_PROTOCOL;
  10. typedef
  11. UINTN
  12. (EFIAPI *THREAD_THUNK_MUTEX_LOCK)(
  13. IN VOID *Mutex
  14. );
  15. typedef
  16. UINTN
  17. (EFIAPI *THREAD_THUNK_MUTEX_UNLOCK)(
  18. IN VOID *Mutex
  19. );
  20. typedef
  21. UINTN
  22. (EFIAPI *THREAD_THUNK_MUTEX_TRY_LOCK)(
  23. IN VOID *Mutex
  24. );
  25. typedef
  26. VOID *
  27. (EFIAPI *THREAD_THUNK_MUTEX_INIT)(
  28. IN VOID
  29. );
  30. typedef
  31. UINTN
  32. (EFIAPI *THREAD_THUNK_MUTEX_DISTROY)(
  33. IN VOID *Mutex
  34. );
  35. typedef
  36. VOID *
  37. (EFIAPI *THREAD_THUNK_THREAD_ENTRY)(
  38. IN VOID *Context
  39. );
  40. typedef
  41. UINTN
  42. (EFIAPI *THREAD_THUNK_CREATE_THREAD)(
  43. IN VOID *Thread,
  44. IN VOID *Attribute,
  45. IN THREAD_THUNK_THREAD_ENTRY Start,
  46. IN VOID *Context
  47. );
  48. typedef
  49. VOID
  50. (EFIAPI *THREAD_THUNK_EXIT_THREAD)(
  51. IN VOID *ValuePtr
  52. );
  53. typedef
  54. UINTN
  55. (EFIAPI *THREAD_THUNK_SELF)(
  56. VOID
  57. );
  58. struct _EMU_THREAD_THUNK_PROTOCOL {
  59. THREAD_THUNK_MUTEX_LOCK MutexLock;
  60. THREAD_THUNK_MUTEX_UNLOCK MutexUnlock;
  61. THREAD_THUNK_MUTEX_TRY_LOCK MutexTryLock;
  62. THREAD_THUNK_MUTEX_INIT MutexInit;
  63. THREAD_THUNK_MUTEX_DISTROY MutexDistroy;
  64. THREAD_THUNK_CREATE_THREAD CreateThread;
  65. THREAD_THUNK_EXIT_THREAD ExitThread;
  66. THREAD_THUNK_SELF Self;
  67. };
  68. extern EFI_GUID gEmuThreadThunkProtocolGuid;
  69. #endif