2018年4月24日火曜日

[FreeRTOS]現在アクティブのタスクハンドラ・タスク名を取得する。

色々と検索すると古い情報だったり、カーネルをカスタマイズしないといけないとか
情報が散乱していて良く分からない状態だったのでまとめます。

結局は英語も良く分からないから、分からないなりに読めるソースコードを頼りに調べました。

タスクハンドラはTaskTCBのポインタになっているようですが、
Task.cに構造体が定義されていて直接参照したりすることができないようになっています。
構造体の部分を抜き出すやり方も検討しましたが、
最終的にはAPI関数のみでやる方法で落ち着きました。

現在のタスクハンドラを取得する方法
TaskHandle_t handle = xTaskGetCurrentTaskHandle();


タスクハンドラからタスク名を取得する
char* taskname = pcTaskGetName(handle);


これ知っておけばタスク間をまたぐような処理で
自タスクなのか他タスクなのかが判別できるようになりますね。

0 件のコメント:

Androider