23 #include "pedigree/kernel/Spinlock.h" 24 #include "pedigree/kernel/compiler.h" 25 #include "pedigree/kernel/processor/types.h" 26 #include "pedigree/kernel/utilities/List.h" 27 #include "pedigree/kernel/utilities/new" 34 #define EVENT_LIMIT 4096 36 #define EVENT_TID_MAX 255 39 #define MAX_NESTED_EVENTS 16 41 #define EVENT_MAGIC 0x8899AABBCCDDEEFFULL 61 uintptr_t handlerAddress,
bool isDeletable,
62 size_t specificNestingLevel = ~0UL);
66 static uintptr_t getTrampoline();
69 static uintptr_t getSecondaryTrampoline();
72 static uintptr_t getHandlerBuffer();
75 static uintptr_t getLastHandlerBuffer();
80 virtual bool isDeletable();
93 virtual size_t serialize(uint8_t *pBuffer) = 0;
101 static bool unserialize(uint8_t *pBuffer,
Event &event);
105 static size_t getEventType(uint8_t *pBuffer);
110 return m_HandlerAddress;
116 return m_NestingLevel;
120 virtual size_t getNumber() = 0;
128 void registerThread(
Thread *thread);
131 void deregisterThread(
Thread *thread);
134 size_t pendingCount();
138 virtual void waitForDeliveries();
size_t getSpecificNestingLevel()
uintptr_t getHandlerAddress()
uintptr_t m_HandlerAddress
List< Thread * > m_Threads