ベクタ
SOLID-OSでは、ベクタ発生時に登録した関数を呼び出すことができます。
関数は、コアサービスが内部で所有しているスタックを使用して、SVCモードで呼び出されます。
登録がなければ、例外発生時にデフォルトの動作が呼び出されます。 JTAGデバッガが接続されている場合は、予め埋め込まれているブレークポイント命令によって 実行が停止し、IDE上に発生した例外の種類などの情報が表示されます。
ベクタ番号
-
SOLID_VECTOR_UNDEF
-
SOLID_VECTOR_SWI
-
SOLID_VECTOR_PREFETCH
-
SOLID_VECTOR_DATAABORT
-
SOLID_VECTOR_IRQ
-
SOLID_VECTOR_FIQ
定数
名前 値 説明 SOLID_VECTOR_UNDEF
0 未定義命令 SOLID_VECTOR_SWI
1 ソフトウェア割り込み SOLID_VECTOR_PREFETCH
2 プリフェッチアボート SOLID_VECTOR_DATAABORT
3 データアボート SOLID_VECTOR_IRQ
4 割り込み要求 SOLID_VECTOR_FIQ
5 高速割り込み要求
SOLID_VECTOR_HANDLER
-
typedef struct _SOLID_VECTOR_HANDLER_
SOLID_VECTOR_HANDLER
説明
ベクタハンドラ登録用構造体
定義
typedef struct _SOLID_VECTOR_HANDLER_ { struct _SOLID_VECTOR_HANDLER_ *pNext; int (*func)(void*, SOLID_CPU_CONTEXT*); void* param; } SOLID_VECTOR_HANDLER;
メンバー
- pNext
- コアサービス側で使用
- func
- ベクタ発生時に呼び出される関数
- param
- ベクタ発生時に呼び出される関数に渡す引数
SOLID_VECTOR_Register
-
int
SOLID_VECTOR_Register
(int vec, SOLID_VECTOR_HANDLER *pHandler) 割り込みベクタのハンドラを登録します
パラメータ: - vec – 登録する ベクタ番号( SOLID_VECTOR_XXX )
- pHandler – 登録するハンドラ
戻り値: SOLID_ERR_OK
: 正常終了- それ以外: エラー
SOLID_VECTOR_UnRegister
-
int
SOLID_VECTOR_UnRegister
(int vec, SOLID_VECTOR_HANDLER *pHandler) 割り込みベクタのハンドラの登録を解除します
パラメータ: - vec – 登録を解除する ベクタ番号( SOLID_VECTOR_XXX )
- pHandler – 登録を解除するハンドラ
戻り値: SOLID_ERR_OK
: 正常終了- それ以外: エラー
SOLID_VECTOR_IsInInterrupt
-
int
SOLID_VECTOR_IsInInterrupt
(void) 割り込みベクタ処理中かどうかを判定する
戻り値: - 0: 割り込み処理中でない
- 1: 割り込み処理中である