OSDN Git Service

(none)
authorryuz <ryuz>
Wed, 26 Mar 2008 15:46:52 +0000 (15:46 +0000)
committerryuz <ryuz>
Wed, 26 Mar 2008 15:46:52 +0000 (15:46 +0000)
aplfw/driver/serial/at91/at91usartdrv_open.c
aplfw/system/sysapi/sysprc_delete.c
kernel/source/object/tsk/acre_tsk.c
kernel/source/object/tsk/tcb2id.c

index 0a91608..46b3f9f 100755 (executable)
@@ -35,6 +35,7 @@ HANDLE At91UsartDrv_Open(C_DRVOBJ *pDrvObj, const char *pszPath, int iMode)
                AT91USART_REG_WRITE(self, AT91USART_US_BRGR, 0x00000034);
                AT91USART_REG_WRITE(self, AT91USART_US_MR,   0x000008c0);       /* 8bit, non-paroty */
                AT91USART_REG_WRITE(self, AT91USART_US_CR,   0x00000050);       /* enable */
+               AT91USART_REG_WRITE(self, AT91USART_US_IDR,  0x0000003f);       /* 割り込みマスク初期化 */
                AT91USART_REG_WRITE(self, AT91USART_US_IER,  0x00000001);       /* 受信割り込み許可 */          
                
                SysInt_Enable(self->iIntNum);
index 531849a..306a4e6 100755 (executable)
@@ -15,6 +15,7 @@
 void SysPrc_Delete(SYSPRC_HANDLE hPrc)
 {
        SysPrc_InfTbl[(ID)hPrc].Param = 0;
+       ter_tsk((ID)hPrc);
        del_tsk((ID)hPrc);
 }
 
index 99131d0..1fa6385 100755 (executable)
@@ -26,6 +26,8 @@ ER_ID acre_tsk(const T_CTSK *pk_ctsk)
        _KERNEL_ENTER_SVC();            /* %jp{サービスコールに入る}%en{enter service-call} */
        
        /* %jp{空きID探索} */
+#if _KERNEL_ACRE_TSK_ASCENDING ORDER
+       /* %jp{空きID昇順探索} */
        for ( tskid = _KERNEL_TSK_TMIN_ID; tskid <= _KERNEL_TSK_TMAX_ID; tskid++ )
        {
                if ( !_KERNEL_TSK_CHECK_EXS(tskid) )
@@ -33,11 +35,26 @@ ER_ID acre_tsk(const T_CTSK *pk_ctsk)
                        break;
                }
        }
-       if ( tskid > _KERNEL_TMAX_TSKID )
+       if ( tskid > _KERNEL_TSK_TMAX_ID )
        {
                _KERNEL_LEAVE_SVC();            /* %jp{サービスコールから出る}%en{leave service-call} */
                return E_NOID;                          /* %jp{ID番号不足} */
        }
+#else
+       /* %jp{空きID降順探索} */
+       for ( tskid = _KERNEL_TSK_TMAX_ID; tskid >= _KERNEL_TSK_TMIN_ID; tskid-- )
+       {
+               if ( !_KERNEL_TSK_CHECK_EXS(tskid) )
+               {
+                       break;
+               }
+       }
+       if ( tskid < _KERNEL_TSK_TMIN_ID )
+       {
+               _KERNEL_LEAVE_SVC();            /* %jp{サービスコールから出る}%en{leave service-call} */
+               return E_NOID;                          /* %jp{ID番号不足} */
+       }
+#endif
        
        /* %jp{タスク生成} */
        erid = (ER_ID)_kernel_cre_tsk(tskid, pk_ctsk);
index 2155416..282c0c2 100755 (executable)
@@ -22,7 +22,7 @@ ID _kernel_tsk_tcb2id(_KERNEL_T_TCB *pk_tcb)
        ID tskid;
        
        /* %jp{テーブルを検索} */
-       for ( tskid = _KERNEL_TMIN_TSKID; tskid <= _KERNEL_TMAX_TSKID; tskid++ )
+       for ( tskid = _KERNEL_TSK_TMIN_ID; tskid <= _KERNEL_TSK_TMAX_ID; tskid++ )
        {
                if ( _KERNEL_TSK_ID2TCB(tskid) == pk_tcb )
                {