mirror of
https://github.com/rvtr/ctr_firmware.git
synced 2025-10-31 07:51:08 -04:00
git-svn-id: file:///Volumes/Transfer/gigaleak_20231201/2020-09-30%20-%20paladin.7z/paladin/ctr_firmware@151 b871894f-2f95-9b40-918c-086798483c85
166 lines
5.2 KiB
C
166 lines
5.2 KiB
C
/*---------------------------------------------------------------------------*
|
|
Project: CtrBrom - OS - include
|
|
File: message.h
|
|
|
|
Copyright 2009 Nintendo. All rights reserved.
|
|
|
|
These coded instructions, statements, and computer programs contain
|
|
proprietary information of Nintendo of America Inc. and/or Nintendo
|
|
Company Ltd., and are protected by Federal copyright law. They may
|
|
not be disclosed to third parties or copied or duplicated in any form,
|
|
in whole or in part, without the prior written consent of Nintendo.
|
|
|
|
$Date:: $
|
|
$Rev$
|
|
$Author$
|
|
*---------------------------------------------------------------------------*/
|
|
#ifndef BROM_OS_MESSAGE_H_
|
|
#define BROM_OS_MESSAGE_H_
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include <brom/os/common/thread.h>
|
|
|
|
//--------------------------------------------------------------------------------
|
|
//---- type definition about message
|
|
typedef struct OSMessageQueue OSMessageQueue;
|
|
typedef void *OSMessage;
|
|
|
|
//---- structure of message queue
|
|
//#pragma warn_padding off
|
|
struct OSMessageQueue
|
|
{
|
|
OSThreadQueue queueSend;
|
|
OSThreadQueue queueReceive;
|
|
OSMessage *msgArray;
|
|
s32 msgCount;
|
|
s32 firstIndex;
|
|
s32 usedCount;
|
|
};
|
|
//#pragma warn_padding reset
|
|
|
|
//---- Flags to turn blocking on/off when sending/receiving message
|
|
#define OS_MESSAGE_NOBLOCK 0
|
|
#define OS_MESSAGE_BLOCK 1
|
|
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osInitMessageQueue
|
|
|
|
Description: initialize message queue
|
|
|
|
Arguments: mq message queue
|
|
msgArray buffer for message queue
|
|
msgCount max massage size for buffer
|
|
|
|
Returns: None
|
|
*---------------------------------------------------------------------------*/
|
|
void osInitMessageQueue(OSMessageQueue *mq, OSMessage *msgArray, s32 msgCount);
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osSendMessage
|
|
|
|
Description: send message to message queue
|
|
|
|
Arguments: mq message queue
|
|
msg massage which is sent
|
|
flags whether wait or not when queue is full
|
|
|
|
Returns: TRUE if send
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
BOOL osSendMessage(OSMessageQueue *mq, OSMessage msg, s32 flags);
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osReceiveMessage
|
|
|
|
Description: receive message from message queue
|
|
|
|
Arguments: mq message queue
|
|
msg massage which is received
|
|
flags whether wait or not when queue is empty
|
|
|
|
Returns: TRUE if reveice
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
BOOL osReceiveMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags);
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osJamMessage
|
|
|
|
Description: send message to message queue, cutting in the top of the queue
|
|
|
|
Arguments: mq message queue
|
|
msg massage which is sent
|
|
flags whether wait or not when queue is empty
|
|
|
|
Returns: TRUE if send
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
BOOL osJamMessage(OSMessageQueue *mq, OSMessage msg, s32 flags);
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osReadMessageMessage
|
|
|
|
Description: read message at message queue. no change to queue
|
|
not occur to switch threads.
|
|
|
|
Arguments: mq message queue
|
|
msg massage which is received
|
|
flags whether wait or not when queue is empty
|
|
|
|
Returns: TRUE if read
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
BOOL osReadMessage(OSMessageQueue *mq, OSMessage *msg, s32 flags);
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osGetMessageCount
|
|
|
|
Description: get message count of message queue.
|
|
|
|
Arguments: mq message queue
|
|
|
|
Returns: message count
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
static inline s32 osGetMessageCount(OSMessageQueue *mq)
|
|
{
|
|
SDK_ASSERT(mq);
|
|
return mq->msgCount;
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------*
|
|
Name: osIsMessageQueueFull
|
|
|
|
Description: get whether message queue is full or not
|
|
|
|
Arguments: mq message queue
|
|
|
|
Returns: TRUE if full
|
|
|
|
*---------------------------------------------------------------------------*/
|
|
static inline BOOL osIsMessageQueueFull(OSMessageQueue *mq)
|
|
{
|
|
SDK_ASSERT(mq);
|
|
return (mq->usedCount >= mq->msgCount);
|
|
}
|
|
|
|
|
|
//--------------------------------------------------------------------------------
|
|
#ifdef __cplusplus
|
|
} /* extern "C" */
|
|
#endif
|
|
|
|
/* BROM_OS_MESSAGE_H_ */
|
|
#endif
|