サービスコール(API)仕様

カーネル上で動作するアプリケーションが利用するためにサービスコール(API)の仕様については、利用するTOPPERSカーネルの種類に応じて、TOPPERSプロジェクトが発行する、以下のどちらかの仕様書を参照してください。

また、SOLID-OS において、オリジナル仕様のTOPPERSカーネルから機能拡張、機能変更された点については、このページ下の表を参照してください。

詳細については、以下の各カーネルの仕様/動作の拡張についての説明を参照してください

警告

TOPPERS第3世代カーネルの仕様においてはシステム時刻の単位はマイクロ秒となっており、 サービスコール(API)仕様でも時間を扱うものはすべてこの仕様に準じてマイクロ秒単位となっています。 既存のμITRON系OS向けソースコードやTOPPERS/FMP向けソースコードを扱う場合は時間単位の扱いにご注意ください。

オリジナルTOPPERS仕様からの機能拡張一覧

相違点

ASP3

FMP

FMP3

優先度拡張パッケージ (拡張 1~256 をサポート)

ミューテックス (第三世代カーネル仕様相当のサポート)

標準

標準

ミューテックス (優先度継承プロトコルのサポート)

メッセージバッファ (第三世代カーネル拡張パッケージ

もしくは、拡張パッケージ相当の仕様)

メッセージバッファ (非タスクからの psnd_mbf(), prcv_mbf() 呼出)

動的生成機能拡張パッケージ

C言語定義テーブルによるカーネル資源の設定

割込み及び例外の処理は SOLID Core Service 内で行われます

def_exc() はカーネル仕様通りには機能しない

割込み及び例外の処理は SOLID Core Service 内で行われます

xsns_dpn() はカーネル仕様通りには機能しない

NA

静的資源生成カーネルにおける以下のAPIについてパラメータ

指定値制限の緩和 (NULL 以外を指定可能)

  • CRE_DTQ() での dtqmp

  • CRE_PDQ() での pdqmp

  • CRE_MPF() での mpfmp

ミューテックスのロック解除順序についての制約緩和

TBD

TBS

カーネル登録外割込みの割込み番号を指定したサービスコール

呼び出しは即時エラーにせずCore Service経由での操作を試みる

(ASP3, FMP3) dis_int(), ena_int(), clr_int(), ras_int(), prb_int()

(FMP) dis_int(), ena_int()

タスク起動要求キューイング数/タスク起床要求キューイング数

の上限をコンフィグレーション可能

TBS

TBS

非タスクコンテキストからの clr_flg() 呼び出し可能

NA

非タスクコンテキストから呼び出し可能な iclr_flg() 追加

NA

NA

CPUロック状態での set_flg() 呼び出し可能

TBD

TBD

初期化/終了ルーチンの登録方法

ASP3 仕様 3.3.0以前と 3.4.0以降の両方の方式をサポート

NA

NA

非タスクからの ena_int(), dis_int() 呼び出し可能

標準

標準

タイマーイベントハンドラを各コアで実行可能

NA

TBS

Readers/Writerロックのサポート

各プロセッサアイドル時間取得機能

TBD

TBS

指定優先度以下の実行待ちタスクの中から最も優先度及び

優先順位が高いタスクIDの取得(xsm_get_frt(), xsm_iget_frt())

NA

実行中タスクのローテート

(=同一優先度中で優先順位を最低にする) (xsm_imsbk_rtk())

NA

TBS

イベントフラグ待ち解除時のビットクリア指定(TA_BITCLR)の拡張

カーネル内の各資源について最大数を取得するAPI

(ref_cfg()/aref_cfg())

TBS

カーネル内の生成済み動的生成資源数を取得するAPI(aref_nid())

TBS

周期ハンドラAPIの非タスクコンテキスト拡張

(ista_cyc()/istp_cyc()/imsta_cyc())

NA

NA

アラームハンドラAPIの非タスクコンテキスト拡張

(ista_alm()/istp_alm()/imsta_alm())

NA

NA

指定プロセッサについて実行中タスクの優先度を取得するAPI

TBD

TBS

指定プロセッサについて実行中タスクのタスクIDを取得するAPI

TBD

TBS

複数プロセッサをターゲットとする割込みの指定が可能

NA

TBS

CPU0以外をマスタープロセッサコアに指定可能

複数CPUクラスタ構成には対応

NA

ref_tsk() の機能拡張

スタック領域先頭、サイズ、現スタックポインタを取得可能

eget_tid() API の追加

コンテキスト、CPUロック状態によらず当該CPUコアでの

RUNNING 状態のタスクのタスクIDを返す

タスク実装によるμITRON サービスコールエミュレーション

可変長メモリープール(制限事項あり)

TBD

TBD

タスク実装によるμITRON サービスコールエミュレーション

メールボックス(制限事項あり)

標準

TBD

非タスクコンテキストから呼び出し可能な参照系API追加

iref_tex(), iref_tsk(), iref_spn(), iref_alm(),

iref_cyc(), iref_mpf(), iref_mbf(), iref_mtx(),

iref_mbx(), iref_pdq(), iref_dtq(), iref_sem(),

iref_flg()

NA

NA

CPUロック状態からの set_flg() 呼び出し可能

TBD

TBD

非タスクコンテキストから呼び出し可能な ipget_mpf() 追加

NA

NA

注釈

凡例

:該当, TBS:対応予定, TBD:検討中, NA:対象外, 標準:標準機能

SOLID-OS実装での制限事項(解消予定を含む)

制限事項

ASP3

FMP

FMP3

get_utm() の使用不可(プロセッサのハードウェアタイマーが

1個しかない SoC の場合の使用上の制限)

NA

NA

スピンロックの動的削除 (del_spn()) は機能せずエラーになる

NA

スピンロックはエミュレート方式のみ対応

※ネイティブ方式対応作業中

NA