この章では、μT-Kernel/DS(Debugger Support)で提供している機能の詳細について説明を行う。
μT-Kernel/DSは、デバッガがμT-Kernelの内部状態の参照や実行のトレースを行うための機能を提供するものである。μT-Kernel/DSの提供する機能は、デバッガ専用であり、一般のアプリケーション等からは使用しない。
![]() | 全般的な注意・補足事項 |
---|---|
|
カーネル内部状態取得機能は、デバッガがカーネルの内部状態を取得するための機能である。オブジェクトの一覧を取得する機能、タスクの優先順位を取得する機能、待ち行列に並んだタスクの並び順を取得する機能、オブジェクトやシステムやタスクレジスタの状態を取得する機能、および時刻を取得する機能が含まれる。
なし
現在使用されているタスクIDのリストを取得し、list
へ最大 nent
個分のタスクIDを格納する。戻値に、使用されているタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているセマフォIDのリストを取得し、list
へ最大 nent
個分のセマフォIDを格納する。戻値に、使用されているセマフォの個数を返す。戻値 > nent
であれば、すべてのセマフォIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているイベントフラグIDのリストを取得し、list
へ最大 nent
個分のイベントフラグIDを格納する。戻値に、使用されているイベントフラグの個数を返す。戻値 > nent
であれば、すべてのイベントフラグIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているメールボックスIDのリストを取得し、list
へ最大 nent
個分のメールボックスIDを格納する。戻値に、使用されているメールボックスの個数を返す。戻値 > nent
であれば、すべてのメールボックスIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているミューテックスIDのリストを取得し、list
へ最大 nent
個分のミューテックスIDを格納する。戻値に、使用されているミューテックスの個数を返す。戻値 > nent
であれば、すべてのミューテックスIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているメッセージバッファIDのリストを取得し、list
へ最大 nent
個分のメッセージバッファIDを格納する。戻値に、使用されているメッセージバッファの個数を返す。戻値 > nent
であれば、すべてのメッセージバッファIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているランデブポートIDのリストを取得し、list
へ最大 nent
個分のランデブポートIDを格納する。戻値に、使用されているランデブポートの個数を返す。戻値 > nent
であれば、すべてのランデブポートIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されている固定長メモリプールIDのリストを取得し、list
へ最大 nent
個分の固定長メモリプールIDを格納する。戻値に、使用されている固定長メモリプールの個数を返す。戻値 > nent
であれば、すべての固定長メモリプールIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されている可変長メモリプールIDのリストを取得し、list
へ最大 nent
個分の可変長メモリプールIDを格納する。戻値に、使用されている可変長メモリプールの個数を返す。戻値 > nent
であれば、すべての可変長メモリプールIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されている周期ハンドラIDのリストを取得し、list
へ最大 nent
個分の周期ハンドラIDを格納する。戻値に、使用されている周期ハンドラの個数を返す。戻値 > nent
であれば、すべての周期ハンドラIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているアラームハンドラIDのリストを取得し、list
へ最大 nent
個分のアラームハンドラIDを格納する。戻値に、使用されているアラームハンドラの個数を返す。戻値 > nent
であれば、すべてのアラームハンドラIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
なし
現在使用されているサブシステムIDのリストを取得し、list
へ最大 nent
個分のサブシステムIDを格納する。戻値に、使用されているサブシステムの個数を返す。戻値 > nent
であれば、すべてのサブシステムIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
実行できる状態(実行可能状態および実行状態)のタスクのうち、優先度が pri
であるものを、優先順位の高い順に一列に並べ、その並び順にタスクIDのリストを取得する。
list
には、優先順位が最高のものを先頭としてその並び順に、タスクIDが最大 nent
個まで格納される。
戻値には、pri
の優先度を持つ実行できる状態のタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できていないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
semid
で指定したセマフォの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、セマフォの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、セマフォの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
flgid
で指定したイベントフラグの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、イベントフラグの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、イベントフラグの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mbxid
で指定したメールボックスの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、メールボックスの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、メールボックスの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mtxid
で指定したミューテックスの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、ミューテックスの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、ミューテックスの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mbfid
で指定したメッセージバッファの送信待ち行列に並んでいるタスクのIDのリストを取得する。list
には、メッセージバッファの送信待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、メッセージバッファの送信待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mbfid
で指定したメッセージバッファの受信待ち行列に並んでいるタスクのIDのリストを取得する。list
には、メッセージバッファの受信待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、メッセージバッファの受信待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
porid
で指定したランデブ呼出待ち行列に並んでいるタスクのIDのリストを取得する。list
には、ランデブ呼出待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、ランデブ呼出待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
porid
で指定したランデブ受付待ち行列に並んでいるタスクのIDのリストを取得する。list
には、ランデブ受付待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、ランデブ受付待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mpfid
で指定した固定長メモリプールの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、固定長メモリプールの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、固定長メモリプールの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
mplid
で指定した可変長メモリプールの待ち行列に並んでいるタスクのIDのリストを取得する。list
には、可変長メモリプールの待ち行列の先頭からその並び順にタスクIDが最大 nent
個まで格納される。戻値には、可変長メモリプールの待ち行列に並んでいるタスクの個数を返す。戻値 > nent
であれば、すべてのタスクIDは取得できないことを示す。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rtsk
の内容
void* |
exinf
| Extended Information | 拡張情報 |
PRI |
tskpri
| Task Priority | 現在の優先度 |
PRI |
tskbpri
| Task Base Priority | ベース優先度 |
UINT |
tskstat
| Task State | タスク状態 |
UW |
tskwait
| Task Wait Factor | 待ち要因 |
ID |
wid
| Waiting Object ID | 待ちオブジェクトID |
INT |
wupcnt
| Wakeup Count | 起床要求キューイング数 |
INT |
suscnt
| Suspend Count | 強制待ち要求ネスト数 |
RELTIM |
slicetime
| Slice Time | 最大連続実行時間(ミリ秒) |
UW |
waitmask
| Wait Mask | 待ちを禁止されている待ち要因 |
UINT |
texmask
| Task Exception Mask | 許可されているタスク例外 |
UINT |
tskevent
| Task Event | 発生しているタスクイベント |
FP |
task
| Task Start Address | タスク起動アドレス |
SZ |
stksz
| User Stack Size | ユーザスタックサイズ(バイト数) |
SZ |
sstksz
| System Stack Size | システムスタックサイズ(バイト数) |
void* |
istack
| Initial User Stack Pointer | ユーザスタックポインタ初期値 |
void* |
isstack
| Initial System Stack Pointer | システムスタックポインタ初期値 |
TK_SUPPORT_SLICETIME | スライスタイム(slicetime )の取得が可能 |
TK_SUPPORT_DISWAI | 待ち禁止状態に関する情報(waitmask )の取得が可能 |
TK_SUPPORT_TASKEXCEPTION | タスク例外情報(texmask )の取得が可能 |
TK_SUPPORT_TASKEVENT | タスクイベント発生情報(tskevent )の取得が可能 |
TK_HAS_SYSSTACK | タスクがユーザスタックとは独立したシステムスタックを持ち、ユーザスタックに加えてシステムスタックに対する情報(sstksz , isstack )の取得が可能 |
以下のサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
タスクの状態を参照する。tk_ref_tsk() と同等だが、タスク起動アドレスおよびスタックに関する情報が追加されている。
スタック領域は、スタックポインタ初期値の位置から低位アドレス(値の小さい方)へ向かって、スタックサイズ分となる。
istack
-stksz
≦ ユーザスタック領域 < istack
isstack
-sstksz
≦ システムスタック領域 < isstack
なお、スタックポインタ初期値(istack
, isstack
)は、スタックポインタの現在位置ではない。タスク起動前の状態であっても、スタック領域は使用されている場合がある。スタックポインタの現在位置を得るには、td_get_reg() を用いる。
タスク状態情報(TD_RTSK)の slicetime
は、ミリ秒単位に切り上げた値(単位ミリ秒)を返す。マイクロ秒単位の情報を知りたい場合には、td_ref_tsk_u を使う。
TD_RTSKのメンバtskwait
とwaitmask
の型がUINTからUWに変更されている。
また、TD_RTSKのメンバstksz
とsstksz
の型がINTからSZに変更されている。
サービスプロファイルの導入により、μT-Kernelの仕様から除外されていたスライスタイム(slicetime
)、待ち禁止状態に関する情報(waitmask
)、タスク例外情報(texmask
)、タスクイベント発生情報(tskevent
)、システムスタックサイズ(sstksz
)、システムスタックポインタ初期値(isstack
)の取得が、プロファイルの制約に従う範囲で可能となった。
上記に伴い、tskstat
に得られる値に TTS_NODISWAI(待ち禁止の拒否)と tskwait
に得られる値にタスクイベントに関する値(TTW_EVn)が存在する。
なお、TD_RTSKのメンバstksz
とsstksz
の型がWからSZに変更されている。
rtsk_u
の内容
void* |
exinf
| Extended Information | 拡張情報 |
PRI |
tskpri
| Task Priority | 現在の優先度 |
PRI |
tskbpri
| Task Base Priority | ベース優先度 |
UINT |
tskstat
| Task State | タスク状態 |
UW |
tskwait
| Task Wait Factor | 待ち要因 |
ID |
wid
| Waiting Object ID | 待ちオブジェクトID |
INT |
wupcnt
| Wakeup Count | 起床要求キューイング数 |
INT |
suscnt
| Suspend Count | 強制待ち要求ネスト数 |
RELTIM_U |
slicetime_u
| Slice Time | 最大連続実行時間(マイクロ秒) |
UW |
waitmask
| Wait Mask | 待ちを禁止されている待ち要因 |
UINT |
texmask
| Task Exception Mask | 許可されているタスク例外 |
UINT |
tskevent
| Task Event | 発生しているタスクイベント |
FP |
task
| Task Start Address | タスク起動アドレス |
SZ |
stksz
| User Stack Size | ユーザスタックサイズ(バイト数) |
SZ |
sstksz
| System Stack Size | システムスタックサイズ(バイト数) |
void* |
istack
| Initial User Stack Pointer | ユーザスタックポインタ初期値 |
void* |
isstack
| Initial System Stack Pointer | システムスタックポインタ初期値 |
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
その他の関連するサービスプロファイルについては、td_ref_tsk と同様である。
td_ref_tsk のリターンパラメータである slicetime
を64ビットマイクロ秒単位の slicetime_u
としたシステムコールである。
リターンパラメータが slicetime_u
となった点を除き、本システムコールの仕様は td_ref_tsk と同じである。詳細は td_ref_tsk の説明を参照のこと。
TD_RTSK_Uのメンバtskwait
とwaitmask
の型がUINTからUWに変更されている。
また、TD_RTSK_Uのメンバstksz
とsstksz
の型がINTからSZに変更されている。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
pk_rtex
の内容
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
タスク例外の状態を参照する。tk_ref_tex() と同等。
本APIは過去のμT-Kernelの仕様では除外されていたが、サービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rsem
の内容
セマフォの状態を参照する。tk_ref_sem() と同等。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rflg
の内容
イベントフラグの状態を参照する。tk_ref_flg() と同等。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rmbx
の内容
メールボックスの状態を参照する。tk_ref_mbx() と同等。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rmtx
の内容
ミューテックスの状態を参照する。tk_ref_mtx() と同等。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rmbf
の内容
メッセージバッファの状態を参照する。tk_ref_mbf() と同等。
TD_RMBFのメンバ frbufsz
の型がINTからSZに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
また、TD_RMBFのメンバ frbufsz
の型がWからSZに変更されている。
rpor
の内容
ランデブポートの状態を参照する。tk_ref_por() と同等。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rmpf
の内容
固定長メモリプールの状態を参照する。tk_ref_mpf() と同等。
TD_RMPFのメンバ frbcnt
の型がINTからSZに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
また、TD_RMPFのメンバ frbcnt
の型がWからSZに変更されている。
rmpl
の内容
可変長メモリプールの状態を参照する。tk_ref_mpl() と同等。
TD_RMPLのメンバ frsz
, maxsz
の型がINTからSZに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
また、TD_RMPLのメンバ frsz
, maxsz
の型がWからSZに変更されている。
rcyc
の内容
周期ハンドラの状態を参照する。tk_ref_cyc() と同等。
td_ref_cyc で取得する周期ハンドラ状態情報(TD_RCYC)における残り時間 lfttim
は、ミリ秒単位に切り上げた値(単位ミリ秒)を返す。マイクロ秒単位の情報を知りたい場合には、td_ref_cyc_u を使う。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rcyc_u
の内容
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
td_ref_cyc のリターンパラメータである lfttim
を64ビットマイクロ秒単位の lfttim_u
としたシステムコールである。
リターンパラメータが lfttim_u
となった点を除き、本システムコールの仕様は td_ref_cyc と同じである。詳細は td_ref_cyc の説明を参照のこと。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
ralm
の内容
アラームハンドラの状態を参照する。tk_ref_alm() と同等。
td_ref_alm で取得するアラームハンドラ状態情報(TD_RALM)における残り時間 lfttim
は、ミリ秒単位に切り上げた値(単位ミリ秒)を返す。マイクロ秒単位の情報を知りたい場合には、td_ref_alm_u を使う。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
ralm_u
の内容
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
td_ref_alm のリターンパラメータである lfttim
を64ビットマイクロ秒単位の lfttim_u
としたシステムコールである。
リターンパラメータが lfttim_u
となった点を除き、本システムコールの仕様は td_ref_alm と同じである。詳細は td_ref_alm の説明を参照のこと。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
pk_rsys
の内容
システムの状態を参照する。tk_ref_sys() と同等。
TD_RSYSのメンバsysstat
の型がINTからUINTに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
rssy
の内容
サブシステムの状態を参照する。tk_ref_ssy() と同等。
TD_RSSYのメンバ resblksz
の型がINTからSZに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
また、TD_RSSYのメンバ resblksz
の型がWからSZに変更されている。
pk_itsk
の内容
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
タスク統計情報を参照する。tk_inf_tsk() と同等。clr
=TRUE(≠0)の場合は、統計情報を取り出した後、累積時間をリセット(0クリア)する。
タスク統計情報(TD_ITSK)の stime
, utime
は、ミリ秒単位に切り上げた値(単位ミリ秒)を返す。マイクロ秒単位の情報を知りたい場合には、td_inf_tsk_u を使う。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
itsk_u
の内容
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
td_inf_tsk のリターンパラメータである stime
と utime
を64ビットマイクロ秒単位の stime_u
, utime_u
としたシステムコールである。
リターンパラメータが stime_u
, utime_u
となった点を除き、本システムコールの仕様は td_inf_tsk と同じである。詳細は td_inf_tsk の説明を参照のこと。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
タスクのレジスタを参照する。tk_get_reg と同等。
現在実行状態にあるタスクは参照することはできない。タスク独立部の実行中を除けば、現在実行状態のタスクは自タスクである。
pk_regs
, pk_eit
, pk_cregs
は、それぞれ NULL を指定すると、対応するレジスタは参照されない。
T_REGS, T_EIT, T_CREGSの内容は実装定義である。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
ID |
tskid
| Task ID | 対象タスクのID(TSK_SELF 不可) |
CONST T_REGS* |
pk_regs
| Packet of Registers | 汎用レジスタ |
CONST T_EIT* |
pk_eit
| Packet of EIT Registers | 例外時に保存されるレジスタ |
CONST T_CREGS* |
pk_cregs
| Packet of Control Registers | 制御レジスタ |
T_REGS, T_EIT, T_CREGSの内容は、CPUおよび実装ごとに定義する。
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
タスクのレジスタを設定する。tk_set_reg と同等。
現在実行状態にあるタスクに設定することはできない。タスク独立部の実行中を除けば、現在実行状態のタスクは自タスクである。
pk_regs
, pk_eit
, pk_cregs
は、それぞれ NULL を指定すると、対応するレジスタは設定されない。
T_REGS, T_EIT, T_CREGS の内容は実装定義である。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
tim
の内容
現在時刻(1985年1月1日0時(GMT)からの通算のミリ秒数)を取得する。tim
に返される値は tk_get_tim() と同じである。tim
は、タイマ割込み間隔(周期)の分解能となるが、さらに細かい精度の時刻情報として tim
からの経過時間を ofs
にナノ秒単位で取得する。ofs
の分解能は実装依存であるが、一般にはハードウェアタイマの分解能となる。
tim
は、タイマ割込みによってカウントされる時刻であるため、割込み禁止期間中にタイマ割込み周期が来た場合、タイマ割込みハンドラが起動されず(起動が遅らされ)時刻が更新されないことがある。このような場合、tim
には前回のタイマ割込みによって更新された時刻が返され、ofs
には前回のタイマ割込みからの経過時間を返す。したがって、ofs
はタイマ割込み間隔より長い時間となる場合がある。ofs
がどの程度まで長い経過時間を計測できるかはハードウェアなどに依存するが、少なくともタイマ割込み間隔の2倍未満(0≦ofs
<タイマ割込み間隔の2倍)の範囲まで計測できることが望ましい。
なお、tim
および ofs
に返される時刻は、td_get_tim() を呼び出してから戻るまでにかかった時間範囲の中のどこかの時点の時刻となる。td_get_tim() を呼び出した時点の時刻でも、td_get_tim() から戻った時点の時刻でもない。したがって、より正確な情報を得たい場合は、割込み禁止状態で呼び出すべきである。
ofs
の型がUINTへのポインタからUWへのポインタに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
td_get_tim のリターンパラメータである tim
を64ビットマイクロ秒単位の tim_u
としたシステムコールである。
リターンパラメータが tim_u
となった点を除き、本システムコールの仕様は td_get_tim と同じである。詳細は td_get_tim の説明を参照のこと。
ofs
の型がUINTへのポインタからUWへのポインタに変更されている。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
tim
の内容
システム稼働時間(システム起動時からの積算ミリ秒数)を取得する。tim
に返される値は tk_get_otm() と同じである。tim
は、タイマ割込み間隔(周期)の分解能となるが、さらに細かい精度の時刻情報として tim
からの経過時間を ofs
にナノ秒単位で取得する。ofs
の分解能は実装依存であるが、一般にはハードウェアタイマの分解能となる。
tim
は、タイマ割込みによってカウントされる時刻であるため、割込み禁止期間中にタイマ割込み周期が来た場合、タイマ割込みハンドラが起動されず(起動が遅らされ)時刻が更新されないことがある。このような場合、tim
には前回のタイマ割込みによって更新された時刻が返され、ofs
には前回のタイマ割込みからの経過時間を返す。したがって、ofs
はタイマ割込み間隔より長い時間となる場合がある。ofs
がどの程度まで長い経過時間を計測できるかはハードウェアなどに依存するが、少なくともタイマ割込み間隔の2倍未満(0≦ofs
<タイマ割込み間隔の2倍)の範囲まで計測できることが望ましい。
なお、tim
および ofs
に返される時刻は、td_get_otm() を呼び出してから戻るまでにかかった時間範囲の中のどこかの時点の時刻となる。td_get_otm() を呼び出した時点の時刻でも、td_get_otm() から戻った時点の時刻でもない。したがって、より正確な情報を得たい場合は、割込み禁止状態で呼び出すべきである。
ofs
の型がUINTへのポインタからUWへのポインタに変更されている。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
以下のすべてのサービスプロファイルが有効に設定されている場合に限り、本システムコールはサポートされる。
td_get_otm のリターンパラメータである tim
を64ビットマイクロ秒単位の tim_u
としたシステムコールである。
リターンパラメータが tim_u
となった点を除き、本システムコールの仕様は td_get_otm と同じである。詳細は td_get_otm の説明を参照のこと。
ofs
の型がUINTへのポインタからUWへのポインタに変更されている。
T-Kernel 2.0仕様に基づき新たに追加されたAPIである。
オブジェクト生成時に設定したDSオブジェクト名称(dsname
)を参照する。対象となるオブジェクトは、オブジェクトタイプ(type
)とオブジェクトID(id
)で指定する。
指定可能なオブジェクトタイプ(type
)は、以下の通りである。
TN_TSK | 0x01 | タスク |
TN_SEM | 0x02 | セマフォ |
TN_FLG | 0x03 | イベントフラグ |
TN_MBX | 0x04 | メールボックス |
TN_MBF | 0x05 | メッセージバッファ |
TN_POR | 0x06 | ランデブポート |
TN_MTX | 0x07 | ミューテックス |
TN_MPL | 0x08 | 可変長メモリプール |
TN_MPF | 0x09 | 固定長メモリプール |
TN_CYC | 0x0a | 周期ハンドラ |
TN_ALM | 0x0b | アラームハンドラ |
DSオブジェクト名称は、オブジェクトの属性に、TA_DSNAME が指定された場合に有効となる。オブジェクト生成後に、td_set_dsname() でDSオブジェクト名称を再設定した場合は、この名称が参照される。
DSオブジェクト名称は、
a~z, A~Z, 0~9
8バイト(満たない場合は NULL で埋める)
とするが、文字コードのチェックは、μT-Kernelでは行わない。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。
オブジェクト生成時に設定したDSオブジェクト名称(dsname
)を再設定する。対象となるオブジェクトは、オブジェクトタイプ(type
)とオブジェクトID(id
)で指定する。
指定可能なオブジェクトタイプ(type
)は、td_ref_dsname() と同様である。
なお、設定可能なDSオブジェクト名称は、
a~z, A~Z, 0~9
8バイト(満たない場合は NULL で埋める)
とするが、文字コードのチェックは、μT-Kernelでは行わない。
DSオブジェクト名称は、オブジェクトの属性に、TA_DSNAME が指定されている場合に有効である。TA_DSNAME 属性が指定されていないオブジェクトを対象とした場合は、エラー E_OBJ となる。
本APIはサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。