Пример #1
0
/**
 * osCreateImageReg
 *
 * Creates memory for IO layer process image information.
 *
 * STaskInfoVM.Task.pIR 	sizeof(SImageReg)
 * 
 * @return			OK if successful else error number
 */
SImageReg *osCreateImageReg(STaskInfoVM *pVM, IEC_UINT uTasks)
{

  #if defined(RTS_CFG_FFO)

	if (g_uTasks != uTasks)
	{
		if (g_pImageReg != NULL)
		{
			IEC_UINT uRes = osFree((IEC_DATA **)&g_pImageReg);
			TR_RET(uRes);
			uRes++;
		}
	}

	g_uTasks = uTasks;

	if (g_pImageReg == NULL)
	{
		g_pImageReg = (SImageReg *)(osMalloc(sizeof(SImageReg) * uTasks));
		if (g_pImageReg == NULL)
		{
			TR_RET(ERR_OUT_OF_MEMORY);

			return NULL;
		}
	}
  #endif

	return g_pImageReg + pVM->usTask;
}
Пример #2
0
/**
 * tstFinalize
 *
 */
IEC_UINT tstFinalize(IEC_UINT uIOLayer, SIOConfig *pIO)
{
	IEC_UINT uRes = OK;
	
	uRes = tstFinalBus(uIOLayer);
	TR_RET(uRes);

  #if defined(RTS_CFG_SYSLOAD)
	uRes = ldClearTaskInfo(TASK_OFFS_IOL_TST);
	TR_RET(uRes);
  #endif

	g_bInitialized	= FALSE;
	g_bConfigured	= FALSE;
	g_bRunning		= FALSE;

	RETURN(uRes);
}
Пример #3
0
/**
 * tstInitialize
 *
 */
IEC_UINT tstInitialize(IEC_UINT uIOLayer)
{
	IEC_UINT uRes = OK;
	
  #if defined(RTS_CFG_SYSLOAD)
	uRes = ldWriteTaskInfo(TASK_OFFS_IOL_TST, osGetTaskID());
	TR_RET(uRes);
  #endif

	uRes = tstInitBus(uIOLayer);

	g_bInitialized	= (IEC_BOOL)(uRes == OK);
	g_bConfigured	= FALSE;
	g_bRunning		= FALSE;
	
	RETURN(uRes);
}