createmesgqueue.c 1.56 KB
/**************************************************************************
 *									  *
 *		 Copyright (C) 1994, Silicon Graphics, Inc.		  *
 *									  *
 *  These coded instructions, statements, and computer programs  contain  *
 *  unpublished  proprietary  information of Silicon Graphics, Inc., 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 Silicon Graphics, Inc.  *
 *									  *
 **************************************************************************/

#include "osint.h"
/* #include "assert.h" */


/*
 * Name:   osCreateMesgQueue
 *
 * Description:
 *	This routine initializes the message queue structure with number of 
 *	messages that this queue can hold. 'msg' points to an array of empty
 *	messages and 'msgCount' contains the number of messages in the array.
 *
 * Globals Referenced: 
 *	__osThreadTail (thread.c)
 */
void
osCreateMesgQueue(OSMesgQueue *mq, OSMesg *msg, s32 msgCount)
{
	
	/* Make sure that message queue and message buffer are not null */
	/* assert(mq != NULL); */
	/* assert(msg != NULL); */
#ifdef _DEBUG
	if (msgCount <= 0) {
		__osError(ERR_OSCREATEMESGQUEUE, 1, msgCount);
		return;
	}
#endif
	/* assert(msgCount > 0); */	/* Ensure that message count is > 0 */

	mq->mtqueue    = (OSThread *)&__osThreadTail;
	mq->fullqueue  = (OSThread *)&__osThreadTail;
	mq->validCount = 0;
	mq->first      = 0;
	mq->msgCount   = msgCount;
	mq->msg        = msg;

}  /* end of osCreateMesgQueue */