* AcessOS Microkernel Version
* messages.c
*/
-#include <common.h>
+#include <acess.h>
#include <proc.h>
#include <errno.h>
* \brief Send an IPC message
* \param Err Pointer to the errno variable
* \param Dest Destination Thread
+ * \param Length Length of the message
+ * \param Data Message data
*/
int Proc_SendMessage(Uint *Err, Uint Dest, int Length, void *Data)
{
/**
* \fn int Proc_GetMessage(Uint *Err, Uint *Source, void *Buffer)
* \brief Gets a message
+ * \param Err Pointer to \a errno
+ * \param Source Where to put the source TID
+ * \param Buffer Buffer to place the message data (set to NULL to just get message length)
*/
int Proc_GetMessage(Uint *Err, Uint *Source, void *Buffer)
{
// Get message
if(Buffer != GETMSG_IGNORE)
+ {
+ if( !CheckMem( Buffer, cur->Messages->Length ) )
+ {
+ *Err = -EINVAL;
+ RELEASE( &cur->IsLocked );
+ return -1;
+ }
memcpy(Buffer, cur->Messages->Data, cur->Messages->Length);
+ }
ret = cur->Messages->Length;
// Remove from list
tmp = cur->Messages->Next;
- free(cur->Messages);
+ free( (void*)cur->Messages );
cur->Messages = tmp;
RELEASE( &cur->IsLocked );