マルチコア API ################################################################################ 概要 ================================================================================ マルチコア API は、セカンダリコア (core1) 上でタスク関数を反復実行するための API を提供します。 core1 で実行する関数は、戻り値で継続可否を制御します。 型 ================================================================================ xmc::Core1TaskFunc -------------------------------------------------------------------------------- .. code-block:: cpp using xmc::Core1TaskFunc = bool (*)(); core1 で実行するタスク関数の型です。 関数が `true` を返すと次の反復へ進み、`false` を返すと core1 のタスクループを終了します。 グローバル関数 ================================================================================ xmc::startCore1 -------------------------------------------------------------------------------- .. code-block:: cpp XmcStatus xmc::startCore1(xmc::Core1TaskFunc task); 指定したタスク関数を core1 で起動します。 `task` は core1 上で繰り返し呼び出されます。 すでに core1 が起動済みの場合は失敗し、エラーコードが返されます。 戻り値は `XmcStatus` で、成功時は `XMC_OK` です。 xmc::stopCore1 -------------------------------------------------------------------------------- .. code-block:: cpp XmcStatus xmc::stopCore1(uint32_t timeoutMs = 1000); 動作中の core1 を停止します。 `timeoutMs` には停止完了を待つ最大時間 [ms] を指定します。 停止要求後、タスクが終了しない場合はプラットフォーム実装に応じて core1 が強制的にリセットされます。 戻り値は `XmcStatus` です。成功時は `XMC_OK`、停止失敗時はエラーコードが返されます。 xmc::isCore1Running -------------------------------------------------------------------------------- .. code-block:: cpp bool xmc::isCore1Running(); core1 が現在タスクを実行中かどうかを返します。 core1 が起動中であれば `true` を、停止中であれば `false` を返します。