サービスコール(API)仕様
カーネル上で動作するアプリケーションが利用するためにサービスコール(API)の仕様については、利用するTOPPERSカーネルの種類に応じて、TOPPERSプロジェクトが発行する、以下のどちらかの仕様書を参照してください。
- ASP3 または FMP3 
- FMP 
また、SOLID-OS において、オリジナル仕様のTOPPERSカーネルから機能拡張、機能変更された点については、このページ下の表を参照してください。
詳細については、以下の各カーネルの仕様/動作の拡張についての説明を参照してください
警告
TOPPERS第3世代カーネルの仕様においてはシステム時刻の単位はマイクロ秒となっており、 サービスコール(API)仕様でも時間を扱うものはすべてこの仕様に準じてマイクロ秒単位となっています。 既存のμITRON系OS向けソースコードやTOPPERS/FMP向けソースコードを扱う場合は時間単位の扱いにご注意ください。
オリジナルTOPPERS仕様からの機能拡張一覧
| 相違点 | ASP3 | FMP | FMP3 | 
|---|---|---|---|
| 優先度拡張パッケージ (拡張 1~256 をサポート) | ✓ | ✓ | TBS | 
| ミューテックス (第三世代カーネル仕様相当のサポート) | 標準 | ✓ | 標準 | 
| ミューテックス (優先度継承プロトコルのサポート) | ✓ | ✓ | TBS | 
| メッセージバッファ (第三世代カーネル拡張パッケージ) 
 | ✓ | ✓ | TBS | 
| メッセージバッファ (非タスクからのpsnd_mbf,prcv_mbf呼出) | ✓ | ✓ | TBS | 
| 動的生成機能拡張パッケージ | ✓ | ✓ | TBS | 
| C言語定義テーブルによるカーネル資源の設定 | ✓ | ✓ | ✓ | 
| 割込み及び例外の処理は SOLID Core Service 内で行われます def_exc, xns_dpn はカーネル仕様通りには機能しない | ✓ | ✓ | ✓ | 
| 静的資源生成カーネルにおける以下のAPIについてパラメータ 指定値制限の緩和 (NULL 以外を指定可能) 
 | ✓ | ✓ | ✓ | 
| ミューテックスのロック解除順序についての制約緩和 | ✓ | 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 呼び出し可能 | ✓ | 標準 | TBS | 
| 初期化/終了ルーチンの登録方法 ASP3 仕様 3.3.0以前と 3.4.0以降の両方の方式をサポート | ✓ | NA | NA | 
| 非タスクからの ena_int, dis_int 呼び出し可能 | 標準 | ✓ | 標準 | 
| タイマーイベントハンドラを各コアで実行可能 | NA | ✓ | TBS | 
| Readers/Writerロックのサポート | TBD | ✓ | TBS | 
| 各プロセッサアイドル時間取得機能 | TBD | ✓ | TBS | 
| 指定優先度以下の実行待ちタスクの中から最も優先度及び 優先順位が高いタスクIDの取得(xsm_get_frt, xsm_iget_frt) | NA | ✓ | TBS | 
| 実行中タスクのローテート (=同一優先度中で優先順位を最低にする) (xsm_imsbk_rtk) | NA | ✓ | TBS | 
| イベントフラグ待ち解除時のビットクリア指定の拡張 | ✓ | ✓ | TBS | 
| カーネル内の各資源について最大数を取得するAPI | TBS | ✓ | TBS | 
| カーネル内の生成済み動的生成資源数を取得するAPI | TBS | ✓ | 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 の機能拡張 スタック領域先頭、サイズ、現スタックポインタを取得可能 | TBD | ✓ | TBD | 
| eget_tid API の追加 コンテキスト、CPUロック状態によらず当該CPUコアでの RUNNING 状態のタスクのタスクIDを返す | TBD | ✓ | TBD | 
| タスク実装によるμ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 | 
| 非タスクコンテキストから呼び出し可能なiclr_flg()追加 | NA | ✓ | NA | 
注釈
- 凡例
- ✓:該当, TBS:対応予定, TBD:検討中, NA:対象外, 標準:標準機能 
SOLID-OS実装での制限事項(解消予定を含む)
| 制限事項 | ASP3 | FMP | FMP3 | 
|---|---|---|---|
| get_utm の使用不可(プロセッサのハードウェアタイマーが 1個しかない SoC の場合の使用上の制限 | NA | ✓ | NA | 
| スピンロックの動的削除(del_spn)は機能せずエラーになる | NA | ✓ | ✓ | 
| スピンロックはエミュレート方式のみ対応 
 | NA | ✓ |