2 * Copyright 2014, Paweł Dziepak, pdziepak@quarnos.org.
3 * Copyright 2011, Ingo Weinhold, ingo_weinhold@gmx.de.
4 * Distributed under the terms of the MIT License.
6 #ifndef _KERNEL_USER_EVENT_H
7 #define _KERNEL_USER_EVENT_H
12 #include <SupportDefs.h>
25 struct UserEvent
: public BReferenceable
{
28 virtual status_t
Fire() = 0;
32 struct SignalEvent
: UserEvent
, private DPCCallback
{
33 virtual ~SignalEvent();
35 void SetUserValue(union sigval userValue
);
37 virtual status_t
Fire();
43 SignalEvent(EventSignal
* signal
);
51 struct TeamSignalEvent
: SignalEvent
{
52 static TeamSignalEvent
* Create(Team
* team
, uint32 signalNumber
,
53 int32 signalCode
, int32 errorCode
);
55 virtual status_t
Fire();
58 virtual void DoDPC(DPCQueue
* queue
);
61 TeamSignalEvent(Team
* team
,
69 struct ThreadSignalEvent
: SignalEvent
{
70 static ThreadSignalEvent
* Create(Thread
* thread
, uint32 signalNumber
,
71 int32 signalCode
, int32 errorCode
,
74 virtual status_t
Fire();
77 virtual void DoDPC(DPCQueue
* queue
);
80 ThreadSignalEvent(Thread
* thread
,
88 struct CreateThreadEvent
: UserEvent
, private DPCCallback
{
89 static CreateThreadEvent
* Create(
90 const ThreadCreationAttributes
& attributes
);
92 virtual status_t
Fire();
96 const ThreadCreationAttributes
& attributes
);
98 virtual void DoDPC(DPCQueue
* queue
);
101 ThreadCreationAttributes fCreationAttributes
;
102 char fThreadName
[B_OS_NAME_LENGTH
];
107 } // namespace BKernel
110 using BKernel::CreateThreadEvent
;
111 using BKernel::SignalEvent
;
112 using BKernel::TeamSignalEvent
;
113 using BKernel::ThreadSignalEvent
;
114 using BKernel::UserEvent
;
117 #endif // _KERNEL_USER_EVENT_H