#include "lan9000drv_local.h"
-/* 受信割り込み */
+/* 受信割込み */
void Lan9000Drv_Isr(VPARAM Param)
{
C_LAN9000DRV *self;
C_LAN9000HAL Lan9000Hal; /* ハードウェア制御クラス */
int iOpenCount; /* オープンカウンタ */
int iIntNum; /* 割込み番号 */
- SYSISR_HANDLE hIsr; /* 割り込みサービスハンドル */
+ SYSISR_HANDLE hIsr; /* 割込みサービスハンドル */
SYSMTX_HANDLE hMtx; /* 排他制御ミューテックス */
} C_LAN9000DRV;
break;
}
- /* 受信割り込みを許可する */
+ /* 受信割込みを許可する */
uhStatus = Lan9000Hal_GetInterruptStatus(&self->Lan9000Hal);
Lan9000Hal_SetInterruptMask(&self->Lan9000Hal, (uhStatus | LAN9000HAL_IMASK_RCVINT));
break;
}
- /* ブロッキングなら送信割り込み許可 */
+ /* ブロッキングなら送信割込み許可 */
uhStatus = Lan9000Hal_GetInterruptStatus(&self->Lan9000Hal);
Lan9000Hal_SetInterruptMask(&self->Lan9000Hal, (uhStatus | LAN9000HAL_IMASK_ALLOCINT));
#include "lan9118drv_local.h"
-/* 割り込み */
+/* 割込み */
void Lan9118Drv_Isr(VPARAM Param)
{
C_LAN9118DRV *self;
/* ミューテックス生成 */
self->hMtx = SysMtx_Create(SYSMTX_ATTR_NORMAL);
- /* 割り込み処理登録 */
+ /* 割込み処理登録 */
SysIsr_Create(iIntNum, Ne2000Drv_Isr, (VPARAM)self);
}
}
-/* 割り込み処理 */
+/* 割込み処理 */
void Ne2000Drv_Isr(VPARAM Param)
{
C_NE2000DRV *self;
#include "at91usartdrv_local.h"
-/* 受信割り込み */
+/* 受信割込み */
void At91UsartDrv_Isr(VPARAM Param)
{
C_AT91USARTDRV *self;
/* 送信 */
if ( uwCsr & 0x00000002 )
{
- /* 送信割り込み禁止 */
+ /* 送信割込み禁止 */
AT91USART_REG_WRITE(self, AT91USART_US_IDR, 0x00000002);
/* 書込みシグナルを発生 */
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); /* 受信割り込み許可 */
+ AT91USART_REG_WRITE(self, AT91USART_US_IDR, 0x0000003f); /* 割込みマスク初期化 */
+ AT91USART_REG_WRITE(self, AT91USART_US_IER, 0x00000001); /* 受信割込み許可 */
SysInt_Enable(self->iIntNum);
}
/* 送信可能かチェック */
while ( !(AT91USART_REG_READ(self, AT91USART_US_CSR) & 0x0002) )
{
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
AT91USART_REG_WRITE(self, AT91USART_US_IER, 0x00000002);
/* ブロッキングモードでなければ抜ける */
/* 送信 */
if ( (JELLYUART_REG_READ(self, JELLYUART_STATUS) & 0x02) )
{
- /* 送信割り込み禁止 */
+ /* 送信割込み禁止 */
SysInt_Disable(self->iIntNumTx);
/* 書込みシグナルを発生 */
/* 送信可能かチェック */
while ( !(JELLYUART_REG_READ(self, JELLYUART_STATUS) & 0x02) )
{
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
SysInt_Clear(self->iIntNumTx);
SysInt_Enable(self->iIntNumTx);
#include "mn103scdrv_local.h"
-/* 受信割り込み */
+/* 受信割込み */
void Mn103ScDrv_IsrRx(VPARAM Param)
{
C_MN103SCDRV *self;
self = (C_MN103SCDRV *)Param;
- /* 割り込み要因クリア */
+ /* 割込み要因クリア */
SysInt_Clear(self->iIntNumRx);
#include "mn103scdrv_local.h"
-/* 送信割り込み */
+/* 送信割込み */
void Mn103ScDrv_IsrTx(VPARAM Param)
{
C_MN103SCDRV *self;
self = (C_MN103SCDRV *)Param;
- /* 割り込み要因クリア */
+ /* 割込み要因クリア */
SysInt_Clear(self->iIntNumTx);
- /* 送信割り込みを禁止 */
+ /* 送信割込みを禁止 */
SysInt_Disable(self->iIntNumTx);
/* 書込みシグナルを発生 */
{
MN103SC_WRITE_CTR(self, 0xc083); /* 設定 */
- SysInt_Enable(self->iIntNumRx); /* 受信割り込みを許可 */
+ SysInt_Enable(self->iIntNumRx); /* 受信割込みを許可 */
}
return hFile;
/* 送信可能かチェック */
while ( (MN103SC_READ_STR(self) & 0x80 ) )
{
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
SysInt_Enable(self->iIntNumTx);
/* ブロッキングモードでなければ抜ける */
}
-/* 受信割り込み */
+/* 受信割込み */
void Mx1UartDrv_IsrRx(VPARAM Param)
{
C_MX1UARTDRV *self;
MX1UART_REG_WRITE(self, MX1UART_UBIR, 1152-1);
MX1UART_REG_WRITE(self, MX1UART_UBMR, 10000-1);
- /* 受信割り込み許可 */
+ /* 受信割込み許可 */
SysInt_Enable(self->iIntNum + 5);
}
while ( !(MX1UART_REG_READ(self, MX1UART_USR2) & 0x0008) )
{
#if 0
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
/* ブロッキングモードでなければ抜ける */
#include "pc16550drv_local.h"
-/* 割り込みサービスルーチン */
+/* 割込みサービスルーチン */
void Pc16550Drv_Isr(VPARAM Param)
{
C_PC16550DRV *self;
/* 送信 */
while ( Pc16550Hal_SendChar(&self->Pc16550Hal, c) < 0 )
{
- /* 送信割り込みを許可 */
+ /* 送信割込みを許可 */
Pc16550Hal_EnableInterrupt(&self->Pc16550Hal, PC16550HAL_IER_ERBFI | PC16550HAL_IER_ETBEI);
/* ブロッキングモードでなければ抜ける */
-/** %jp{割り込み許可} */
+/** %jp{割込み許可} */
void Pc16550Hal_EnableInterrupt(C_PC16550HAL *self, unsigned char flag)
{
PC16550HAL_WRITE_IER(self, flag);
/* バッファ生成 */
StreamBuf_Create(&self->StmBufRecv, iBufSize, pMem);
- /* 割り込み処理登録 */
+ /* 割込み処理登録 */
self->hIsrRxErr = SysIsr_Create(iIntNum + 0, SciDrv_IsrRxErr, (VPARAM)self);
self->hIsrRx = SysIsr_Create(iIntNum + 1, SciDrv_IsrRx, (VPARAM)self);
self->hIsrTx = SysIsr_Create(iIntNum + 2, SciDrv_IsrTx, (VPARAM)self);
-/* 受信エラー割り込み */
+/* 受信エラー割込み */
void SciDrv_IsrRecvErr(VPARAM Param)
{
SciDrv_IsrRecv(Param);
}
-/* 受信割り込み */
+/* 受信割込み */
void SciDrv_IsrRecv(VPARAM Param)
{
C_SCIDRV *self;
-/* 受信割り込み */
+/* 受信割込み */
void SciDrv_IsrRx(VPARAM Param)
{
C_SCIDRV *self;
-/* 受信エラー割り込み */
+/* 受信エラー割込み */
void SciDrv_IsrRxErr(VPARAM Param)
{
SciDrv_IsrRx(Param);
/* 送信 */
while ( SciHal_SendChar(&self->SciHal, c) < 0 )
{
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
SciHal_EnableInterrupt(&self->SciHal, SCIHAL_INT_TIE | SCIHAL_INT_RIE);
/* ブロッキングモードでなければ抜ける */
#define __HOS__renesas__scihal_h__
-#define SCIHAL_INT_TIE 0x80 /* 送信割り込み許可 */
-#define SCIHAL_INT_RIE 0x40 /* 受信割り込み許可 */
-#define SCIHAL_INT_TEIE 0x04 /* 受信割り込み許可 */
+#define SCIHAL_INT_TIE 0x80 /* 送信割込み許可 */
+#define SCIHAL_INT_RIE 0x40 /* 受信割込み許可 */
+#define SCIHAL_INT_TEIE 0x04 /* 受信割込み許可 */
/* SCI用ハードウェアアクセス層 */
void SciHal_Stop(C_SCIHAL *self); /**< %jp{SCIの停止} */
int SciHal_SendChar(C_SCIHAL *self, int c); /**< %jp{1文字送信} */
int SciHal_RecvChar(C_SCIHAL *self); /**< %jp{1文字受信} */
-void SciHal_EnableInterrupt(C_SCIHAL *self, unsigned char flag); /**< %jp{割り込み許可} */
+void SciHal_EnableInterrupt(C_SCIHAL *self, unsigned char flag); /**< %jp{割込み許可} */
#ifdef __cplusplus
}
-/** %jp{割り込み許可} */
+/** %jp{割込み許可} */
void SciHal_EnableInterrupt(C_SCIHAL *self, unsigned char flag)
{
unsigned char scr;
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = 2;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
- /* %jp{割り込み要因クリア} */
+ /* %jp{割込み要因クリア} */
*T0CLRI = 0;
/* %jp{タイムティック供給} */
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VPARAM Param)
{
- /* %jp{割り込み要因クリア} */
+ /* %jp{割込み要因クリア} */
*T0IR= 1;
/* %jp{タイムティック供給} */
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VPARAM Param)
{
SysInt_Clear(6);
#include "ostimer.h"
-#define OSTIMER_TIMER_INHNO 24 /**< %jp{割り込みハンドラ番号} */
+#define OSTIMER_TIMER_INHNO 24 /**< %jp{割込みハンドラ番号} */
#define REG_TIM16_TSTR ((volatile UB *)0xffffff60)
#define REG_TIM16_GRB0L ((volatile UB *)0xffffff6f)
-static void OsTimer_IrqHandler(VP_INT exinf); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(VP_INT exinf); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
#if 0
T_DINH dfinh;
- /* %jp{割り込みハンドラ定義} */
+ /* %jp{割込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
def_inh(OSTIMER_TIMER_INHNO, &dfinh);
#else
*REG_TIM16_TCR0 = 0x23; /* φ/8でカウント, GRAのコンペアマッチでクリア */
*REG_TIM16_TCNT0 = 0; /* カウンタクリア */
*REG_TIM16_GRA0 = 2500 - 1; /* 10 msec のインターバル(20MHz/8 = 2.5MHz) */
- *REG_TIM16_TISRA &= ~0x01; /* 割り込み要因クリア */
- *REG_TIM16_TISRA |= 0x10; /* 割り込み許可 */
+ *REG_TIM16_TISRA &= ~0x01; /* 割込み要因クリア */
+ *REG_TIM16_TISRA |= 0x10; /* 割込み許可 */
*REG_TIM16_TSTR |= 0x01; /* TCNT0動作開始 */
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(VP_INT exinf)
{
- /* 割り込み要因クリア */
- *REG_TIM16_TISRA &= ~0x01; /* 割り込み要因クリア */
+ /* 割込み要因クリア */
+ *REG_TIM16_TISRA &= ~0x01; /* 割込み要因クリア */
isig_tim();
}
/* 固有設定 */
/*************************/
*SYSCR &= ~0x08; /* UIビットを割込みマスクに使う */
- *IPRB |= 0x0e; /* SCI1の割り込み優先度を上げる */
+ *IPRB |= 0x0e; /* SCI1の割込み優先度を上げる */
/*************************/
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = 0;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
/* %jp{タイムティック供給} */
-static void OsTimer_IrqHandler(void); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(void); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(void)
{
isig_tim();
#define PERIPHERAL_CLOCK (24000000UL) /**< %jp{ペリフェラルクロック(24MHz)} */
-static void OsTimer_Isr(VPARAM Param); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_Isr(VPARAM Param); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
void OsTimer_Initialize(void)
{
- /* %jp{割り込みサービスルーチン登録} */
+ /* %jp{割込みサービスルーチン登録} */
SysIsr_Create(144, OsTimer_Isr, (VPARAM)0);
/* %jp{タイマ動作開始} */
*REG_CMT0_CMCSR = 0x0042; /* %jp{128分周に設定} */
*REG_CMT_CMSTR |= 0x0001; /* %jp{動作開始} */
- /* %jp{割り込み許可} */
+ /* %jp{割込み許可} */
*REG_INTC_IPRG = ((*REG_INTC_IPRG & 0xff0f) | 0x0010);
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VPARAM Param)
{
*REG_CMT0_CMCSR &= 0xff7f;
#define REG_INTC_IPRF ((volatile UH*)0xffff8352) /* インタラプトプライオリティレジスタF */
#define REG_INTC_IPRG ((volatile UH*)0xffff8354) /* インタラプトプライオリティレジスタG */
#define REG_INTC_IPRH ((volatile UH*)0xffff8356) /* インタラプトプライオリティレジスタH */
-#define REG_INTC_ICR1 ((volatile UH*)0xffff8358) /* 割り込みコントロールレジスタ1 */
+#define REG_INTC_ICR1 ((volatile UH*)0xffff8358) /* 割込みコントロールレジスタ1 */
#define REG_INTC_ISR ((volatile UH*)0xffff835a) /* IRQステータスレジスタ */
#define REG_INTC_IPRI ((volatile UH*)0xffff835c) /* インタラプトプライオリティレジスタI */
#define REG_INTC_IPRJ ((volatile UH*)0xffff835e) /* インタラプトプライオリティレジスタJ */
-#define REG_INTC_ICR2 ((volatile UH*)0xffff8366) /* 割り込みコントロールレジスタ2 */
+#define REG_INTC_ICR2 ((volatile UH*)0xffff8366) /* 割込みコントロールレジスタ2 */
/* I/O, PFC (port-A) */
#define REG_PA_DR ((volatile UW*)0xffff8380) /* ポートA データレジスタ(H/L) */
#include "system/sysapi/sysapi.h"
-#define OSTIMER_TIMER_INHNO 1 /**< %jp{割り込みハンドラ番号} */
+#define OSTIMER_TIMER_INHNO 1 /**< %jp{割込みハンドラ番号} */
-static void OsTimer_IrqHandler(VP_INT exinf); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(VP_INT exinf); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
#if 0
T_DINH dfinh;
- /* %jp{割り込みハンドラ定義} */
+ /* %jp{割込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
def_inh(OSTIMER_TIMER_INHNO, &dfinh);
#else
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(VP_INT exinf)
{
isig_tim();
#include "arch/proc/win/win32/proc.h"
-static DWORD WINAPI WinTimer_Thread(LPVOID param); /**< %jp{タイマ割り込み用スレッド関数} */
+static DWORD WINAPI WinTimer_Thread(LPVOID param); /**< %jp{タイマ割込み用スレッド関数} */
static HANDLE hEventTimer; /**< %jp{タイマハンドル} */
}
-/** %jp{タイマ割り込み用スレッド関数} */
+/** %jp{タイマ割込み用スレッド関数} */
DWORD WINAPI WinTimer_Thread(LPVOID param)
{
INHNO inhno;
/* %jp{タイマイベントを待つ} */
WaitForSingleObject(hEventTimer, INFINITE);
- /* %jp{割り込みシグナルを入れる} */
+ /* %jp{割込みシグナルを入れる} */
vsig_int(inhno);
}
}
C_MEMHEAP *SysMem_GetMemHeap(void); /**< メモリインターフェースの取得(システム用) */
-/* システム用割り込み制御API */
+/* システム用割込み制御API */
void SysInt_Enable(int iIntNum); /**< 割込み許可(システム用) */
void SysInt_Disable(int iIntNum); /**< 割込み禁止(システム用) */
void SysInt_Clear(int iIntNum); /**< 割込み要因クリア(システム用) */
void SysInt_SetIntTime(int iIntNum, SYSTIM_CPUTIME Time); /**< 割込み計測タイマを初期化 */
SYSTIM_CPUTIME SysInt_GetIntTime(int iIntNum); /**< 割込み計測タイマを取得 */
-/* 割り込みサービスルーチン制御API */
+/* 割込みサービスルーチン制御API */
SYSISR_HANDLE SysIsr_Create(int iIntNum, void (*pfncIsr)(VPARAM Param), VPARAM Param);
void SysIsr_Delete(SYSISR_HANDLE hIsr);
/* 送信 */
if ( 0 )
{
- /* 送信割り込み禁止 */
+ /* 送信割込み禁止 */
/* 書込みシグナルを発生 */
SyncDrv_SendSignal(&self->SyncDrv, SYNCDRV_FACTOR_WRITE);
{
/* ここでデバイスを初期化 */
- /* 割り込みを許可 */
+ /* 割込みを許可 */
SysInt_Enable(self->iIntNum);
}
/* 送信可能かチェック */
while ( !0 )
{
- /* 送信割り込み許可 */
+ /* 送信割込み許可 */
/* ブロッキングモードでなければ抜ける */
/* 送信 */
if ( 0 )
{
- /* 送信割り込み禁止 */
+ /* 送信割込み禁止 */
/* 書込みシグナルを発生 */
SyncDrv_SendSignal(&self->SyncDrv, SYNCDRV_FACTOR_WRITE);
{
/* ここでデバイスを初期化 */
- /* 割り込みを許可 */
+ /* 割込みを許可 */
SysInt_Enable(self->iIntNum);
}
$(OBJS_DIR)/kcre_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/kcre_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)/del_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/del_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)/loc_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/loc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
+$(OBJS_DIR)/ploc_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/ploc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)/tloc_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/tloc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)/unl_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/unl_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)/kadd_mtx.$(EXT_OBJ): $(MTXOBJ_DIR)/kadd_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
CSRCS += $(MTXOBJ_DIR)/kcre_mtx.c
CSRCS += $(MTXOBJ_DIR)/del_mtx.c
CSRCS += $(MTXOBJ_DIR)/loc_mtx.c
+CSRCS += $(MTXOBJ_DIR)/ploc_mtx.c
CSRCS += $(MTXOBJ_DIR)/tloc_mtx.c
CSRCS += $(MTXOBJ_DIR)/unl_mtx.c
CSRCS += $(MTXOBJ_DIR)/kadd_mtx.c
$(OBJS_DIR)\loc_mtx.c : $(MTXOBJ_DIR)\loc_mtx.c
$(CMD_CP) $(MTXOBJ_DIR)\loc_mtx.c $(OBJS_DIR)\
+$(OBJS_DIR)\ploc_mtx.c : $(MTXOBJ_DIR)\ploc_mtx.c
+ $(CMD_CP) $(MTXOBJ_DIR)\ploc_mtx.c $(OBJS_DIR)\
+
$(OBJS_DIR)\tloc_mtx.c : $(MTXOBJ_DIR)\tloc_mtx.c
$(CMD_CP) $(MTXOBJ_DIR)\tloc_mtx.c $(OBJS_DIR)\
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\kcre_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\del_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\loc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
+$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\ploc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\tloc_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\unl_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
$(OBJS_DIR)\exe_isr..$(EXT_OBJ): $(OBJS_DIR)\kadd_mtx.c $(COMMON_HEADERS) $(MTXOBJ_HEADERS)
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\kcre_mtx.c
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\del_mtx.c
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\loc_mtx.c
+CSRCS = $(CSRCS) $(MTXOBJ_DIR)\ploc_mtx.c
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\tloc_mtx.c
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\unl_mtx.c
CSRCS = $(CSRCS) $(MTXOBJ_DIR)\kadd_mtx.c
OBJS = $(OBJS) $(OBJS_DIR)\kcre_mtx.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\del_mtx.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\loc_mtx.$(EXT_OBJ)
+OBJS = $(OBJS) $(OBJS_DIR)\ploc_mtx.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\tloc_mtx.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\unl_mtx.$(EXT_OBJ)
OBJS = $(OBJS) $(OBJS_DIR)\kadd_mtx.$(EXT_OBJ)
"kcre_mtx.c",
"del_mtx.c",
"loc_mtx.c",
+ "ploc_mtx.c",
"tloc_mtx.c",
"unl_mtx.c",
"kadd_mtx.c",
>\r
</File>\r
<File\r
+ RelativePath="..\..\..\..\source\object\dtq\ipsnd_dt.c"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath="..\..\..\..\source\object\dtq\kcre_dtq.c"\r
>\r
</File>\r
>\r
</File>\r
<File\r
+ RelativePath="..\..\..\..\source\object\dtq\psnd_dtq.c"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath="..\..\..\..\source\object\dtq\rcv_dtq.c"\r
>\r
</File>\r
RelativePath="..\..\..\..\source\object\dtq\trcv_dtq.c"\r
>\r
</File>\r
+ <File\r
+ RelativePath="..\..\..\..\source\object\dtq\tsnd_dtq.c"\r
+ >\r
+ </File>\r
</Filter>\r
<Filter\r
Name="tsk"\r
>\r
</File>\r
<File\r
+ RelativePath="..\..\..\..\source\object\mtx\ploc_mtx.c"\r
+ >\r
+ </File>\r
+ <File\r
RelativePath="..\..\..\..\source\object\mtx\tloc_mtx.c"\r
>\r
</File>\r
#define _KERNEL_MN103S_MAKE_INTNO(group, factor) (((group) << 2) + ((factor) & 0x03))
-/* %jp{割り込みコントローラのレジスタ定義} */
+/* %jp{割込みコントローラのレジスタ定義} */
#define _KERNEL_MN103S_INTC_BASE 0x00008900
#define _KERNEL_MN103S_INTC_GICR(intno) ((volatile UH *)(0x00008900 + ((intno) & ~0x03)))
#define _KERNEL_MN103S_INTC_IAGR ((volatile UH *)(0x00008a00))
#endif
void _kernel_ini_irc(void); /* 割込みコントローラの初期化 */
-void _kernel_exe_irc(void); /* 割り込み処理の実施 */
+void _kernel_exe_irc(void); /* 割込み処理の実施 */
#ifdef __cplusplus
}
* Hyper Operating System V4 Advance
*
* @file irc.h
- * @brief %jp{割り込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
+ * @brief %jp{割込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
* Hyper Operating System V4 Advance
*
* @file ircatr.h
- * @brief %jp{割り込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
+ * @brief %jp{割込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
* Hyper Operating System V4 Advance
*
* @file irc.h
- * @brief %jp{割り込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
+ * @brief %jp{割込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
* %jp{割込みハンドラと割込みサービスルーチンが単純対応する場合}
*
* Copyright (C) 1998-2006 by Project HOS
* Hyper Operating System V4 Advance
*
* @file ircatr.h
- * @brief %jp{割り込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
+ * @brief %jp{割込みコントローラ固有属性定義}%jp{Interrupt controler attribute}
* %jp{割込みハンドラと割込みサービスルーチンが単純対応する場合}
*
* Copyright (C) 1998-2006 by Project HOS
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT FALSE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT FALSE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL__arch__proc__arm__arm_v4__proc_h__
-#define _KERNEL_IMSK_F 0x40 /**< %jp{FIQ割り込みマスクビット} */
-#define _KERNEL_IMSK_I 0x80 /**< %jp{IRQ割り込みマスクビット} */
+#define _KERNEL_IMSK_F 0x40 /**< %jp{FIQ割込みマスクビット} */
+#define _KERNEL_IMSK_I 0x80 /**< %jp{IRQ割込みマスクビット} */
-#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割り込みマスクレベル0(すべてマスク)} */
-#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割り込みマスクレベル1(FIQのみ許可)} */
-#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割り込みマスクレベル2(すべて許可)} */
+#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割込みマスクレベル0(すべてマスク)} */
+#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割込みマスクレベル1(FIQのみ許可)} */
+#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割込みマスクレベル2(すべて許可)} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
-#define _KERNEL_IMSK_F 0x40 /**< %jp{FIQ割り込みマスクビット} */
-#define _KERNEL_IMSK_I 0x80 /**< %jp{IRQ割り込みマスクビット} */
+#define _KERNEL_IMSK_F 0x40 /**< %jp{FIQ割込みマスクビット} */
+#define _KERNEL_IMSK_I 0x80 /**< %jp{IRQ割込みマスクビット} */
-#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割り込みマスクレベル0(すべてマスク)} */
-#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割り込みマスクレベル1(FIQのみ許可)} */
-#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割り込みマスクレベル2(すべて許可)} */
+#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割込みマスクレベル0(すべてマスク)} */
+#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割込みマスクレベル1(FIQのみ許可)} */
+#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割込みマスクレベル2(すべて許可)} */
#define _KERNEL_PROCATR_DEF_INTSTKSZ 256
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL__arch__proc__h8__h8300ha__proc_h__
-#define _KERNEL_IMSK_I 0x80 /**< %jp{割り込みマスクビット} */
-#define _KERNEL_IMSK_UI 0x40 /**< %jp{ユーザービット/割り込みマスクビット} */
+#define _KERNEL_IMSK_I 0x80 /**< %jp{割込みマスクビット} */
+#define _KERNEL_IMSK_UI 0x40 /**< %jp{ユーザービット/割込みマスクビット} */
-#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割り込みマスクレベル0(すべてマスク)} */
-#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割り込みマスクレベル1(高優先割込みのみ許可)} */
-#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割り込みマスクレベル2(すべて許可)} */
+#define _KERNEL_IMSK_LV0 0xc0 /**< %jp{割込みマスクレベル0(すべてマスク)} */
+#define _KERNEL_IMSK_LV1 0x80 /**< %jp{割込みマスクレベル1(高優先割込みのみ許可)} */
+#define _KERNEL_IMSK_LV2 0x00 /**< %jp{割込みマスクレベル2(すべて許可)} */
/** %jp{コンテキスト情報保存ブロック} */
extern "C" {
#endif
-void _kernel_ena_int(void); /**< %jp{割り込み許可} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成} */
void _kernel_del_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの削除} */
#define _KERNEL_INI_PRC() do {} while (0)
#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, exinf1, exinf2) \
_kernel_cre_ctx((pk_ctxcb), (isp), (entry), (exinf1), (exinf2))
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 12 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 63 /**< %jp{割込みハンドラ番号の最大値} */
void _kernel_ini_arc(void); /**< %jp{アーキテクチャ固有の初期化} */
-void _kernel_ena_int(void); /**< %jp{割り込み許可} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成} */
void _kernel_del_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの削除} */
#define _KERNEL_INI_PRC() do {} while (0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, exinf1, exinf2) \
_kernel_cre_ctx((pk_ctxcb), (isp), (entry), (exinf1), (exinf2))
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
void _kernel_ini_arc(void); /**< %jp{アーキテクチャ固有の初期化} */
-void _kernel_ena_int(void); /**< %jp{割り込み許可} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成} */
void _kernel_del_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの削除} */
#define _KERNEL_INI_PRC() do {} while (0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, exinf1, exinf2) \
_kernel_cre_ctx((pk_ctxcb), (isp), (entry), (exinf1), (exinf2))
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 32 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 255 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*32) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
void _kernel_ini_prc(void); /**< %jp{プロセッサ固有の初期化} */
-void _kernel_ena_int(void); /**< %jp{割り込み許可} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */
void _kernel_cre_ctx(UW par1, UW par2, _KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry); /**< %jp{実行コンテキストの作成} */
void _kernel_del_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの削除} */
#define _KERNEL_INI_PRC() _kernel_ini_prc() /**< %jp{プロセッサ固有の初期化} */
#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0) /**< %jp{割込み初期化} */
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \
_kernel_cre_ctx((UW)(par1), (UW)(par2), (pk_ctxcb), (isp), (entry))
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 0 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 1 /**< %jp{割込みハンドラ番号の最大値} */
extern "C" {
#endif
-void _kernel_ena_int(void); /**< %jp{割り込み許可}%en{Enable interrupt} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止}%en{Disable interrupt} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可}%en{Enable interrupt} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止}%en{Disable interrupt} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成}%en{Create execution context)} */
void _kernel_sta_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの開始}%en{Stert context)} */
#define _KERNEL_INI_PRC() do{}while(0) /**< %jp{プロセッサの初期化}%en{Initialize processor} */
#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可}%en{Enable interrupt} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止}%en{Disable interrupt} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可}%en{Enable interrupt} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止}%en{Disable interrupt} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \
_kernel_cre_ctx((pk_ctxcb), (isp), (entry), (par1), (par2)) /**< %jp{実行コンテキスト生成}%en{Create execution context)} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 64 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 255 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMAX_EXCNO 63 /**< %jp{CPU例外ハンドラ番号の最大値} */
#define _KERNEL_PROCATR_EXCSTK_NUM 0 /**< %jp{CPU例外処理用スタックは何本必要か?} */
-#define _KERNEL_PROCATR_INTSTK_NUM 1 /**< %jp{割り込みスタックは何本必要か?} */
+#define _KERNEL_PROCATR_INTSTK_NUM 1 /**< %jp{割込みスタックは何本必要か?} */
#define _KERNEL_PROCATR_SIGNED_INT 0 /**< %jp{符号付整数と符号無し整数のどちらが得意か?(符号付き:1, 符号無し:-1, 同じ:0)} */
#define _KERNEL_PROCATR_TBIT_INT 32 /**< %jp{プロセッサに最適な整数型のビット数} */
extern "C" {
#endif
-void _kernel_ena_int(void); /**< %jp{割り込み許可}%en{Enable interrupt} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止}%en{Disable interrupt} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可}%en{Enable interrupt} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止}%en{Disable interrupt} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *pk_ctxcb, VP isp, FP entry, VP_INT par1, VP_INT par2); /**< %jp{実行コンテキストの作成}%en{Create execution context)} */
void _kernel_sta_ctx(_KERNEL_T_CTXCB *pk_ctxcb); /**< %jp{実行コンテキストの開始}%en{Stert context)} */
#define _KERNEL_INI_PRC() do{}while(0) /**< %jp{プロセッサの初期化}%en{Initialize processor} */
#define _KERNEL_INI_INT(stksz, stk) do { _kernel_ictxcb.isp = (VB *)(stk) + (stksz); } while (0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可}%en{Enable interrupt} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止}%en{Disable interrupt} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可}%en{Enable interrupt} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止}%en{Disable interrupt} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)}%en{Wait for interrupt(sleep)} */
#define _KERNEL_CRE_CTX(pk_ctxcb, stksz, stk, isp, entry, par1, par2) \
_kernel_cre_ctx((pk_ctxcb), (isp), (entry), (par1), (par2)) /**< %jp{実行コンテキスト生成}%en{Create execution context)} */
#define _KERNEL_PROCATR_TMIN_STKSZ (4*16) /**< %jp{最低限必要なスタックサイズ(byte単位)} */
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT TRUE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 64 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 255 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_PROCATR_TMAX_EXCNO 63 /**< %jp{CPU例外ハンドラ番号の最大値} */
#define _KERNEL_PROCATR_EXCSTK_NUM 0 /**< %jp{CPU例外処理用スタックは何本必要か?} */
-#define _KERNEL_PROCATR_INTSTK_NUM 1 /**< %jp{割り込みスタックは何本必要か?} */
+#define _KERNEL_PROCATR_INTSTK_NUM 1 /**< %jp{割込みスタックは何本必要か?} */
#define _KERNEL_PROCATR_SIGNED_INT 0 /**< %jp{符号付整数と符号無し整数のどちらが得意か?(符号付き:1, 符号無し:-1, 同じ:0)} */
#define _KERNEL_PROCATR_TBIT_INT 32 /**< %jp{プロセッサに最適な整数型のビット数} */
void _kernel_ini_prc(void); /**< %jp{アーキテクチャ固有の初期化} */
-void _kernel_ena_int(void); /**< %jp{割り込み許可} */
-void _kernel_dis_int(void); /**< %jp{割り込み禁止} */
-void _kernel_wai_int(void); /**< %jp{割り込み待ち(アイドル時の処理)} */
+void _kernel_ena_int(void); /**< %jp{割込み許可} */
+void _kernel_dis_int(void); /**< %jp{割込み禁止} */
+void _kernel_wai_int(void); /**< %jp{割込み待ち(アイドル時の処理)} */
void _kernel_cre_ctx(_KERNEL_T_CTXCB *ctxcb, FP entry, VP_INT exinf1, VP_INT exinf2); /**< %jp{実行コンテキストの作成} */
void _kernel_del_ctx(_KERNEL_T_CTXCB *ctxcb); /**< %jp{実行コンテキストの削除} */
#define _KERNEL_INI_PRC() _kernel_ini_prc()
#define _KERNEL_INI_INT(stksz, stk) do {} while(0)
-#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割り込み許可} */
-#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割り込み禁止} */
-#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割り込み待ち(アイドル時の処理)} */
+#define _KERNEL_ENA_INT() _kernel_ena_int() /**< %jp{割込み許可} */
+#define _KERNEL_DIS_INT() _kernel_dis_int() /**< %jp{割込み禁止} */
+#define _KERNEL_WAI_INT() _kernel_wai_int() /**< %jp{割込み待ち(アイドル時の処理)} */
#define _KERNEL_CRE_CTX(ctxcb, stksz, stk, isp, entry, par1, par2) \
#define _KERNEL_PROCATR_DEF_INTSTKSZ 256
#define _KERNEL_PROCATR_SPT_SMP FALSE /**< %jp{SMPに対応しているか?} */
-#define _KERNEL_PROCATR_SPT_MULTINT FALSE /**< %jp{多重割り込みに対応しているか?} */
+#define _KERNEL_PROCATR_SPT_MULTINT FALSE /**< %jp{多重割込みに対応しているか?} */
#define _KERNEL_PROCATR_TMIN_INHNO 1 /**< %jp{割込みハンドラ番号の最小値} */
#define _KERNEL_PROCATR_TMAX_INHNO 256 /**< %jp{割込みハンドラ番号の最大値} */
#define _KERNEL_CFG_TWAI_SEM_E_ID TRUE
#define _KERNEL_CFG_TWAI_SEM_E_CTX TRUE
#define _KERNEL_CFG_TWAI_SEM_E_NOEXS TRUE
-#define _KERNEL_CFG_TWAI_SEM_E_TMOUT TRUE
+#define _KERNEL_CFG_TWAI_SEM_E_PAR TRUE
#define _KERNEL_CFG_TWAI_SEM_E_RLWAI TRUE
+#define _KERNEL_CFG_TWAI_SEM_E_TMOUT TRUE
#define _KERNEL_CFG_TWAI_SEM_E_DLT TRUE
#define _KERNEL_CFG_TWAI_SEM_E_NOSPT FALSE
#define _KERNEL_CFG_TWAI_FLG_E_NOEXS TRUE
#define _KERNEL_CFG_TWAI_FLG_E_PAR TRUE
#define _KERNEL_CFG_TWAI_FLG_E_ILUSE TRUE
-#define _KERNEL_CFG_TWAI_FLG_E_TMOUT TRUE
#define _KERNEL_CFG_TWAI_FLG_E_RLWAI TRUE
+#define _KERNEL_CFG_TWAI_FLG_E_TMOUT TRUE
#define _KERNEL_CFG_TWAI_FLG_E_DLT TRUE
#define _KERNEL_CFG_TWAI_FLG_E_NOSPT FALSE
#define _KERNEL_CFG_DEL_DTQ_E_NOSPT FALSE
/* snd_dtq */
-#define _KERNEL_CFG_SND_DTQ_E_CTX TRUE
#define _KERNEL_CFG_SND_DTQ_E_ID TRUE
+#define _KERNEL_CFG_SND_DTQ_E_CTX TRUE
#define _KERNEL_CFG_SND_DTQ_E_NOEXS TRUE
#define _KERNEL_CFG_SND_DTQ_E_NOSPT FALSE
+/* psnd_dtq */
+#define _KERNEL_CFG_PSND_DTQ_E_ID TRUE
+#define _KERNEL_CFG_PSND_DTQ_E_NOEXS TRUE
+#define _KERNEL_CFG_PSND_DTQ_E_TMOUT TRUE
+#define _KERNEL_CFG_PSND_DTQ_E_NOSPT FALSE
+
/* ipsnd_dtq */
+#define _KERNEL_CFG_IPSND_DTQ_E_ID TRUE
+#define _KERNEL_CFG_IPSND_DTQ_E_CTX TRUE
+#define _KERNEL_CFG_IPSND_DTQ_E_NOEXS TRUE
+#define _KERNEL_CFG_IPSND_DTQ_E_TMOUT TRUE
+#define _KERNEL_CFG_IPSND_DTQ_E_NOSPT FALSE
+
/* tsnd_dtq */
+#define _KERNEL_CFG_TSND_DTQ_E_ID TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_CTX TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_NOEXS TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_PAR TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_RLWAI TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_TMOUT TRUE
+#define _KERNEL_CFG_TSND_DTQ_E_NOSPT FALSE
+
/* fsnd_dtq */
#define _KERNEL_CFG_FSND_DTQ_E_ID TRUE
#define _KERNEL_CFG_FSND_DTQ_E_NOEXS TRUE
/* ifsnd_dtq */
+
/* rcv_dtq */
#define _KERNEL_CFG_RCV_DTQ_E_CTX TRUE
#define _KERNEL_CFG_RCV_DTQ_E_ID TRUE
#define _KERNEL_CFG_TLOC_MTX_E_ID TRUE
#define _KERNEL_CFG_TLOC_MTX_E_CTX TRUE
#define _KERNEL_CFG_TLOC_MTX_E_NOEXS TRUE
+#define _KERNEL_CFG_TLOC_MTX_E_PAR TRUE
#define _KERNEL_CFG_TLOC_MTX_E_ILUSE TRUE
-#define _KERNEL_CFG_TLOC_MTX_E_TMOUT TRUE
#define _KERNEL_CFG_TLOC_MTX_E_RLWAI TRUE
+#define _KERNEL_CFG_TLOC_MTX_E_TMOUT TRUE
#define _KERNEL_CFG_TLOC_MTX_E_DLT TRUE
#define _KERNEL_CFG_TLOC_MTX_E_NOSPT FALSE
#define _KERNEL_CFG_TMAX_CYCID 127 /**< %jp{周期ハンドラIDの最大値} */
#define _KERNEL_CFG_TMAX_ALMID 127 /**< %jp{アラームハンドラIDの最大値} */
#define _KERNEL_CFG_TMAX_OVRID 127 /**< %jp{オーバーランハンドラIDの最大値} */
-#define _KERNEL_CFG_TMAX_ISRID 127 /**< %jp{割り込みサービスルーチンIDの最大値} */
+#define _KERNEL_CFG_TMAX_ISRID 127 /**< %jp{割込みサービスルーチンIDの最大値} */
/* %jp{コンフィギュレータ未指定時デフォルト最大ID値} */
#define _KERNEL_CFG_DEF_TMAX_TSKID 15 /**< %jp{タスクIDの最大値} */
#define _KERNEL_CFG_DEF_TMAX_CYCID 15 /**< %jp{周期ハンドラIDの最大値} */
#define _KERNEL_CFG_DEF_TMAX_ALMID 15 /**< %jp{アラームハンドラIDの最大値} */
#define _KERNEL_CFG_DEF_TMAX_OVRID 15 /**< %jp{オーバーランハンドラIDの最大値} */
-#define _KERNEL_CFG_DEF_TMAX_ISRID 15 /**< %jp{割り込みサービスルーチンIDの最大値} */
+#define _KERNEL_CFG_DEF_TMAX_ISRID 15 /**< %jp{割込みサービスルーチンIDの最大値} */
/* %jp{ミューテックスハンドルをIDで管理(省メモリだが低速)にするかどうか [未実装]} */
#define _KERNEL_CFG_MTXHDL_ID TRUE
-/* %jp{割り込みサービスルーチンハンドルをIDで管理(省メモリだが低速)にするかどうか} */
+/* %jp{割込みサービスルーチンハンドルをIDで管理(省メモリだが低速)にするかどうか} */
#define _KERNEL_CFG_ISRHDL_ID FALSE
#define _KERNEL_CFG_ACRE_DTQ TRUE /* acre_dtq */
#define _KERNEL_CFG_DEL_DTQ TRUE /* del_dtq */
#define _KERNEL_CFG_SND_DTQ TRUE /* snd_dtq */
-#define _KERNEL_CFG_IPSND_DT TRUE /* ipsnd_dtq */
+#define _KERNEL_CFG_PSND_DTQ TRUE /* psnd_dtq */
+#define _KERNEL_CFG_IPSND_DTQ TRUE /* ipsnd_dtq */
#define _KERNEL_CFG_TSND_DTQ TRUE /* tsnd_dtq */
#define _KERNEL_CFG_FSND_DTQ TRUE /* fsnd_dtq */
#define _KERNEL_CFG_IFSND_DT TRUE /* ifsnd_dtq */
* @file adtq.h
* @brief %jp{非同期データキューヘッダファイル}%en{Asynchronous Data Queue header file}
*
- * %jp{送信側、及び、受信側でロック(割り込み禁止など)を利用しなくても成立するキュー}
+ * %jp{送信側、及び、受信側でロック(割込み禁止など)を利用しなくても成立するキュー}
* %jp{データ領域が1つ無駄になるのでメモリ効率で若干不利}
* %jp{DPC向けだが、将来DTQとの共用も可能なように切り出しておく}
*
/* %jp{システムの状態} */
#define _KERNEL_TSS_TSK 0x00 /**< %jp{タスク部実行中} */
-#define _KERNEL_TSS_LOC 0x01 /**< %jp{割り込み禁止(loc_cpu 有効)} */
+#define _KERNEL_TSS_LOC 0x01 /**< %jp{割込み禁止(loc_cpu 有効)} */
#define _KERNEL_TSS_DSP 0x02 /**< %jp{ディスパッチ禁止 (dis_dsp 有効)} */
#define _KERNEL_TSS_CTX 0x04 /**< %jp{タスク独立部実行中} */
#define _KERNEL_TSS_SYS 0x08 /**< %jp{システムモード} */
_KERNEL_T_CTXCB sysctxcb; /**< %jp{システムコンテキスト(アイドル実行等)のコンテキスト} */
SIZE sysstksz; /**< %jp{システムコンテキストのスタックサイズ} */
VP sysstk; /**< %jp{システムコンテキストのスタック} */
- SIZE intstksz; /**< %jp{割り込みコンテキストのスタックサイズ} */
- VP intstk; /**< %jp{割り込みコンテキストのスタック} */
+ SIZE intstksz; /**< %jp{割込みコンテキストのスタックサイズ} */
+ VP intstk; /**< %jp{割込みコンテキストのスタック} */
} _KERNEL_T_PROCCB;
ER ref_flg(ID flgid, T_RFLG *pk_rflg); /**< %jp{イベントフラグの状態参照}%en{Reference Eventflag State} */
/* %jp{データキュー}%en{Data queue} */
-#define _kernel_ini_dtq() /**< %jp{データキューの初期化} */
ER cre_dtq(ID dtqid, const T_CDTQ *pk_cdtq); /**< %jp{データキューの生成} */
ER_ID acre_dtq(const T_CDTQ *pk_cdtq); /**< %jp{データキューの生成(ID番号自動割付け)} */
ER kernel_cre_dtq(ID dtqid, const T_CDTQ *pk_cdtq); /**< %jp{データキューの生成(カーネル内部関数)} */
ER del_dtq(ID dtqid); /**< %jp{データキューの削除} */
ER snd_dtq(ID dtqid, VP_INT data); /**< %jp{データキューへの送信} */
ER psnd_dtq(ID dtqid, VP_INT data); /**< %jp{データキューへの送信(ポーリング)} */
-#define ipsnd_dtq psnd_dtq /**< %jp{データキューへの送信(ポーリング 非タスクコンテキスト用マクロ)} */
+ER ipsnd_dtq(ID dtqid, VP_INT data); /**< %jp{データキューへの送信(ポーリング 非タスクコンテキスト用)} */
ER tsnd_dtq(ID dtqid, VP_INT data, TMO tmout); /**< %jp{データキューへの送信(タイムアウトあり)} */
ER fsnd_dtq(ID dtqid, VP_INT data); /**< %jp{データキューへの強制送信} */
#define ifsnd_dtq fsnd_dtq /**< %jp{データキューへの強制送信(非タスクコンテキスト用マクロ)} */
ER def_inh(INHNO inhno, const T_DINH *pk_dinh);
-ER cre_isr(ID isrid, const T_CISR *pk_cisr); /**< %jp{割り込みサービスルーチンの生成} */
-ER_ID acre_isr(const T_CISR *pk_cisr); /**< %jp{割り込みサービスルーチンの生成(ID番号自動割付け)} */
-ER del_isr(ID isrid); /**< %jp{割り込みサービスルーチンの削除} */
-
-
-ER dis_int(INTNO intno); /**< %jp{割り込みの禁止} */
-ER ena_int(INTNO intno); /**< %jp{割り込みの許可} */
-ER vclr_int(INTNO intno); /**< %jp{割り込み要因のクリア(独自サービスコール)} */
-ER chg_imsk(INT imsk); /**< %jp{割り込みマスクの変更(実装依存サービスコール)} */
-ER get_imsk(INT *p_imsk); /**< %jp{割り込みマスクの参照(実装依存サービスコール)} */
-ER vchg_ilv(INTNO intno, INT ilv); /**< %jp{割り込みレベル変更(独自サービスコール)} */
-ER vget_ilv(INTNO intno, INT *p_ilv); /**< %jp{割り込みレベル参照(独自サービスコール)} */
+ER cre_isr(ID isrid, const T_CISR *pk_cisr); /**< %jp{割込みサービスルーチンの生成} */
+ER_ID acre_isr(const T_CISR *pk_cisr); /**< %jp{割込みサービスルーチンの生成(ID番号自動割付け)} */
+ER del_isr(ID isrid); /**< %jp{割込みサービスルーチンの削除} */
+
+
+ER dis_int(INTNO intno); /**< %jp{割込みの禁止} */
+ER ena_int(INTNO intno); /**< %jp{割込みの許可} */
+ER vclr_int(INTNO intno); /**< %jp{割込み要因のクリア(独自サービスコール)} */
+ER chg_imsk(INT imsk); /**< %jp{割込みマスクの変更(実装依存サービスコール)} */
+ER get_imsk(INT *p_imsk); /**< %jp{割込みマスクの参照(実装依存サービスコール)} */
+ER vchg_ilv(INTNO intno, INT ilv); /**< %jp{割込みレベル変更(独自サービスコール)} */
+ER vget_ilv(INTNO intno, INT *p_ilv); /**< %jp{割込みレベル参照(独自サービスコール)} */
/* %jp{システム構成管理機能} */
* @file dtqobj.h
* @brief %jp{データキュージェクトのヘッダファイル}%en{Data queue object heder file}
*
- * Copyright (C) 1998-2006 by Project HOS
+ * Copyright (C) 1998-2009 by Project HOS
* http://sourceforge.jp/projects/hos/
*/
* Hyper Operating System V4 Advance
*
* @file inhobj.h
- * @brief %jp{割り込み制御のヘッダファイル}%en{interrupt control heder file}
+ * @brief %jp{割込み制御のヘッダファイル}%en{interrupt control heder file}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
extern const _KERNEL_T_INTINF _kernel_int_tbl[];
#endif
-extern const INTNO _kernel_min_intno; /**< %jp{割り込み番号の最小値} */
-extern const INTNO _kernel_max_intno; /**< %jp{割り込み番号の最大値} */
+extern const INTNO _kernel_min_intno; /**< %jp{割込み番号の最小値} */
+extern const INTNO _kernel_max_intno; /**< %jp{割込み番号の最大値} */
#define _KERNEL_INT_TMIN_INTNO (_kernel_min_intno)
#define _KERNEL_INT_TMAX_INTNO (_kernel_max_intno)
typedef VP_INT _KERNEL_ISRCB_T_EXINF;
#define _KERNEL_ISRCB_TBITDEF_EXINF
-/* %jp{割り込みサービスルーチンの開始番地の型} */
+/* %jp{割込みサービスルーチンの開始番地の型} */
typedef void (*_KERNEL_ISR_T_ISR)(VP_INT exinf);
typedef void (*_KERNEL_ISRCB_T_ISR)(VP_INT exinf);
#define _KERNEL_ISRCB_TBITDEF_ISR
#if _KERNEL_ISRCB_SPLIT_RO
/* %jp{ブロック配列管理でRO分離の場合}%en{block array} */
-extern _KERNEL_T_ISRCB _kernel_isrcb_tbl[]; /**< %jp{割り込みサービスルーチンコントロールブロックテーブル} */
-extern const _KERNEL_T_ISRCB_RO _kernel_isrcb_ro_tbl[]; /**< %jp{割り込みサービスルーチンコントロールブロック(リードオンリー部)テーブル} */
+extern _KERNEL_T_ISRCB _kernel_isrcb_tbl[]; /**< %jp{割込みサービスルーチンコントロールブロックテーブル} */
+extern const _KERNEL_T_ISRCB_RO _kernel_isrcb_ro_tbl[]; /**< %jp{割込みサービスルーチンコントロールブロック(リードオンリー部)テーブル} */
#define _KERNEL_ISR_ID2ISRCB(isrid) (&_kernel_isrcb_tbl[(isrid) - _KERNEL_ISR_TMIN_ID]) /**< %jp{コントロールブロックの取得} */
#define _KERNEL_ISR_CHECK_EXS(isrid) (_kernel_isrcb_ro_tbl[(isrid) - _KERNEL_ISR_TMIN_ID].isr != NULL)
/**< %jp{オブジェクトの存在チェック} */
#else
/* %jp{ブロック配列管理の場合}%en{block array} */
-extern _KERNEL_T_ISRCB _kernel_isrcb_tbl[]; /**< %jp{割り込みサービスルーチンコントロールブロックテーブル} */
+extern _KERNEL_T_ISRCB _kernel_isrcb_tbl[]; /**< %jp{割込みサービスルーチンコントロールブロックテーブル} */
#define _KERNEL_ISR_ID2ISRCB(isrid) (&_kernel_isrcb_tbl[(isrid) - _KERNEL_ISR_TMIN_ID]) /**< %jp{コントロールブロックの取得} */
#define _KERNEL_ISR_CHECK_EXS(isrid) (_kernel_isrcb_tbl[(isrid) - _KERNEL_ISR_TMIN_ID].isr != NULL)
/**< %jp{オブジェクトの存在チェック} */
#elif _KERNEL_ISRCB_ALGORITHM == _KERNEL_ISRCB_ALG_PTRARRAY
/* %jp{ポインタ配列管理の場合}%en{pointer array} */
-extern _KERNEL_T_ISRCB *_kernel_isrcb_tbl[]; /**< %jp{割り込みサービスルーチンコントロールブロックテーブル} */
-#define _KERNEL_ISR_ID2ISRCB(isrid) (_kernel_isrcb_tbl[(isrid) - _KERNEL_ISR_TMIN_ID]) /**< %jp{割り込みサービスルーチンIDからISRCB アドレスを取得} */
+extern _KERNEL_T_ISRCB *_kernel_isrcb_tbl[]; /**< %jp{割込みサービスルーチンコントロールブロックテーブル} */
+#define _KERNEL_ISR_ID2ISRCB(isrid) (_kernel_isrcb_tbl[(isrid) - _KERNEL_ISR_TMIN_ID]) /**< %jp{割込みサービスルーチンIDからISRCB アドレスを取得} */
#define _KERNEL_ISR_CHECK_EXS(isrid) (_KERNEL_ISR_ID2ISRCB(isrid) != NULL) /**< %jp{オブジェクトの存在チェック} */
#endif
#define _KERNEL_SPT_TWAI_SEM_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_TWAI_SEM_E_ID)
#define _KERNEL_SPT_TWAI_SEM_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_TWAI_SEM_E_CTX)
#define _KERNEL_SPT_TWAI_SEM_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_TWAI_SEM_E_NOEXS)
-#define _KERNEL_SPT_TWAI_SEM_E_TMOUT _KERNEL_SPT_E_TMOUT (_KERNEL_CFG_TWAI_SEM_E_TMOUT)
+#define _KERNEL_SPT_TWAI_SEM_E_PAR _KERNEL_SPT_E_PAR (_KERNEL_CFG_TWAI_SEM_E_PAR)
#define _KERNEL_SPT_TWAI_SEM_E_RLWAI _KERNEL_SPT_E_RLWAI (_KERNEL_CFG_TWAI_SEM_E_RLWAI)
+#define _KERNEL_SPT_TWAI_SEM_E_TMOUT _KERNEL_SPT_E_TMOUT (_KERNEL_CFG_TWAI_SEM_E_TMOUT)
#define _KERNEL_SPT_TWAI_SEM_E_DLT _KERNEL_SPT_E_DLT (_KERNEL_CFG_TWAI_SEM_E_DLT)
#define _KERNEL_SPT_TWAI_SEM_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_TWAI_SEM_E_NOSPT)
#define _KERNEL_SPT_DEL_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_DEL_DTQ_E_NOEXS)
#define _KERNEL_SPT_DEL_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_DEL_DTQ_E_NOSPT)
-
/* snd_dtq */
-#define _KERNEL_SPT_SND_DTQ_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_SND_DTQ_E_CTX)
#define _KERNEL_SPT_SND_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_SND_DTQ_E_ID)
+#define _KERNEL_SPT_SND_DTQ_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_SND_DTQ_E_CTX)
#define _KERNEL_SPT_SND_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_SND_DTQ_E_NOEXS)
#define _KERNEL_SPT_SND_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_SND_DTQ_E_NOSPT)
/* ipsnd_dtq */
+#define _KERNEL_SPT_IPSND_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_IPSND_DTQ_E_ID)
+#define _KERNEL_SPT_IPSND_DTQ_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_IPSND_DTQ_E_CTX)
+#define _KERNEL_SPT_IPSND_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_IPSND_DTQ_E_NOEXS)
+#define _KERNEL_SPT_IPSND_DTQ_E_TMOUT _KERNEL_SPT_E_TMOUT (_KERNEL_CFG_IPSND_DTQ_E_TMOUT)
+#define _KERNEL_SPT_IPSND_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_IPSND_DTQ_E_NOSPT)
+
/* tsnd_dtq */
+#if _KERNEL_OPT_CODE_SIZE <= _KERNEL_OPT_SPEED /* %jp{tsnd_dtqへの集約を行う場合} */
+#define _KERNEL_SPT_TSND_DTQ_E_ID (_KERNEL_CFG_TSND_DTQ_E_ID || _KERNEL_CFG_SND_DTQ_E_ID || _KERNEL_CFG_POL_FLG_E_ID)
+#define _KERNEL_SPT_TSND_DTQ_E_CTX (_KERNEL_CFG_TSND_DTQ_E_CTX || _KERNEL_CFG_SND_DTQ_E_CTX)
+#define _KERNEL_SPT_TSND_DTQ_E_NOEXS (_KERNEL_CFG_TSND_DTQ_E_NOEXS || _KERNEL_CFG_SND_DTQ_E_NOEXS || _KERNEL_CFG_POL_FLG_E_NOEXS)
+#define _KERNEL_SPT_TSND_DTQ_E_PAR (_KERNEL_CFG_TSND_DTQ_E_PAR || _KERNEL_CFG_SND_DTQ_E_PAR || _KERNEL_CFG_POL_FLG_E_PAR)
+#define _KERNEL_SPT_TSND_DTQ_E_ILUSE (_KERNEL_CFG_TSND_DTQ_E_ILUSE || _KERNEL_CFG_SND_DTQ_E_ILUSE)
+#define _KERNEL_SPT_TSND_DTQ_E_TMOUT (_KERNEL_CFG_TSND_DTQ_E_TMOUT || _KERNEL_CFG_POL_FLG_E_TMOUT)
+#define _KERNEL_SPT_TSND_DTQ_E_RLWAI (_KERNEL_CFG_TSND_DTQ_E_RLWAI || _KERNEL_CFG_SND_DTQ_E_RLWAI)
+#define _KERNEL_SPT_TSND_DTQ_E_DLT (_KERNEL_CFG_TSND_DTQ_E_DLT || _KERNEL_CFG_SND_DTQ_E_DLT)
+#define _KERNEL_SPT_TSND_DTQ_E_NOSPT _KERNEL_CFG_TSND_DTQ_E_NOSPT
+#else
+#define _KERNEL_SPT_TSND_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_TSND_DTQ_E_ID)
+#define _KERNEL_SPT_TSND_DTQ_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_TSND_DTQ_E_CTX)
+#define _KERNEL_SPT_TSND_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_TSND_DTQ_E_NOEXS)
+#define _KERNEL_SPT_TSND_DTQ_E_PAR _KERNEL_SPT_E_PAR (_KERNEL_CFG_TSND_DTQ_E_PAR)
+#define _KERNEL_SPT_TSND_DTQ_E_ILUSE _KERNEL_SPT_E_ILUSE (_KERNEL_CFG_TSND_DTQ_E_ILUSE)
+#define _KERNEL_SPT_TSND_DTQ_E_TMOUT _KERNEL_SPT_E_TMOUT (_KERNEL_CFG_TSND_DTQ_E_TMOUT)
+#define _KERNEL_SPT_TSND_DTQ_E_RLWAI _KERNEL_SPT_E_RLWAI (_KERNEL_CFG_TSND_DTQ_E_RLWAI)
+#define _KERNEL_SPT_TSND_DTQ_E_DLT _KERNEL_SPT_E_DLT (_KERNEL_CFG_TSND_DTQ_E_DLT)
+#define _KERNEL_SPT_TSND_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_TSND_DTQ_E_NOSPT)
+#endif
+
/* fsnd_dtq */
#define _KERNEL_SPT_FSND_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_FSND_DTQ_E_ID)
#define _KERNEL_SPT_FSND_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_FSND_DTQ_E_NOEXS)
#define _KERNEL_SPT_FSND_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_FSND_DTQ_E_NOSPT)
/* ifsnd_dtq */
+#define _KERNEL_SPT_IFSND_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_IFSND_DTQ_E_ID)
+#define _KERNEL_SPT_IFSND_DTQ_E_NOEXS _KERNEL_SPT_E_NOEXS (_KERNEL_CFG_IFSND_DTQ_E_NOEXS)
+#define _KERNEL_SPT_IFSND_DTQ_E_ILUSE _KERNEL_SPT_E_ILUSE (_KERNEL_CFG_IFSND_DTQ_E_ILUSE)
+#define _KERNEL_SPT_IFSND_DTQ_E_NOSPT _KERNEL_SPT_E_NOSPT (_KERNEL_CFG_IFSND_DTQ_E_NOSPT)
+
/* rcv_dtq */
#define _KERNEL_SPT_RCV_DTQ_E_CTX _KERNEL_SPT_E_CTX (_KERNEL_CFG_RCV_DTQ_E_CTX)
#define _KERNEL_SPT_RCV_DTQ_E_ID _KERNEL_SPT_E_ID (_KERNEL_CFG_RCV_DTQ_E_ID)
/* Processor Attribute */
/* ------------------------------------------------------------------ */
-/* 割り込み用スタックの本数 */
+/* 割込み用スタックの本数 */
#ifndef _KERNEL_PROCATR_INTSTK_NUM
#define _KERNE_INTSTK_NUM 1
#else
/* %jp{対称型マルチプロセッサ対応(きっと永遠に未実装)} */
#define _KERNEL_SPT_SMP _KERNEL_CFG_SMP /**< Symmetric Multiple Processor */
-/* %jp{多重割り込み} */
+/* %jp{多重割込み} */
#define _KERNEL_SPT_MULTIPLE_INT _KERNEL_CFG_MULTIPLE_INT
#define _KERNEL_SPT_ACRE_DTQ _KERNEL_CFG_ACRE_DTQ /* acre_dtq */
#define _KERNEL_SPT_DEL_DTQ _KERNEL_CFG_DEL_DTQ /* del_dtq */
#define _KERNEL_SPT_SND_DTQ _KERNEL_CFG_SND_DTQ /* snd_dtq */
-#define _KERNEL_SPT_IPSND_DT _KERNEL_CFG_IPSND_DT /* ipsnd_dtq */
+#define _KERNEL_SPT_PSND_DTQ _KERNEL_CFG_PSND_DTQ /* psnd_dtq */
+#define _KERNEL_SPT_IPSND_DTQ _KERNEL_CFG_IPSND_DTQ /* ipsnd_dtq */
#define _KERNEL_SPT_TSND_DTQ _KERNEL_CFG_TSND_DTQ /* tsnd_dtq */
#define _KERNEL_SPT_FSND_DTQ _KERNEL_CFG_FSND_DTQ /* fsnd_dtq */
#define _KERNEL_SPT_IFSND_DT _KERNEL_CFG_IFSND_DT /* ifsnd_dtq */
#define _KERNEL_SPT_TRCV_DTQ _KERNEL_CFG_TRCV_DTQ /* trcv_dtq */
#define _KERNEL_SPT_REF_DTQ _KERNEL_CFG_REF_DTQ /* ref_dtq */
+#if _KERNEL_SPT_TSND_DTQ || (_KERNEL_SPT_SND_DTQ && _KERNEL_SPT_PSND_DTQ)
+#define _KERNEL_SPT_KSND_DTQ TRUE
+#else
+#define _KERNEL_SPT_KSND_DTQ FALSE
+#endif
+
+
/* Mailboxes */
#define _KERNEL_SPT_CRE_MBX _KERNEL_CFG_CRE_MBX /* cre_mbx */
#define _KERNEL_SPT_ACRE_MBX _KERNEL_CFG_ACRE_MBX /* acre_mbx */
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
*_KERNEL_IRC_IRQCLR = (1 << intno);
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
*_KERNEL_IRC_IRQEN |= (1 << intno);
return;
}
- /* %jp{割り込み番号取得} */
+ /* %jp{割込み番号取得} */
for ( intno = 0; intno <= 23; intno++ )
{
if ( intsta & 1 )
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > _KERNEL_IRCATR_TMAX_INTNO )
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > _KERNEL_IRCATR_TMAX_INTNO )
{
INTNO intno;
- /* %jp{割り込み番号取得} */
+ /* %jp{割込み番号取得} */
intno = *_KERNEL_IRC_AIC_IVR;
/* %jp{割込みサービスルーチン呼び出し} */
_kernel_exe_isr(intno);
- /* %jp{割り込み終了} */
+ /* %jp{割込み終了} */
*_KERNEL_IRC_AIC_EOICR = 0;
}
#include "object/isrobj.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > _KERNEL_IRCATR_TMAX_INTNO )
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
*_KERNEL_IRC_VICIntEnClr |= (1 << intno);
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
*_KERNEL_IRC_VICIntEnable = (1 << intno);
return;
}
- /* %jp{割り込み番号取得} */
+ /* %jp{割込み番号取得} */
for ( intno = 0; intno <= 31; intno++ )
{
if ( intsta & 1 )
#include "object/isrobj.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
*_KERNEL_IRC_VICSoftIntClear = (1 << intno);
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > _KERNEL_IRCATR_TMAX_INTNO )
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > _KERNEL_IRCATR_TMAX_INTNO )
/** %jp{割込みコントローラの初期化} */
void _kernel_ini_irc(void)
{
- /* 割り込み禁止 */
+ /* 割込み禁止 */
*_KERNEL_IRC_INTENABLEH = 0x00000000;
*_KERNEL_IRC_INTENABLEL = 0x00000000;
#include "object/isrobj.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
return E_OK;
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
if ( intno < 0 || intno > 15 )
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
if ( intno < 0 || intno > 15 )
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > *_KERNEL_IRC_FACTOR_ID_MAX )
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > *_KERNEL_IRC_FACTOR_ID_MAX )
#include "object/isrobj.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
if ( intno < _KERNEL_IRCATR_TMIN_INTNO || intno > *_KERNEL_IRC_FACTOR_ID_MAX )
#include "object/isrobj.h"
-/* 割り込みレベルの設定 */
+/* 割込みレベルの設定 */
ER vchg_ilv(INTNO intno, INT ilv)
{
*_KERNEL_MN103S_INTC_GICR(intno) = ((ilv & 0x7) << 12);
#include "object/isrobj.h"
-/* 割り込み要因のクリア */
+/* 割込み要因のクリア */
ER vclr_int(INTNO intno)
{
int mask;
#include "object/inhobj.h"
#include "object/isrobj.h"
-/* 割り込みの禁止 */
+/* 割込みの禁止 */
ER dis_int(INTNO intno)
{
int mask;
#include "object/isrobj.h"
-/* 割り込みの許可 */
+/* 割込みの許可 */
ER ena_int(INTNO intno)
{
int mask;
#include "object/isrobj.h"
-/* IRQ割り込み処理 */
+/* IRQ割込み処理 */
void _kernel_exe_irc(void)
{
INTNO intno;
UH gicr;
int i;
- /* %jp{割り込み番号取得} */
+ /* %jp{割込み番号取得} */
intno = *_KERNEL_MN103S_INTC_IAGR;
gicr = *_KERNEL_MN103S_INTC_GICR(intno);
for ( i = 0; i < 4; i++ )
#include "object/isrobj.h"
-/* 割り込みレベルの取得 */
+/* 割込みレベルの取得 */
ER vget_ilv(INTNO intno, INT *p_ilv)
{
*p_ilv = (*_KERNEL_MN103S_INTC_GICR(intno) >> 12) & 0x7;
* Hyper Operating System V4 Advance
*
* @file vchg_ilv.c
- * @brief %jp{割り込みレベル変更(独自サービスコール)}
+ * @brief %jp{割込みレベル変更(独自サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みレベル変更(独自サービスコール)} */
+/* %jp{割込みレベル変更(独自サービスコール)} */
ER vchg_ilv(INTNO intno, INT ilv)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file chg_imsk.c
- * @brief %jp{割り込みマスクの変更(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの変更(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みマスクの変更(実装依存サービスコール)} */
+/* %jp{割込みマスクの変更(実装依存サービスコール)} */
ER chg_imsk(INT imsk)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file clr_int.c
- * @brief %jp{割り込みのクリア}
+ * @brief %jp{割込みのクリア}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file dis_int.c
- * @brief %jp{割り込み禁止}
+ * @brief %jp{割込み禁止}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みの禁止} */
+/* %jp{割込みの禁止} */
ER dis_int(INTNO intno)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file ena_int.c
- * @brief %jp{割り込みの許可}
+ * @brief %jp{割込みの許可}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みの許可} */
+/* %jp{割込みの許可} */
ER ena_int(INTNO intno)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file get_ilv.c
- * @brief %jp{割り込みレベル参照(独自サービスコール)}
+ * @brief %jp{割込みレベル参照(独自サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みレベル参照(独自サービスコール)} */
+/* %jp{割込みレベル参照(独自サービスコール)} */
ER vget_ilv(INTNO intno, INT *p_ilv)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file get_imsk.c
- * @brief %jp{割り込みマスクの参照(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの参照(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みマスクの参照(実装依存サービスコール)} */
+/* %jp{割込みマスクの参照(実装依存サービスコール)} */
ER get_imsk(INT *p_imsk)
{
return E_NOSPT;
* Hyper Operating System V4 Advance
*
* @file vchg_ilv.c
- * @brief %jp{割り込みレベル変更(独自サービスコール)}
+ * @brief %jp{割込みレベル変更(独自サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みレベル変更(独自サービスコール)} */
+/* %jp{割込みレベル変更(独自サービスコール)} */
ER vchg_ilv(INTNO intno, INT ilv)
{
return E_OK;
* Hyper Operating System V4 Advance
*
* @file chg_imsk.c
- * @brief %jp{割り込みマスクの変更(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの変更(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みマスクの変更(実装依存サービスコール)} */
+/* %jp{割込みマスクの変更(実装依存サービスコール)} */
ER chg_imsk(INT imsk)
{
return E_OK;
* Hyper Operating System V4 Advance
*
* @file clr_int.c
- * @brief %jp{割り込みのクリア}
+ * @brief %jp{割込みのクリア}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みのクリア} */
+/* %jp{割込みのクリア} */
ER vclr_int(INTNO intno)
{
return E_OK;
* Hyper Operating System V4 Advance
*
* @file dis_int.c
- * @brief %jp{割り込み禁止}
+ * @brief %jp{割込み禁止}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みの禁止} */
+/* %jp{割込みの禁止} */
ER dis_int(INTNO intno)
{
return E_OK;
* Hyper Operating System V4 Advance
*
* @file ena_int.c
- * @brief %jp{割り込みの許可}
+ * @brief %jp{割込みの許可}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みの許可} */
+/* %jp{割込みの許可} */
ER ena_int(INTNO intno)
{
return E_OK;
* Hyper Operating System V4 Advance
*
* @file get_ilv.c
- * @brief %jp{割り込みレベル参照(独自サービスコール)}
+ * @brief %jp{割込みレベル参照(独自サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みレベル参照(独自サービスコール)} */
+/* %jp{割込みレベル参照(独自サービスコール)} */
ER vget_ilv(INTNO intno, INT *p_ilv)
{
*p_ilv = 0;
* Hyper Operating System V4 Advance
*
* @file get_imsk.c
- * @brief %jp{割り込みマスクの参照(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの参照(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "kernel.h"
-/* %jp{割り込みマスクの参照(実装依存サービスコール)} */
+/* %jp{割込みマスクの参照(実装依存サービスコール)} */
ER get_imsk(INT *p_imsk)
{
*p_imsk = 0;
* Hyper Operating System V4 Advance
*
* @file chg_imsk.c
- * @brief %jp{割り込みマスクの変更(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの変更(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "core/core.h"
-/* %jp{割り込みマスクの変更(実装依存サービスコール)} */
+/* %jp{割込みマスクの変更(実装依存サービスコール)} */
ER chg_imsk(INT imsk)
{
if ( imsk & ~(_KERNEL_IMSK_I | _KERNEL_IMSK_UI) )
* Hyper Operating System V4 Advance
*
* @file get_imsk.c
- * @brief %jp{割り込みマスクの参照(実装依存サービスコール)}
+ * @brief %jp{割込みマスクの参照(実装依存サービスコール)}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "core/core.h"
-/* %jp{割り込みマスクの参照(実装依存サービスコール)} */
+/* %jp{割込みマスクの参照(実装依存サービスコール)} */
ER get_imsk(INT *p_imsk)
{
*p_imsk = (INT)_kernel_ictxcb.imsk;
_kernel_ictxcb.blDisInt = TRUE;
- /* %jp{割り込み処理} */
+ /* %jp{割込み処理} */
_kernel_sta_inh();
_kernel_ictxcb.blIntCtx = TRUE;
_kernel_exe_inh(_kernel_ictxcb.inhno);
-/** %jp{割り込み禁止} */
+/** %jp{割込み禁止} */
void _kernel_dis_int(void)
{
if ( _kernel_ictxcb.blIntCtx )
#include "core/core.h"
-/** %jp{割り込み許可} */
+/** %jp{割込み許可} */
void _kernel_ena_int(void)
{
if ( _kernel_ictxcb.blIntCtx )
-/* %jp{割り込み用処理} */
+/* %jp{割込み用処理} */
void vsig_int(int inhno)
{
- /* %jp{割り込み用セマフォを取る} */
+ /* %jp{割込み用セマフォを取る} */
WaitForSingleObject(_kernel_ictxcb.hSemIntLock, INFINITE);
/* %jp{クリティカルセクションに入る} */
EnterCriticalSection(&_kernel_ictxcb.CriticalSection);
- /* %jp{割り込み状態に設定} */
+ /* %jp{割込み状態に設定} */
_kernel_ictxcb.inhno = inhno;
/* %jp{現在実行中のコンテキストを割込みモードに移行} */
UINT tail;
UINT next_tail;
- _KERNEL_SYS_LOC_DPC(); /* %jp{多重割り込み対策でロックをかける} */
+ _KERNEL_SYS_LOC_DPC(); /* %jp{多重割込み対策でロックをかける} */
tail = dcpcb->tail;
next_tail = tail + 1;
tskhdl = tskhdl_next;
tcb = tcb_next;
- /* %jp{ここで一度、多重割り込みの機会を与えるべき?} */
+ /* %jp{ここで一度、多重割込みの機会を与えるべき?} */
}
/* %jp{メモリに書き戻す} */
-#else /* _KERNEL_SPT_SND_DTQ */
+#else /* _KERNEL_SPT_IPSND_DTQ */
#if _KERNEL_SPT_SND_DTQ_E_NOSPT
* @param data %jp{データキューへ送信するデータ}%en{Data element tobe sent}
* @retval E_NOSPT %jp{未サポート機能}%en{Unsupported function}
*/
-ER snd_dtq(ID dtqid, VP_INT data)
+ER ipsnd_dtq(ID dtqid, VP_INT data)
{
return E_NOSPT;
}
#endif
-#endif /* _KERNEL_SPT_SND_DTQ */
+#endif /* _KERNEL_SPT_SIPSND_DTQ */
* Hyper Operating System V4 Advance
*
* @file sta_inte.c
- * @brief %jp{割り込み処理開始}
+ * @brief %jp{割込み処理開始}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
* Hyper Operating System V4 Advance
*
* @file sta_inte.c
- * @brief %jp{割り込み処理開始}
+ * @brief %jp{割込み処理開始}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#if _KERNEL_SPT_DPC
-/** %jp{割り込み処理開始}
+/** %jp{割込み処理開始}
* @return void
*/
void _kernel_end_inh(void)
{
- /* %jp{割り込みコンテキストを抜ける} */
+ /* %jp{割込みコンテキストを抜ける} */
_KERNEL_SYS_CLR_CTX();
/* %jp{サービスコールの中なら何もしない} */
#else
-/** %jp{割り込み処理開始}
+/** %jp{割込み処理開始}
* @return void
*/
void _kernel_end_inh(void)
{
- /* %jp{割り込みコンテキストを抜ける} */
+ /* %jp{割込みコンテキストを抜ける} */
_KERNEL_SYS_CLR_CTX();
/* %jp{遅延しているディスパッチがあれば実施} */
* Hyper Operating System V4 Advance
*
* @file exe_inh.c
- * @brief %jp{割り込みハンドラの処理}
+ * @brief %jp{割込みハンドラの処理}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
#include "object/inhobj.h"
-/* %jp{割り込みハンドラの処理} */
+/* %jp{割込みハンドラの処理} */
void _kernel_exe_inh(INHNO inhno)
{
- /* %jp{割り込みハンドラの処理} */
+ /* %jp{割込みハンドラの処理} */
#if _KERNEL_SPT_INH
{
const _KERNEL_T_INHINF *pk_inhinf;
}
#endif
- /* %jp{割り込みコントローラの処理} */
+ /* %jp{割込みコントローラの処理} */
#if _KERNEL_SPT_ISR
_KERNEL_EXE_IRC(inhno);
#endif
* Hyper Operating System V4 Advance
*
* @file sta_inte.c
- * @brief %jp{割り込み処理開始}
+ * @brief %jp{割込み処理開始}
*
* Copyright (C) 1998-2006 by Project HOS
* http://sourceforge.jp/projects/hos/
-/** %jp{割り込み処理開始}
+/** %jp{割込み処理開始}
* @return void
*/
void _kernel_sta_inh(void)
#if _KERNEL_SPT_ISR
-/* %jp{割り込みの処理} */
+/* %jp{割込みの処理} */
void _kernel_exe_isr(INTNO intno)
{
_KERNEL_T_ISRCB_RO_PTR isrcb_ro;
_KERNEL_DIS_INT(); /* %jp{割込み禁止} */
#endif
- /* %jp{割り込みリストの先頭に繋ぐ} */
+ /* %jp{割込みリストの先頭に繋ぐ} */
_KERNEL_ISR_SET_NEXT(isrcb, _KERNEL_INT_GET_HEAD(pk_cisr->intno));
_KERNEL_INT_SET_HEAD(pk_cisr->intno, _KERNEL_ISR_GET_ISRHDL(isrid, isrcb));
* @retval E_ID %jp{不正ID番号(semidが不正あるいは使用できない)}%en{Invalid ID number(semid is invalid or unusable)}
* @retval E_CTX %jp{コンテキストエラー}%en{Context error}
* @retval E_NOEXS %jp{オブジェクト未生成(対象セマフォが未登録)}%en{Non-existant object(specified semaphore is not registerd)}
+ * @retval E_PAR %jp{パラメータエラー(tmoutが不正)}%en{Parameter error(tmout is invalid)}
* @retval E_RLWAI %jp{待ち状態の強制解除(待ち状態の間にrel_waiを受付)}%en{Forced release from waiting(accept rel_wai while waiting)}
* @retval E_TMOUT %jp{タイムアウト}%en{Timeout}
* @retval E_DLT %jp{待ちオブジェクトの削除(待ち状態の間に対象セマフォが削除)}%en{Waiting object deleted(semaphore is deleted waiting)}
* @retval E_ID %jp{不正ID番号(semidが不正あるいは使用できない)}%en{Invalid ID number(semid is invalid or unusable)}
* @retval E_CTX %jp{コンテキストエラー}%en{Context error}
* @retval E_NOEXS %jp{オブジェクト未生成(対象セマフォが未登録)}%en{Non-existant object(specified semaphore is not registerd)}
+ * @retval E_PAR %jp{パラメータエラー(tmoutが不正)}%en{Parameter error(tmout is invalid)}
* @retval E_RLWAI %jp{待ち状態の強制解除(待ち状態の間にrel_waiを受付)}%en{Forced release from waiting(accept rel_wai while waiting)}
* @retval E_TMOUT %jp{タイムアウト}%en{Timeout}
* @retval E_DLT %jp{待ちオブジェクトの削除(待ち状態の間に対象セマフォが削除)}%en{Waiting object deleted(semaphore is deleted waiting)}
return E_ID; /* %jp{不正ID番号}%en{Invalid ID number} */
}
#endif
-
+
+ /* %jp{パラメータのチェック} */
+#if _KERNEL_SPT_TWAI_SEM_E_PAR
+ if ( tmout < 0 && tmout != TMO_FEVR && tmout != TMO_POL)
+ {
+ return E_PAR; /* %jp{パラメータエラー(tmoutが不正)}%en{Parameter error(tmout is invalid)} */
+ }
+#endif
+
_KERNEL_ENTER_SVC(); /* %jp{サービスコールに入る}%en{enter service-call} */
/* %jp{オブジェクト存在チェック} */
_KERNEL_SYS_CLR_DSP();
_KERNEL_SYS_CLR_SYS();
- /* %jp{DPC対応ならここで割り込み許可} */
+ /* %jp{DPC対応ならここで割込み許可} */
#if _KERNEL_SPT_DPC
_KERNEL_ENA_INT();
#endif
#include "core/core.h"
-#include "object/semobj.h"
+#include "object/tskobj.h"
#elif _KERNEL_TCB_ALGORITHM == _KERNEL_TCB_ALG_BLKARRAY
_KERNEL_TSK_SET_TASK(tcb, 0);
#endif
-
+
_KERNEL_LEAVE_SVC(); /* %jp{サービスコールから出る}%en{leave service-call} */
return E_OK;
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = 2;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
- /* %jp{割り込み要因クリア} */
+ /* %jp{割込み要因クリア} */
*T0CLRI = 0;
/* %jp{タイムティック供給} */
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = INTNO_TIMER0;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
- /* %jp{割り込み要因クリア} */
+ /* %jp{割込み要因クリア} */
*T0IR= 1;
/* %jp{タイムティック供給} */
#include "ostimer.h"
-#define OSTIMER_TIMER_INHNO 24 /**< %jp{割り込みハンドラ番号} */
+#define OSTIMER_TIMER_INHNO 24 /**< %jp{割込みハンドラ番号} */
#define REG_TIM16_TSTR ((volatile UB *)0xffffff60)
#define REG_TIM16_GRB0L ((volatile UB *)0xffffff6f)
-static void OsTimer_IrqHandler(void); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(void); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
{
T_DINH dfinh;
- /* %jp{割り込みハンドラ定義} */
+ /* %jp{割込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
def_inh(OSTIMER_TIMER_INHNO, &dfinh);
*REG_TIM16_TCR0 = 0x23; /* φ/8でカウント, GRAのコンペアマッチでクリア */
*REG_TIM16_TCNT0 = 0; /* カウンタクリア */
*REG_TIM16_GRA0 = 2500 - 1; /* 10 msec のインターバル(20MHz/8 = 2.5MHz) */
- *REG_TIM16_TISRA &= ~0x01; /* 割り込み要因クリア */
- *REG_TIM16_TISRA |= 0x10; /* 割り込み許可 */
+ *REG_TIM16_TISRA &= ~0x01; /* 割込み要因クリア */
+ *REG_TIM16_TISRA |= 0x10; /* 割込み許可 */
*REG_TIM16_TSTR |= 0x01; /* TCNT0動作開始 */
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(void)
{
- /* 割り込み要因クリア */
- *REG_TIM16_TISRA &= ~0x01; /* 割り込み要因クリア */
+ /* 割込み要因クリア */
+ *REG_TIM16_TISRA &= ~0x01; /* 割込み要因クリア */
/* Sci1_PutChar('T'); */
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = 0;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
/* %jp{タイムティック供給} */
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = INTNO_TIMER0;
#include "regs_sh7144.h"
-#define INHNO_OSTIMER 144 /**< %jp{割り込みハンドラ番号} */
+#define INHNO_OSTIMER 144 /**< %jp{割込みハンドラ番号} */
#define PERIPHERAL_CLOCK (24000000UL) /**< %jp{ペリフェラルクロック(24MHz)} */
-static void OsTimer_IrqHandler(void); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(void); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
{
T_DINH dfinh;
- /* %jp{割り込みハンドラ定義} */
+ /* %jp{割込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
def_inh(INHNO_OSTIMER, &dfinh);
*REG_CMT0_CMCSR = 0x0042; /* %jp{128分周に設定} */
*REG_CMT_CMSTR |= 0x0001; /* %jp{動作開始} */
- /* %jp{割り込み許可} */
+ /* %jp{割込み許可} */
*REG_INTC_IPRG = ((*REG_INTC_IPRG & 0xff0f) | 0x0010);
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(void)
{
*REG_CMT0_CMCSR &= 0xff7f;
#define REG_INTC_IPRF ((volatile UH*)0xffff8352) /* インタラプトプライオリティレジスタF */
#define REG_INTC_IPRG ((volatile UH*)0xffff8354) /* インタラプトプライオリティレジスタG */
#define REG_INTC_IPRH ((volatile UH*)0xffff8356) /* インタラプトプライオリティレジスタH */
-#define REG_INTC_ICR1 ((volatile UH*)0xffff8358) /* 割り込みコントロールレジスタ1 */
+#define REG_INTC_ICR1 ((volatile UH*)0xffff8358) /* 割込みコントロールレジスタ1 */
#define REG_INTC_ISR ((volatile UH*)0xffff835a) /* IRQステータスレジスタ */
#define REG_INTC_IPRI ((volatile UH*)0xffff835c) /* インタラプトプライオリティレジスタI */
#define REG_INTC_IPRJ ((volatile UH*)0xffff835e) /* インタラプトプライオリティレジスタJ */
-#define REG_INTC_ICR2 ((volatile UH*)0xffff8366) /* 割り込みコントロールレジスタ2 */
+#define REG_INTC_ICR2 ((volatile UH*)0xffff8366) /* 割込みコントロールレジスタ2 */
/* I/O, PFC (port-A) */
#define REG_PA_DR ((volatile UW*)0xffff8380) /* ポートA データレジスタ(H/L) */
#include "wintimer.h"
-#define OSTIMER_TIMER_INHNO 1 /**< %jp{割り込みハンドラ番号} */
+#define OSTIMER_TIMER_INHNO 1 /**< %jp{割込みハンドラ番号} */
-static void OsTimer_IrqHandler(void); /**< %jp{タイマ割り込みハンドラ} */
+static void OsTimer_IrqHandler(void); /**< %jp{タイマ割込みハンドラ} */
/** %jp{OS用タイマ初期化ルーチン} */
{
T_DINH dfinh;
- /* %jp{割り込みハンドラ定義} */
+ /* %jp{割込みハンドラ定義} */
dfinh.inthdr = (FP)OsTimer_IrqHandler;
def_inh(OSTIMER_TIMER_INHNO, &dfinh);
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_IrqHandler(void)
{
isig_tim();
#include "arch/proc/win/win32/proc.h"
-static DWORD WINAPI WinTimer_Thread(LPVOID param); /**< %jp{タイマ割り込み用スレッド関数} */
+static DWORD WINAPI WinTimer_Thread(LPVOID param); /**< %jp{タイマ割込み用スレッド関数} */
static HANDLE hEventTimer; /**< %jp{タイマハンドル} */
}
-/** %jp{タイマ割り込み用スレッド関数} */
+/** %jp{タイマ割込み用スレッド関数} */
DWORD WINAPI WinTimer_Thread(LPVOID param)
{
INHNO inhno;
/* %jp{タイマイベントを待つ} */
WaitForSingleObject(hEventTimer, INFINITE);
- /* %jp{割り込みシグナルを入れる} */
+ /* %jp{割込みシグナルを入れる} */
vsig_int(inhno);
}
}
{
T_CISR cisr;
- /* %jp{割り込みサービスルーチン生成} */
+ /* %jp{割込みサービスルーチン生成} */
cisr.isratr = TA_HLNG;
cisr.exinf = 0;
cisr.intno = INTNO_TIMER0;
}
-/** %jp{タイマ割り込みハンドラ} */
+/** %jp{タイマ割込みハンドラ} */
void OsTimer_Isr(VP_INT exinf)
{
- /* %jp{割り込み要因クリア} */
+ /* %jp{割込み要因クリア} */
*T0IR= 1;
/* %jp{タイムティック供給} */