Initial kernel events support
All checks were successful
ci/woodpecker/push/build Pipeline was successful
All checks were successful
ci/woodpecker/push/build Pipeline was successful
This commit is contained in:
parent
e0778d0a12
commit
934dba37a1
@ -16,6 +16,10 @@
|
||||
|
||||
|
||||
/* Kernel services routines forward references */
|
||||
XTAPI
|
||||
VOID
|
||||
KeClearEvent(IN PKEVENT Event);
|
||||
|
||||
XTAPI
|
||||
VOID
|
||||
KeInitializeApc(IN PKAPC Apc,
|
||||
@ -27,6 +31,12 @@ KeInitializeApc(IN PKAPC Apc,
|
||||
IN KPROCESSOR_MODE ApcMode,
|
||||
IN PVOID Context);
|
||||
|
||||
XTAPI
|
||||
VOID
|
||||
KeInitializeEvent(OUT PKEVENT Event,
|
||||
IN KEVENT_TYPE EventType,
|
||||
IN BOOLEAN InitialState);
|
||||
|
||||
XTAPI
|
||||
VOID
|
||||
KeInitializeSemaphore(IN PKSEMAPHORE Semaphore,
|
||||
@ -57,6 +67,12 @@ KeReleaseSemaphore(IN PKSEMAPHORE Semaphore,
|
||||
IN LONG Adjustment,
|
||||
IN BOOLEAN Wait);
|
||||
|
||||
XTAPI
|
||||
LONG
|
||||
KeSetEvent(IN PKEVENT Event,
|
||||
IN KPRIORITY Increment,
|
||||
IN BOOLEAN Wait);
|
||||
|
||||
XTAPI
|
||||
VOID
|
||||
KeStartXtSystem(IN PKERNEL_INITIALIZATION_BLOCK Parameters);
|
||||
|
@ -84,6 +84,13 @@ typedef enum _KDPC_IMPORTANCE
|
||||
MediumHighImportance
|
||||
} KDPC_IMPORTANCE, *PKDPC_IMPORTANCE;
|
||||
|
||||
/* Event types list */
|
||||
typedef enum _KEVENT_TYPE
|
||||
{
|
||||
NotificationEvent,
|
||||
SynchronizationEvent
|
||||
} KEVENT_TYPE, *PKEVENT_TYPE;
|
||||
|
||||
/* Kernel objects */
|
||||
typedef enum _KOBJECTS
|
||||
{
|
||||
@ -226,6 +233,12 @@ typedef struct _KDPC_DATA
|
||||
ULONG DpcCount;
|
||||
} KDPC_DATA, *PKDPC_DATA;
|
||||
|
||||
/* Event object structure definition */
|
||||
typedef struct _KEVENT
|
||||
{
|
||||
DISPATCHER_HEADER Header;
|
||||
} KEVENT, *PKEVENT;
|
||||
|
||||
/* Exception registration record structure definition */
|
||||
typedef struct _EXCEPTION_REGISTRATION_RECORD
|
||||
{
|
||||
|
@ -40,6 +40,7 @@ typedef enum _EFI_UART_STOP_BITS_TYPE EFI_UART_STOP_BITS_TYPE, *PEFI_UART_STOP_B
|
||||
typedef enum _EFI_UNIVERSA_GRAPHICS_BLT_OPERATION EFI_UNIVERSA_GRAPHICS_BLT_OPERATION, *PEFI_UNIVERSA_GRAPHICS_BLT_OPERATION;
|
||||
typedef enum _KAPC_ENVIRONMENT KAPC_ENVIRONMENT, *PKAPC_ENVIRONMENT;
|
||||
typedef enum _KDPC_IMPORTANCE KDPC_IMPORTANCE, *PKDPC_IMPORTANCE;
|
||||
typedef enum _KEVENT_TYPE KEVENT_TYPE, *PKEVENT_TYPE;
|
||||
typedef enum _KOBJECTS KOBJECTS, *PKOBJECTS;
|
||||
typedef enum _KPROCESS_STATE KPROCESS_STATE, *PKPROCESS_STATE;
|
||||
typedef enum _KTHREAD_STATE KTHREAD_STATE, *PKTHREAD_STATE;
|
||||
@ -204,6 +205,7 @@ typedef struct _KAPC_STATE KAPC_STATE, *PKAPC_STATE;
|
||||
typedef struct _KDPC KDPC, *PKDPC;
|
||||
typedef struct _KDPC_DATA KDPC_DATA, *PKDPC_DATA;
|
||||
typedef struct _KERNEL_INITIALIZATION_BLOCK KERNEL_INITIALIZATION_BLOCK, *PKERNEL_INITIALIZATION_BLOCK;
|
||||
typedef struct _KEVENT KEVENT, *PKEVENT;
|
||||
typedef struct _KGATE KGATE, *PKGATE;
|
||||
typedef struct _KPROCESS KPROCESS, *PKPROCESS;
|
||||
typedef struct _KQUEUE KQUEUE, *PKQUEUE;
|
||||
|
@ -18,6 +18,7 @@ list(APPEND XTOSKRNL_SOURCE
|
||||
${XTOSKRNL_SOURCE_DIR}/hl/${ARCH}/ioport.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/apc.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/dpc.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/event.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/globals.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/kprocess.c
|
||||
${XTOSKRNL_SOURCE_DIR}/ke/krnlinit.c
|
||||
|
85
xtoskrnl/ke/event.c
Normal file
85
xtoskrnl/ke/event.c
Normal file
@ -0,0 +1,85 @@
|
||||
/**
|
||||
* PROJECT: ExectOS
|
||||
* COPYRIGHT: See COPYING.md in the top level directory
|
||||
* FILE: xtoskrnl/ke/event.c
|
||||
* DESCRIPTION: Kernel events support
|
||||
* DEVELOPERS: Rafal Kupiec <belliash@codingworkshop.eu.org>
|
||||
*/
|
||||
|
||||
#include <xtos.h>
|
||||
|
||||
|
||||
/**
|
||||
* Clears the signal state of the event.
|
||||
*
|
||||
* @param Event
|
||||
* Supplies a pointer to the event object.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since NT 3.5
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KeClearEvent(IN PKEVENT Event)
|
||||
{
|
||||
/* Clear event's signal state */
|
||||
Event->Header.SignalState = FALSE;
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a kernel event.
|
||||
*
|
||||
* @param Event
|
||||
* Supplies a pointer to the event object.
|
||||
*
|
||||
* @param EventType
|
||||
* Specifies an event type.
|
||||
*
|
||||
* @param InitialState
|
||||
* Specifies the initial signal state of the event.
|
||||
*
|
||||
* @return This routine does not return any value.
|
||||
*
|
||||
* @since NT 3.5
|
||||
*/
|
||||
XTAPI
|
||||
VOID
|
||||
KeInitializeEvent(OUT PKEVENT Event,
|
||||
IN KEVENT_TYPE EventType,
|
||||
IN BOOLEAN InitialState)
|
||||
{
|
||||
/* Initialize event dispatcher header */
|
||||
Event->Header.Type = EventType;
|
||||
Event->Header.SignalState = InitialState;
|
||||
|
||||
/* Initialize event wait list */
|
||||
RtlInitializeListHead(&Event->Header.WaitListHead);
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets new signal state and satisfy waits if possible.
|
||||
*
|
||||
* @param Event
|
||||
* Supplies a pointer to the event object.
|
||||
*
|
||||
* @param Increment
|
||||
* Specifies an event priority boost value.
|
||||
*
|
||||
* @param Wait
|
||||
* Specifies whether to call kernel wait routines or not.
|
||||
*
|
||||
* @return This routine returns the previous signal state of the event.
|
||||
*
|
||||
* @since NT 3.5
|
||||
*/
|
||||
XTAPI
|
||||
LONG
|
||||
KeSetEvent(IN PKEVENT Event,
|
||||
IN KPRIORITY Increment,
|
||||
IN BOOLEAN Wait)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
|
||||
return 0;
|
||||
}
|
Loading…
Reference in New Issue
Block a user