Changed "struct KernelCallback" to be an union

This commit is contained in:
Alex 2023-03-08 05:25:37 +02:00
parent a265cb59c8
commit 06aa2bb31b
Signed by untrusted user who does not match committer: enderice2
GPG Key ID: EACC3AD603BAB4DD
2 changed files with 59 additions and 54 deletions

109
DAPI.hpp
View File

@ -119,67 +119,72 @@ enum CallbackReason
InputReason,
};
struct KernelCallback
union KernelCallback
{
CallbackReason Reason;
void *RawPtr;
unsigned long RawData;
/** @brief When the kernel wants to send a packet. */
struct
{
struct
{
unsigned char *Data;
unsigned long Length;
} Send;
CallbackReason Reason;
void *RawPtr;
unsigned long RawData;
/** @brief When the kernel wants to send a packet. */
struct
{
char Name[128];
unsigned long MAC;
} Fetch;
} NetworkCallback;
/** @brief When the kernel wants to write to disk. */
struct
{
struct
{
unsigned long Sector;
unsigned long SectorCount;
unsigned char Port;
unsigned char *Buffer;
bool Write;
} RW;
struct
{
unsigned char Ports;
int BytesPerSector;
} Fetch;
} DiskCallback;
struct
{
struct
{
unsigned long X;
unsigned long Y;
unsigned long Z;
struct
{
bool Left;
bool Right;
bool Middle;
} Buttons;
} Mouse;
} InputCallback;
unsigned char *Data;
unsigned long Length;
} Send;
struct
{
unsigned char Vector;
} InterruptInfo;
struct
{
char Name[128];
unsigned long MAC;
} Fetch;
} NetworkCallback;
/** @brief When the kernel wants to write to disk. */
struct
{
struct
{
unsigned long Sector;
unsigned long SectorCount;
unsigned char Port;
unsigned char *Buffer;
bool Write;
} RW;
struct
{
unsigned char Ports;
int BytesPerSector;
} Fetch;
} DiskCallback;
/** @brief When the kernel wants to get mouse position / keyboard key */
struct
{
struct
{
unsigned long X;
unsigned long Y;
unsigned long Z;
struct
{
bool Left;
bool Right;
bool Middle;
} Buttons;
} Mouse;
} InputCallback;
struct
{
unsigned char Vector;
} InterruptInfo;
};
unsigned long raw;
} __attribute__((packed));
#endif // !__FENNIX_DRIVER_API_H__

View File

@ -58,7 +58,7 @@ struct Fex
int (*EntryPoint)(void *);
} __attribute__((packed));
struct KernelCallback;
union KernelCallback;
struct FexExtended
{
@ -73,7 +73,7 @@ struct FexExtended
enum FexDriverType Type : 4;
enum FexDriverInputTypes TypeFlags : 4;
bool OverrideOnConflict : 1;
int (*Callback)(struct KernelCallback *);
int (*Callback)(union KernelCallback *);
struct DriverBind
{