メインページ | モジュール | 名前空間一覧 | クラス階層 | 構成 | ファイル一覧 | 名前空間メンバ | 構成メンバ | ファイルメンバ | 関連ページ

クラス テンプレートtoppers::fncode_stub< Stub > の解説
[サービスコールスタブ]

機能コードを用いたサービスコールスタブの定義 [詳細]

#include <toppers/fncode_stub.hpp>

すべてのメンバ一覧

Static Public メンバ関数

タスク管理機能
ER stub_cre_tsk (ID tskid, const t_ctsk *pk_ctsk)
 タスクの生成

ER stub_del_tsk (ID tskid)
 タスクの削除

ER stub_act_tsk (ID tskid)
 タスクの起動

ER_UINT stub_can_act (ID tskid)
 タスクの起動要求のキャンセル

ER stub_sta_tsk (ID tskid, VP_INT stacd)
 タスクの起動(起動コード指定)

void stub_ext_tsk ()
 タスクの終了

void stub_exd_tsk ()
 タスクの終了と削除

ER stub_ter_tsk (ID tskid)
 タスクの強制終了

ER stub_chg_pri (ID tskid, PRI tskpri)
 タスク優先度の変更

ER stub_get_pri (ID tskid, PRI *p_tskpri)
 タスク優先度の参照

ER stub_ref_tsk (ID tskid, t_rtsk *pk_rtsk)
 タスクの状態参照

ER stub_ref_tst (ID tskid, t_rtst *pk_rtst)
 タスクの状態参照(簡易版)

タスク付属同期機能
ER stub_slp_tsk ()
 タスクの起床待ち

ER stub_tslp_tsk (TMO tmout)
 タスクの起床待ち(タイムアウト指定)

ER stub_wup_tsk (ID tskid)
 タスクの起床

ER_UINT stub_can_wup (ID tskid)
 タスクの起床要求のキャンセル

ER stub_rel_wai (ID tskid)
 待ち状態の強制解除

ER stub_sus_tsk (ID tskid)
 強制待ち状態への以降

ER stub_rsm_tsk (ID tskid)
 強制待ち状態からの再開

ER stub_frsm_tsk (ID tskid)
 強制待ち状態からの強制再開

ER stub_dly_tsk (RELTIM dlytim)
 タスクの遅延

タスク例外処理機能
ER stub_def_tex (ID tskid, const t_dtex *pk_dtex)
 タスク例外処理ルーチンの定義

ER stub_ras_tex (ID tskid, TEXPTN rasptn)
 タスク例外処理の要求

ER stub_dis_tex ()
 タスク例外処理の禁止

ER stub_ena_tex ()
 タスク例外処理の許可

bool stub_sns_tex ()
 タスク例外処理禁止状態の参照

ER stub_ref_tex (ID tskid, t_rtex *pk_rtex)
 タスク例外処理の状態参照

セマフォ
ER stub_cre_sem (ID semid, const t_csem *pk_csem)
 セマフォの生成

ER stub_del_sem (ID semid)
 セマフォの削除

ER stub_sig_sem (ID semid)
 セマフォ資源の返却

ER stub_wai_sem (ID semid)
 セマフォ資源の獲得

ER stub_pol_sem (ID semid)
 セマフォ資源の獲得(ポーリング)

ER stub_twai_sem (ID semid, TMO tmout)
 セマフォ資源の獲得(タイムアウト指定)

ER stub_ref_sem (ID semid, t_rsem *pk_rsem)
 セマフォの状態参照

イベントフラグ
ER stub_cre_flg (ID flgid, const t_cflg *pk_cflg)
 イベントフラグの生成

ER stub_del_flg (ID flgid)
 イベントフラグの削除

ER stub_set_flg (ID flgid, FLGPTN setptn)
 イベントフラグのセット

ER stub_clr_flg (ID flgid, FLGPTN clrptn)
 イベントフラグのクリア

ER stub_wai_flg (ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
 イベントフラグ待ち

ER stub_pol_flg (ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn)
 イベントフラグ待ち(ポーリング)

ER stub_twai_flg (ID flgid, FLGPTN waiptn, MODE wfmode, FLGPTN *p_flgptn, TMO tmout)
 イベントフラグ待ち(タイムアウト指定)

ER stub_ref_flg (ID flgid, t_rflg *pk_rflg)
 イベントフラグの状態参照

データキュー
ER stub_cre_dtq (ID dtqid, const t_cdtq *pk_cdtq)
 データキューの生成

ER stub_del_dtq (ID dtqid)
 データキューの削除

ER stub_snd_dtq (ID dtqid, VP_INT data)
 データキューへの送信

ER stub_psnd_dtq (ID dtqid, VP_INT data)
 データキューへの送信(ポーリング)

ER stub_tsnd_dtq (ID dtqid, VP_INT data, TMO tmout)
 データキューへの送信(タイムアウト指定)

ER stub_fsnd_dtq (ID dtqid, VP_INT data)
 データキューへの強制送信

ER stub_rcv_dtq (ID dtqid, VP_INT *p_data)
 データキューからの受信

ER stub_prcv_dtq (ID dtqid, VP_INT *p_data)
 データキューからの受信(ポーリング)

ER stub_trcv_dtq (ID dtqid, VP_INT *p_data, TMO tmout)
 データキューからの受信(タイムアウト指定)

ER stub_ref_dtq (ID dtqid, t_rdtq *pk_rdtq)
 データキューの状態参照

メールボックス
ER stub_cre_mbx (ID mbxid, const t_cmbx *pk_cmbx)
 メールボックスの生成

ER stub_del_mbx (ID mbxid)
 メールボックスの削除

ER stub_snd_mbx (ID mbxid, T_MSG *pk_msg)
 メールボックスへの送信

ER stub_rcv_mbx (ID mbxid, T_MSG **ppk_msg)
 メールボックスからの受信

ER stub_prcv_mbx (ID mbxid, T_MSG **ppk_msg)
 メールボックスからの受信(ポーリング)

ER stub_trcv_mbx (ID mbxid, T_MSG **ppk_msg, TMO tmout)
 メールボックスからの受信(タイムアウト指定)

ER stub_ref_mbx (ID mbxid, t_rmbx *pk_rmbx)
 メールボックスの状態参照

固定長メモリプール
ER stub_cre_mpf (ID mpfid, const t_cmpf *pk_cmpf)
 固定長メモリプールの生成

ER stub_del_mpf (ID mpfid)
 固定長メモリプールの削除

ER stub_rel_mpf (ID mpfid, VP blk)
 固定長メモリブロックの解放

ER stub_get_mpf (ID mpfid, VP *p_blk)
 固定長メモリブロックの獲得

ER stub_pget_mpf (ID mpfid, VP *p_blk)
 固定長メモリブロックの獲得(ポーリング)

ER stub_tget_mpf (ID mpfid, VP *p_blk, TMO tmout)
 固定長メモリブロックの獲得(タイムアウト指定)

ER stub_ref_mpf (ID mpfid, t_rmpf *pk_rmpf)
 固定長メモリプールの状態参照

時間管理機能
ER stub_set_tim (const SYSTIM *p_systim)
 システム時刻の設定

ER stub_get_tim (SYSTIM *p_systim)
 システム時刻の参照

周期ハンドラ
ER stub_cre_cyc (ID cycid, const t_ccyc *pk_ccyc)
 周期ハンドラの生成

ER stub_del_cyc (ID cycid)
 周期ハンドラの削除

ER stub_sta_cyc (ID cycid)
 周期ハンドラの起動

ER stub_stp_cyc (ID cycid)
 周期ハンドラの停止

ER stub_ref_cyc (ID cycid, t_rcyc *pk_rcyc)
 周期ハンドラの状態参照

システム状態管理機能
ER stub_rot_rdq (PRI tskpri)
 タスク優先順位の回転

ER stub_get_tid (ID *p_tskid)
 実行状態のタスクIDの参照

ER stub_loc_cpu ()
 CPUロック状態への移行.

ER stub_unl_cpu ()
 CPUロック状態の解除.

ER stub_dis_dsp ()
 ディスパッチの禁止

ER stub_ena_dsp ()
 ディスパッチの許可

bool stub_sns_ctx ()
 コンテキストの参照

bool stub_sns_loc ()
 CPUロック状態の参照.

bool stub_sns_dsp ()
 ディスパッチ禁止状態の参照

bool stub_sns_dpn ()
 ディスパッチ保留状態の参照

ER stub_ref_sys (t_rsys *pk_rsys)
 システム状態の参照

割込み管理機能
ER stub_def_inh (INHNO inhno, const t_dinh *pk_dinh)
 割込みハンドラの定義

ER stub_cre_isr (ID isrid, const t_cisr *pk_cisr)
 割込みサービスルーチンの生成

ER stub_del_isr (ID isrid)
 割込みサービスルーチンの削除

ER stub_ref_isr (ID isrid, t_risr *pk_risr)
 割込みサービスルーチンの状態参照

ER stub_dis_int (INTNO intno)
 割込みの禁止

ER stub_ena_int (INTNO intno)
 割込みの許可

ER stub_chg_ims (IMS ims)
 割込みマスクの変更

ER stub_get_ims (IMS *P_ims)
 割込みマスクの参照

システム構成管理機能
ER stub_def_exc (EXCNO excno, const t_dexc *pk_dexc)
 CPU例外ハンドラの定義.

ER stub_ref_cfg (t_rcfg *pk_rcfg)
 コンフィギュレーション情報の参照

ER stub_ref_ver (t_rver *pk_rver)
 バージョン情報の参照

非タスクコンテキスト用のサービスコール
ER stub_iact_tsk (ID tskid)
 タスクの起動(非タスクコンテキスト)

ER stub_iwup_tsk (ID tskid)
 タスクの起床(非タスクコンテキスト)

ER stub_irel_wai (ID tskid)
 待ち状態の強制解除(非タスクコンテキスト)

ER stub_iras_tex (ID tskid, TEXPTN rasptn)
 タスク例外処理の要求(非タスクコンテキスト)

ER stub_isig_sem (ID semid)
 セマフォ資源の返却(非タスクコンテキスト)

ER stub_iset_flg (ID flgid, FLGPTN setptn)
 イベントフラグのセット(非タスクコンテキスト)

ER stub_ipsnd_dtq (ID dtqid, VP_INT data)
 データキューへの送信(非タスクコンテキスト)

ER stub_ifsnd_dtq (ID dtqid, VP_INT data)
 データキューへの強制送信(非タスクコンテキスト)

ER stub_irot_rdq (PRI tskpri)
 タスク優先順位の回転(非タスクコンテキスト)

ER stub_iget_tid (ID *p_tskid)
 実行状態のタスクIDの参照(非タスクコンテキスト)

ER stub_iloc_cpu ()
 CPUロック状態への移行(非タスクコンテキスト).

ER stub_iunl_cpu ()
 CPUロック状態の解除(非タスクコンテキスト).

ER stub_isig_tim ()
 タイムティックの供給

ミューテックス
ER stub_cre_mtx (ID mtxid, const t_cmtx *pk_cmtx)
 ミューテックスの生成

ER stub_del_mtx (ID mtxid)
 ミューテックスの削除

ER stub_unl_mtx (ID mtxid)
 ミューテックスのロック解除

ER stub_loc_mtx (ID mtxid)
 ミューテックスのロック

ER stub_ploc_mtx (ID mtxid)
 ミューテックスのロック(ポーリング)

ER stub_tloc_mtx (ID mtxid, TMO tmout)
 ミューテックスのロック(タイムアウト指定)

ER stub_ref_mtx (ID mtxid, t_rmtx *pk_rmtx)
 ミューテックスの状態参照

メッセージバッファ
ER stub_cre_mbf (ID mbfid, const t_cmbf *pk_cmbf)
 メッセージバッファの生成

ER stub_del_mbf (ID mbfid)
 メッセージバッファの削除

ER stub_snd_mbf (ID mbfid, const void *msg, UINT msgsz)
 メッセージバッファへの送信

ER stub_psnd_mbf (ID mbfid, const void *msg, UINT msgsz)
 メッセージバッファへの送信(ポーリング)

ER stub_tsnd_mbf (ID mbfid, const void *msg, UINT msgsz, TMO tmout)
 メッセージバッファへの送信(タイムアウト指定)

ER_UINT stub_rcv_mbf (ID mbfid, void *msg)
 メッセージバッファからの受信

ER_UINT stub_prcv_mbf (ID mbfid, void *msg)
 メッセージバッファからの受信(ポーリング)

ER_UINT stub_trcv_mbf (ID mbfid, void *msg, TMO tmout)
 メッセージバッファからの受信(タイムアウト指定)

ER stub_ref_mbf (ID mbfid, t_rmbf *pk_rmbf)
 メッセージバッファの状態参照

ランデブ
ER stub_cre_por (ID porid, const t_cpor *pk_cpor)
 ランデブポートの生成

ER stub_del_por (ID porid)
 ランデブポートの削除

ER_UINT stub_cal_por (ID porid, RDVPTN calptn, void *msg, UINT cmsgsz)
 ランデブポートの呼出し

ER_UINT stub_tcal_por (ID porid, RDVPTN calptn, void *msg, UINT cmsgsz, TMO tmout)
 ランデブポートの呼出し(タイムアウト指定)

ER_UINT stub_acp_por (ID porid, RDVPTN acpptn, RDVNO *p_rdvno, void *msg)
 ランデブポートの受付

ER_UINT stub_pacp_por (ID porid, RDVPTN acpptn, RDVNO *p_rdvno, void *msg)
 ランデブポートの受付(ポーリング)

ER_UINT stub_tacp_por (ID porid, RDVPTN acpptn, RDVNO *p_rdvno, void *msg, TMO tmout)
 ランデブポートの受付(タイムアウト指定)

ER stub_fwd_por (ID porid, RDVPTN acpptn, RDVNO rdvno, const void *msg, UINT cmsgsz)
 ランデブの回送

ER stub_rpl_rdv (RDVNO rdvno, const void *msg, UINT rmsgsz)
 ランデブの返答

ER stub_ref_por (ID porid, t_rpor *pk_rpor)
 ランデブポートの状態参照

ER stub_ref_rdv (RDVNO rdvid, t_rrdv *pk_rrdv)
 ランデブの状態参照

可変長メモリプール
ER stub_cre_mpl (ID mplid, const t_cmpl *pk_cmpl)
 可変長メモリプールの生成

ER stub_del_mpl (ID mplid)
 可変長メモリプールの削除

ER stub_rel_mpl (ID mplid, VP blk)
 可変長メモリブロックの解放

ER stub_get_mpl (ID mplid, UINT blksz, VP *p_blk)
 可変長メモリブロックの獲得

ER stub_pget_mpl (ID mplid, UINT blksz, VP *p_blk)
 可変長メモリブロックの獲得(ポーリング)

ER stub_tget_mpl (ID mplid, UINT blksz, VP *p_blk, TMO tmout)
 可変長メモリブロックの獲得(タイムアウト指定)

ER stub_ref_mpl (ID mplid, t_rmpl *pk_rmpl)
 可変長メモリプールの状態参照

アラームハンドラ
ER stub_cre_alm (ID almid, const t_calm *pk_calm)
 アラームハンドラの生成

ER stub_del_alm (ID almid)
 アラームハンドラの削除

ER stub_sta_alm (ID almid, RELTIM almtim)
 アラームハンドラの起動

ER stub_stp_alm (ID almid)
 アラームハンドラの停止

ER stub_ref_alm (ID almid, t_ralm *pk_ralm)
 アラームハンドラの状態参照

オーバーランハンドラ
ER stub_def_ovr (const t_dovr *pk_dovr)
 オーバーランハンドラの定義

ER stub_sta_ovr (ID tskid, OVRTIM ovrtim)
 オーバーランハンドラの起動

ER stub_stp_ovr (ID tskid)
 オーバーランハンドラの停止

ER stub_ref_ovr (ID tskid, t_rovr *pk_rovr)
 オーバーランハンドラの状態参照

ID番号自動生成
ER_ID stub_acre_tsk (const t_ctsk *pk_ctsk)
 タスクの生成(ID番号自動生成)

ER_ID stub_acre_sem (const t_csem *pk_csem)
 セマフォの生成(ID番号自動生成)

ER_ID stub_acre_flg (const t_cflg *pk_cflg)
 イベントフラグの生成(ID番号自動生成)

ER_ID stub_acre_dtq (const t_cdtq *pk_cdtq)
 データキューの生成(ID番号自動生成)

ER_ID stub_acre_mbx (const t_cmbx *pk_cmbx)
 メールボックスの生成(ID番号自動生成)

ER_ID stub_acre_mtx (const t_cmtx *pk_cmtx)
 ミューテックスの生成(ID番号自動生成)

ER_ID stub_acre_mbf (const t_cmbf *pk_cmbf)
 メッセージバッファの生成(ID番号自動生成)

ER_ID stub_acre_por (const t_cpor *pk_cpor)
 ランデブポートの生成(ID番号自動生成)

ER_ID stub_acre_mpf (const t_cmpf *pk_cmpf)
 固定長メモリプールの生成(ID番号自動生成)

ER_ID stub_acre_mpl (const t_cmpl *pk_cmpl)
 可変長メモリプールの生成(ID番号自動生成)

ER_ID stub_acre_cyc (const t_ccyc *pk_ccyc)
 周期ハンドラの生成(ID番号自動生成)

ER_ID stub_acre_alm (const t_calm *pk_calm)
 アラームハンドラの生成(ID番号自動生成)

ER_ID stub_acre_isr (const t_cisr *pk_cisr)
 割込みサービスルーチンの生成(ID番号自動生成)

TOPPERSカーネルの独自仕様
これらはTOPPERSカーネル独自のサービスコールだが必須の要素であり、 他のカーネルを使用する場合でも対応するサービスコールを実装する 必要がある。

bool stub_vxsns_ctx (VP_INT exinf)
 CPU例外発生時のコンテキストの参照.

bool stub_vxsns_loc (VP_INT exinf)
 CPU例外発生時のCPUロック状態の参照.

bool stub_vxsns_dsp (VP_INT exinf)
 CPU例外発生時のディスパッチ禁止状態の参照.

bool stub_vxsns_dpn (VP_INT exinf)
 CPU例外発生時のディスパッチ保留状態の参照.

bool stub_vxsns_tex (VP_INT exinf)
 CPU例外発生時のタスク例外処理禁止状態の参照.

bool stub_vsns_ini ()
 カーネル動作状態の参照

TOPPERSカーネルの独自拡張
ER stub_vxget_tim (SYSUTIM *p_sysutim)
 性能評価用システム時刻の参照

サービスコール管理機能
ER stub_def_svc (FN fncd, const t_dsvc *pk_dsvc)
 拡張サービスコールの定義


解説

template<class Stub = raw_stub<>>
class toppers::fncode_stub< Stub >

  fncode_stubcal_svc を介してサービスコールを呼び出す。 このサービスコールスタブを使用することで、機能コードを用いた呼び出しを通常の呼び出しと 全く同じ形式で行うことができる。

  テンプレート引数のStub は、stub_cal_svc メンバ関数が定義されていれば問題ないため、ユーザが stub_cal_svc だけを定義した独自のスタブを用意することで、fncode_stub を使用することができる。

注意:
cal_svc が標準サービスコールの呼び出しをサポートしない場合は正しく動作しない。
参照:
raw_stub outline_stub


メンバ関数の解説

template<class Stub>
bool toppers::fncode_stub< Stub >::stub_vsns_ini  )  [inline, static]
 

  サービスコール vsns_ini は、カーネル非動作中でも呼び出される可能性があるため、 cal_svc を介して呼び出すことができない。 そのため、例外的に vsns_ini だけはカーネルのサービスコールを直接呼び出す。