wut/include/coreinit/messagequeue.h

91 lines
1.9 KiB
C
Raw Normal View History

2016-01-07 14:32:55 +01:00
#pragma once
#include <wut.h>
#include "threadqueue.h"
2016-01-07 14:32:55 +01:00
2016-01-07 17:02:54 +01:00
/**
* \defgroup coreinit_msgq Message Queue
* \ingroup coreinit
* @{
*/
2016-01-07 15:09:43 +01:00
#ifdef __cplusplus
extern "C" {
#endif
2016-01-07 14:32:55 +01:00
2016-01-08 17:52:12 +01:00
typedef struct OSMessage OSMessage;
typedef struct OSMessageQueue OSMessageQueue;
2016-01-08 16:28:52 +01:00
typedef enum OSMessageFlags
2016-01-07 14:32:55 +01:00
{
OS_MESSAGE_FLAGS_NONE = 0,
OS_MESSAGE_FLAGS_BLOCKING = 1 << 0,
OS_MESSAGE_FLAGS_HIGH_PRIORITY = 1 << 1,
2016-01-08 16:28:52 +01:00
} OSMessageFlags;
2016-01-07 14:32:55 +01:00
struct OSMessage
{
void *message;
uint32_t args[3];
};
CHECK_OFFSET(OSMessage, 0x00, message);
CHECK_OFFSET(OSMessage, 0x04, args);
CHECK_SIZE(OSMessage, 0x10);
#define OS_MESSAGE_QUEUE_TAG 0x6D536751u
struct OSMessageQueue
{
uint32_t tag;
const char *name;
UNKNOWN(4);
OSThreadQueue sendQueue;
OSThreadQueue recvQueue;
OSMessage *messages;
uint32_t size;
uint32_t first;
uint32_t used;
};
CHECK_OFFSET(OSMessageQueue, 0x00, tag);
CHECK_OFFSET(OSMessageQueue, 0x04, name);
CHECK_OFFSET(OSMessageQueue, 0x0c, sendQueue);
CHECK_OFFSET(OSMessageQueue, 0x1c, recvQueue);
CHECK_OFFSET(OSMessageQueue, 0x2c, messages);
CHECK_OFFSET(OSMessageQueue, 0x30, size);
CHECK_OFFSET(OSMessageQueue, 0x34, first);
CHECK_OFFSET(OSMessageQueue, 0x38, used);
CHECK_SIZE(OSMessageQueue, 0x3c);
void
OSInitMessageQueue(OSMessageQueue *queue,
OSMessage *messages,
int32_t size);
void
OSInitMessageQueueEx(OSMessageQueue *queue,
OSMessage *messages,
int32_t size,
const char *name);
BOOL
OSSendMessage(OSMessageQueue *queue,
OSMessage *message,
OSMessageFlags flags);
BOOL
OSReceiveMessage(OSMessageQueue *queue,
OSMessage *message,
OSMessageFlags flags);
BOOL
OSPeekMessage(OSMessageQueue *queue,
OSMessage *message);
OSMessageQueue *
OSGetSystemMessageQueue();
2016-01-07 15:09:43 +01:00
#ifdef __cplusplus
}
#endif
2016-01-07 17:02:54 +01:00
/** @} */