この章では、μ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はサービスプロファイルの導入によりプロファイルで許容される場合に利用が可能となった。