2 * Hyper Operating System V4 Advance
7 * Copyright (C) 1998-2006 by Project HOS
8 * http://sourceforge.jp/projects/hos/
13 #include "core/core.h"
16 #if _KERNEL_SPT_RSM_TSK
22 _KERNEL_T_TSKHDL tskhdl;
24 _KERNEL_TSK_T_TSKSTAT tskstat;
25 _KERNEL_TSK_T_SUSCNT suscnt;
28 #if _KERNEL_SPT_SUS_TSK_E_ID
29 if ( !_KERNEL_TSK_CHECK_TSKID(tskid) )
31 return E_ID; /* %jp{不正ID番号} */
35 _KERNEL_ENTER_SVC(); /* %jp{enter service-call}%jp{サービスコールに入る} */
37 /* %jp{オブジェクト存在チェック} */
38 #ifdef _KERNEL_SPT_SUS_TSK_E_NOEXS
39 if ( _KERNEL_TSK_CHECK_EXS(tskid) )
41 _KERNEL_LEAVE_SVC(); /* %jp{leave service-call}%jp{サービスコールを出る} */
42 return E_NOEXS; /* %jp{オブジェクト未生成} */
47 tskhdl = _KERNEL_TSK_ID2TSKHDL(tskid);
49 /* %jp{コントロールブロック取得} */
50 tcb = _KERNEL_TSK_TSKHDL2TCB(tskhdl);
53 tskstat = _KERNEL_TSK_GET_TSKSTAT(tcb);
54 if ( !(tskstat & _KERNEL_TTS_SUS) )
56 _KERNEL_LEAVE_SVC(); /* %jp{leave service-call}%jp{サービスコールを出る} */
60 suscnt = _KERNEL_TSK_GET_SUSCNT(tcb);
63 _KERNEL_TSK_SET_SUSCNT(tcb, suscnt - 1);
67 _KERNEL_DSP_RSM_TSK(tskhdl); /* %jp{タスクの強制待ち解除} */
72 _KERNEL_LEAVE_SVC(); /* %jp{サービスコール終了} */
78 #else /* _KERNEL_SPT_RSM_TSK */
81 #if _KERNEL_SPT_RSM_TSK_E_NOSPT