FreeRTOS V9.0.0 のAPI一覧

FreeRTOS V9.0.0 の各APIについて一言で説明してみました。

# 命名規則

| 先頭文字 | コメント |
|:--|:--|
| pc | 戻り値が char * |
| pv | 戻り値が void * |
| v | 戻り値が void  |
| ux | 戻り値がUBaseType_t |
| x | 戻り値がBaseType_t |


# タスクとスケジューラ

| API | Comment |
|:--|:--|
| portSWITCH_TO_USER_MODE()  | Supervisor モードから User モードへ切り替える  |
| vTaskAllocateMPURegions() | タスクにMemory Protection Unit (MPU) regionsを割り当てる |
| xTaskAbortDelay() | タスクを Blocked state に遷移させる |
| xTaskCallApplicationTaskHook()  | タスクにtaskhookを関連付ける。  |
| xTaskCheckForTimeOut()  | タスクにタイムアウトを設定、expireしたら Blocked state に遷移させる  |
| xTaskCreate()  | タスクを生成する  |
| xTaskCreateStatic()  | 静的なメモリを使ってタスクを生成する |
| xTaskCreateRestricted()  | Memory Protection Unit (MPU) restricted task　を生成する  |
| vTaskDelay()  | タスクを指定tickだけ Blocked statee に入れる  |
| vTaskDelayUntil()  |  タスクをある絶対時刻まで  Blocked statee に入れる |
| vTaskDelete()  |  タスクを削除する |
| taskDISABLE_INTERRUPTS()  | 割り込むを無効にする  |
| taskENABLE_INTERRUPTS()  | 割り込みを有効にする  |
| taskENTER_CRITICAL()  | クリティカルセクションに入る  |
| taskENTER_CRITICAL_FROM_ISR()  | クリティカルセクションに入る  |
| taskEXIT_CRITICAL()  | クリティカルセクションから出る  |
| taskEXIT_CRITICAL_FROM_ISR()  | クリティカルセクションから出る  |
| xTaskGetApplicationTaskTag()  | タスクのタグを取得する  |
| xTaskGetCurrentTaskHandle()  | Running Stateにいるタスクのハンドルを取得する  |
| xTaskGetIdleTaskHandle()  |  Idle Stateにいるタスクのハンドルを取得する  |
| xTaskGetHandle()  | 名前を指定して るタスクのハンドルを取得する  |
| uxTaskGetNumberOfTasks()  | タスク数を取得する  |
| vTaskGetRunTimeStats()  | タスクの統計情報を取得する　（タスク名、ＣＰＵ時間、CPU時間の割合） |
| xTaskGetSchedulerState()  | スケジューラの状態を取得する （開始していない、実行中、サスペンド中） |
| uxTaskGetStackHighWaterMark()  | タスクの残りスタック量を取得する  |
| eTaskGetState()  | タスクの enumerated type な状態を取得する  |
| uxTaskGetSystemState()  | 複数タスクの詳細な状態を取得する。  |
| vTaskGetTaskInfo()  | ある一つのタスクの詳細な状態を取得する。  |
| pvTaskGetThreadLocalStoragePointer()  | タスクの Thread local storage のポインタを取得する  |
| pcTaskGetName()  | タスクの名前を取得する  |
| xTaskGetTickCount()  | タスクが消費したtickcountを取得する  |
| xTaskGetTickCountFromISR()  | タスクが消費したtickcountを取得する  |
| vTaskList()  | タスクの状態を読みやすい形式で表示する  |
| xTaskNotify()  | タスクにNotify (32bitの値)を送る  |
| xTaskNotifyAndQuery()  | タスクにNotify (32bitの値)を送る 以前の値を使う  |
| xTaskNotifyAndQueryFromISR()  | タスクにNotify (32bitの値)を送る 以前の値を使う  |
| xTaskNotifyFromISR()  | タスクにNotify (32bitの値)を送る  |
| xTaskNotifyGive()  | タスクにNotifyを送る 値はインクリメントする |
| vTaskNotifyGiveFromISR()  | タスクにNotifyを送る 値はインクリメントする  |
| xTaskNotifyStateClear()  | タスクのpending notificationをクリアする。 notification valueはクリアしない  |
| ulTaskNotifyTake()  | タスクにNotifyを送る 値はデクリメントする  |
| xTaskNotifyWait()  | タスクに指定tickcout後にNotifyを送る  |
| uxTaskPriorityGet()  | タスクのプライオリティを取得する  |
| vTaskPrioritySet()  | タスクのプライオリティを設定する  |
| vTaskResume()  | タスクの状態をSuspendからReadyに復帰する  |
| xTaskResumeAll()  | すべてのSuspendのタスクを Activeに復帰する  |
| xTaskResumeFromISR()  | タスクの状態をSuspendからReadyに復帰する  |
| vTaskSetApplicationTaskTag()  | タスクにタグを割り当てる  |
| vTaskSetThreadLocalStoragePointer()  | タスクの Thread local storage のポインタを設定する  |
| vTaskSetTimeOutState()  | タイムアウトの構造体を設定する |
| vTaskStartScheduler()  | スケジューラを開始する  |
| vTaskStepTick()  | tiklessの場合にtickを進ませる。  |
| vTaskSuspend()  | タスクをsuspendする  |
| vTaskSuspendAll()  | すべてのタスクをsuspendする  |
| taskYIELD()  | タスクのコンテキストスイッチを強制する  |

# キュー

| API | Comment |
|:--|:--|
| vQueueAddToRegistry()  | キューに読みやすい名前を割り当てる  |
| xQueueAddToSet()  | キューセットにキューまたはセマフォを追加する  |
| xQueueCreate()  | キューを生成する  |
| xQueueCreateSet()  | キューセットを生成する  |
| xQueueCreateStatic()  | 静的なメモリを使ってキューを生成する   |
| vQueueDelete()  | キューを削除する  |
| pcQueueGetName()  | キューの名前を取得する  |
| xQueueIsQueueEmptyFromISR()  | キューが空かどうか確認する  |
| xQueueIsQueueFullFromISR()  | キューが満杯かどうか確認する  |
| uxQueueMessagesWaiting()  | キューが保持しているアイテム数を取得する  |
| uxQueueMessagesWaitingFromISR()  | キューが保持しているアイテム数を取得する  |
| xQueueOverwrite()  | キューが満杯でも、値を詰め込み上書きする。  |
| xQueueOverwriteFromISR()  | キューが満杯でも、アイテムを詰め込み上書きする  |
| xQueuePeek()  | キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す  |
| xQueuePeekFromISR()  | キューからアイテムを取り出す、取り出したアイテムはキューにそのまま残す  |
| xQueueReceive()  | キューからアイテムを取り出す、取り出したアイテムはキューから削除する  |
| xQueueReceiveFromISR()  | キューからアイテムを取り出す、取り出したアイテムはキューから削除する   |
| xQueueRemoveFromSet()  | キューセットからキューまたはセマフォを削除する  |
| xQueueReset()  | キューを空の状態にリセットする  |
| xQueueSelectFromSet()  | キューセットから利用可能なキューまたはセマフォをselectする  |
| xQueueSelectFromSetFromISR()  | キューセットから利用可能なキューまたはセマフォをselectする  |
| xQueueSend()  | キューの最後にアイテムを追加する。  |
| xQueueSendToFront()  | キューの先頭にアイテムを追加する。  |
| xQueueSendToBack()  | キューの最後にアイテムを追加する。  |
| xQueueSendFromISR()  | キューの最後にアイテムを追加する。  |
| xQueueSendToFrontFromISR()  | キューの先頭にアイテムを追加する。  |
| xQueueSendToBackFromISR()  | キューの最後にアイテムを追加する。  |
| uxQueueSpacesAvailable()  | キューの空きサイズを取得する  |


# セマフォ

| API | Comment |
|:--|:--|
| vSemaphoreCreateBinary()  | バイナリセマフォを生成する [非推奨] |
| xSemaphoreCreateBinary()  | バイナリセマフォを生成する  |
| xSemaphoreCreateBinaryStatic()  | 静的なメモリを使ってバイナリセマフォを生成する  |
| xSemaphoreCreateCounting()  | カウンティングセマフォを生成する  |
| xSemaphoreCreateCountingStatic()  | 静的なメモリを使ってカウンティングセマフォを生成する  |
| xSemaphoreCreateMutex()  | ミューテックスを生成する  |
| xSemaphoreCreateMutexStatic()  | 静的なメモリを使ってミューテックスを生成する  |
| xSemaphoreCreateRecursiveMutex()  | 再帰ミューテックスを生成する  |
| xSemaphoreCreateRecursiveMutexStatic()  | 静的なメモリを使って再帰ミューテックスを生成する   |
| vSemaphoreDelete()  | セマフォ、ミューテックスを削除する  |
| uxSemaphoreGetCount()  | セマフォのカウント値を取得する  |
| xSemaphoreGetMutexHolder()  | ミューテックスを保持するタスクのハンドルを取得する  |
| xSemaphoreGive()  | セマフォを解放する  |
| xSemaphoreGiveFromISR()  | セマフォを解放する  |
| xSemaphoreGiveRecursive()  |  再帰ミューテックスを解放する  |
| xSemaphoreTake()  | セマフォを獲得する  |
| xSemaphoreTakeFromISR()  | セマフォを獲得する  |
| xSemaphoreTakeRecursive()  | ミューテックスを獲得する  |

# ソフトウェアタイマ

| API | Comment |
|:--|:--|
| xTimerChangePeriod()  | タイマの周期を設定する  |
| xTimerChangePeriodFromISR()  | タイマの周期を設定する  |
| xTimerCreate()  | タイマを生成する  |
| xTimerCreateStatic()  | 静的なメモリを使ってタイマを生成する  |
| xTimerDelete()  | タイマを削除する  |
| xTimerGetExpiryTime()  | タイマがexpireする時刻　を取得する  |
| pcTimerGetName()  | タイマの名前を取得する  |
| xTimerGetPeriod()  | タイマの周期を取得する  |
| xTimerGetTimerDaemonTaskHandle()  |タイマデーモンタスクのハンドルを取得する   |
| pvTimerGetTimerID()  | タイマのIDを取得する  |
| xTimerIsTimerActive()  | タイマを有効にする  |
| xTimerPendFunctionCall()  | タイマのファンクションコールを設定  |
| xTimerPendFunctionCallFromISR()  | タイマのファンクションコールを設定  |
| xTimerReset()  |  タイマをリスタートする |
| xTimerResetFromISR()  | タイマをリスタートする  |
| vTimerSetTimerID()  |  タイマのIDを設定する 複数のタイマで同じコールバック関数を呼ぶ場合に使う |
| xTimerStart()  | タイマをスタートする  |
| xTimerStartFromISR()  | タイマをスタートする  |
| xTimerStop()  | タイマをストップする  |
| xTimerStopFromISR()  | タイマをストップする  |


# イベント

| API | Comment |
|:--|:--|
| xEventGroupClearBits()  | イベントグループのbitsをクリアする  |
| xEventGroupClearBitsFromISR()  |  イベントグループのbitsをクリアする |
| xEventGroupCreate()  | イベントグループを生成する  |
| xEventGroupCreateStatic()  |  静的なメモリを使ってイベントグループを生成する |
| vEventGroupDelete()  | イベントグループを削除する  |
| xEventGroupGetBits()  | イベントグループの値を取得する  |
| xEventGroupGetBitsFromISR()  | イベントグループの値を取得する  |
| xEventGroupSetBits()  | イベントグループの値を設定する  |
| xEventGroupSetBitsFromISR()  | イベントグループの値を設定する  |
| xEventGroupSync()  | ある値になるまでかタイムアウトを待って、イベントグループに値を設定する。  |
| xEventGroupWaitBits()  | イベントグループがある値になるかタイムアウトまで待つ  |


参照元
* https://www.freertos.org/Documentation/FreeRTOS_Reference_Manual_V9.0.0.pdf
* https://www.freertos.org/FreeRTOS-Coding-Standard-and-Style-Guide.html