INT32 _StartTask( UINT32 tid, INT32 mode, INT32 (CALLBACK* start_addr)(void*), void* targs )
{
#ifdef WIN32 /* For WIN32 */
#ifndef REENTRANT
if( (threadHdl = (HANDLE)_beginthreadex(
NULL,
ustack,
start_addr,
targs,
0,
&threadid
)) > 0 ) {
return NORMAL;
}
#else
if( (threadHdl = CreateThread(
(LPSECURITY_ATTRIBUTES)NULL,
ustack,
start_addr,
targs,
0,
&threadid
)) != NULL ) {
return NORMAL;
}
#endif /* REENTRANT End. */
else {
#ifdef _DEBUG
return _ErrorOut( GetLastError(), "_StartTask" );
#else
return GetLastError();
#endif
}
#else /* For pSOS */
INT32 sts;
UINT32 args[4];
args[0] = (UINT32)targs;
/* t_start
开始一个新任务。
*/
sts = t_start(
tid,
mode,
(void (*)())start_addr,
(ULONG*)args
);
#ifdef _DEBUG
if( sts ) {
_ErrorOut( sts, "_StartTask" );
}
#endif
return sts;
#endif /* WIN32 End. */
}
INT32 _RestartTask( UINT32 tid, void* targs )
{
#ifdef WIN32 /* For WIN32 */
return NORMAL;
#else /* For pSOS */
INT32 sts;
/*t_restart
重新起动一个任务。
*/
sts = t_restart(
tid,
(ULONG*)targs
);
#ifdef _DEBUG
if( sts ) {
return _ErrorOut( sts, "_RestartTask" );
}
#endif
return sts;
#endif /* WIN32 End. */
}
INT32 _SuspendTask( UINT32 tid )
{
#ifdef WIN32 /* For WIN32 */
INT32 pSuspendCount;
pSuspendCount = SuspendThread( threadHdl );
if( pSuspendCount == 0xFFFFFFFF ) {
#ifdef _DEBUG
return _ErrorOut( GetLastError(), "_SuspendTask" );
#else
return GetLastError();
#endif
}
return NORMAL;
#else /* For pSOS */
INT32 sts;
/*t_suspend
挂起一个任务。
*/
sts = t_suspend(
tid
);
#ifdef _DEBUG
if( sts ) {
return _ErrorOut( sts, "_SuspendTask" );
}
#endif
return sts;
#endif /* WIN32 End. */
}