/******************************************************************************/
/* src/kernel/ProcMng/ProcMngSched.c */
-/* 2017/03/11 */
+/* 2017/03/12 */
/* Copyright (C) 2017 Mochi. */
/******************************************************************************/
/******************************************************************************/
{
schedTaskInfo_t *pTaskInfo; /* タスク情報 */
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start. taskId=%u", __func__, taskId );
+
/* 空タスクキューから空タスク情報取得 */
pTaskInfo =
( schedTaskInfo_t * ) MLibBasicListRemoveTail( &( gSchedTbl.freeQ ) );
if ( pTaskInfo == NULL ) {
/* 空タスク情報無し */
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_FAILURE );
+
return CMN_FAILURE;
}
/* 実行予約タスクグループにエンキュー */
SchedEnqueueToReservedGrp( pTaskInfo );
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end. ret=%d", __func__, CMN_SUCCESS );
+
return CMN_SUCCESS;
}
pRunningGrp = NULL;
pTaskInfo = NULL;
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start.", __func__ );
+
/* 実行中タスク判定 */
if ( nowTaskId == PROCMNG_TASK_ID_IDLE ) {
/* アイドルタスク */
/* 再スケジューリング */
ProcMngSchedExec();
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}
}
/* タスクスイッチ */
SchedSwitchTask( nowTaskId, pTaskInfo->taskId );
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}
MLibRet_t retMLib; /* MLib関数戻り値 */
schedTaskInfo_t *pIdleTaskInfo; /* アイドルタスク情報 */
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start.", __func__ );
+
/* スケジューラテーブル0初期化 */
memset( &gSchedTbl, 0, sizeof ( schedTbl_t ) );
/* エンキュー */
retMLib = MLibBasicListInsertHead( &( gSchedTbl.freeQ ),
&( gSchedTbl.taskInfo[ i ].node ) );
-
/* エンキュー結果判定 */
if ( retMLib != MLIB_SUCCESS ) {
/* 失敗 */
}
}
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}
pReservedGrp = &gSchedTbl.runGrp[ gSchedTbl.reservedGrpIdx ];
retMLib = MLIB_FAILURE;
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start. pTaskInfo=%010p", __func__, pTaskInfo );
+
/* タスクタイプ取得 */
taskType = ProcMngTaskGetType( pTaskInfo->taskId );
/* [TODO] トレース出力 */
}
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}
/******************************************************************************/
static void SchedSwitchRunGrpRole( void )
{
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start.", __func__ );
+
/* グループ役割切替 */
gSchedTbl.runningGrpIdx ^= 1;
gSchedTbl.reservedGrpIdx ^= 1;
/* タスク実行済みフラグ初期化 */
gSchedTbl.runFlg = false;
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}
void *pKernelStack; /* カーネルスタック */
ProcMngTaskContext_t context; /* コンテキスト */
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() start. nowTaskId=%u, nextTaskId=%u",
+ __func__,
+ nowTaskId,
+ nextTaskId );
+
/* 初期化 */
memset( &context, 0, sizeof ( ProcMngTaskContext_t ) );
/* ラベル */
__asm__ __volatile__ ( "SchedSwitchTaskEnd:" );
+ /* デバッグトレースログ出力 */
+ DEBUG_LOG( "%s() end.", __func__ );
+
return;
}