SOLID独自の型¶
SOLID-OSでは、以下の独自の型およびエラーコードを使用します。
SOLID-OS独自の定義は、solid_type.h にあります。
#include "solid_type.h"
エラーコード¶
-
SOLID_ERR_OK¶
-
SOLID_ERR_PAR¶
-
SOLID_ERR_CTX¶
-
SOLID_ERR_MACV¶
-
SOLID_ERR_NOMEM¶
-
SOLID_ERR_NORES¶
-
SOLID_ERR_NOTFOUND¶
-
SOLID_ERR_NOTSUPPORTED¶
-
SOLID_ERR_EBADF¶
-
SOLID_ERR_NOTUSED¶
-
SOLID_ERR_ALREADYUSED¶
-
SOLID_ERR_OUTOFBOUND¶
-
SOLID_ERR_BADSEQUENCE¶
-
SOLID_ERR_UNKNOWNDEVICE¶
-
SOLID_ERR_BUSY¶
-
SOLID_ERR_TIMEOUT¶
-
SOLID_ERR_INVALIDACCESS¶
-
SOLID_ERR_NOTREADY¶
定数
名前
値
説明
SOLID_ERR_OK0
正常終了
SOLID_ERR_PAR-17
パラメータエラー
SOLID_ERR_CTX-25
コンテキストエラー(呼び出せないコンテキストから呼び出された)
SOLID_ERR_MACV-26
メモリアクセス違反
SOLID_ERR_NOMEM-33
メモリ不足
SOLID_ERR_NORES-35
リソース不足
SOLID_ERR_NOTFOUND-1000
操作対象が見つからない
SOLID_ERR_NOTSUPPORTED-1001
対象の環境では非サポート
SOLID_ERR_EBADF-1002
書き込み/読み込み属性と要求が不整合
SOLID_ERR_INVALIDCONTENT-1003
データ構造が想定通りでない、壊れている
SOLID_ERR_NOTUSED-1004
操作する対象は使われていない(無効である)
SOLID_ERR_ALREADYUSED-1005
(確保しようとしたものは)既に使用中である
SOLID_ERR_OUTOFBOUND-1006
(引数が大きすぎる/小さすぎるため)範囲外をアクセスしようとした
SOLID_ERR_BADSEQUENCE-1007
処理中のシーケンスで異常が発生した
SOLID_ERR_UNKNOWNDEVICE-1008
不明なデバイスである
SOLID_ERR_BUSY-1009
(前の作業がまだ実行中のため)ビジー中 (後で再度試せば成功する可能性がある)
SOLID_ERR_TIMEOUT-1010
処理がタイムアウトした。(処理は失敗している可能性が高い)
SOLID_ERR_INVALIDACCESS-1011
アクセス方法に不整合がある
SOLID_ERR_NOTREADY-1012
(初期化等が終了しておらず)処理ができない
SOLID_ADDRESS¶
-
typedef uint32_t SOLID_ADDRESS¶
説明
SOLIDで使用する仮想アドレスの型 (AArch32時は
uint32_t, AArch64時はuint64_t)定義
typedef uint32_t SOLID_ADDRESS;
SOLID_PHYADDRESS¶
-
typedef uint32_t SOLID_PHYADDRESS¶
説明
SOLIDで使用する物理アドレスの型 (AArch32時は
uint32_t, LPAE使用時およびAArch64時はuint64_t)定義
typedef uint32_t SOLID_PHYADDRESS;
SOLID_REGISTER¶
-
typedef uint32_t SOLID_REGISTER¶
説明
SOLIDで使用するレジスタの型 (AArch32時は
uint32_t, AArch64時はuint64_t)定義
typedef uint32_t SOLID_REGISTER;
SOLID_CPU_CONTEXT¶
-
typedef struct _SOLID_CPU_CONTEXT_ SOLID_CPU_CONTEXT¶
-
struct _SOLID_CPU_CONTEXT_¶
説明
SOLIDで使用するコンテキスト情報(割り込みやタイマで使用)
構造体のレイアウトはターゲットアーキテクチャによって異なります。また、 FPU/浮動小数点に関するメンバはFPU/NEONが有効な構成でのみ存在します。
定義
/* AArch32時 */ typedef struct _SOLID_CPU_CONTEXT_ { SOLID_REGISTER rarm[16]; SOLID_REGISTER cpsr; struct _SOLID_CPU_CONTEXT_* pNest; SOLID_FPU_CONTEXT* pFPU; /* FPU/NEON有効時のみ */ } SOLID_CPU_CONTEXT; /* AArch64時 */ typedef struct _SOLID_CPU_CONTEXT_ { SOLID_REGISTER xarm[31]; SOLID_REGISTER sp; SOLID_REGISTER pc; SOLID_REGISTER32 pstate; SOLID_REGISTER32 spsel; struct _SOLID_CPU_CONTEXT_* pNest; SOLID_FPU_CONTEXT* pFPU; /* FPU/NEON有効時のみ */ } SOLID_CPU_CONTEXT; /* Cortex-M (ARMv7-M/ARMv8-M)時 */ typedef struct _SOLID_CPU_CONTEXT_ { ARM_M_AUTOSTACK *astack; /* 例外時に自動退避されるレジスタ群 */ SOLID_REGISTER r[8]; /* r4-r11 */ SOLID_REGISTER exc_return; SOLID_REGISTER control; struct _SOLID_CPU_CONTEXT_* pNest; SOLID_REGISTER s2[16]; /* FPU/NEON有効時のみ */ } SOLID_CPU_CONTEXT; /* RISC-V時 */ typedef struct _SOLID_CPU_CONTEXT_ { SOLID_REGISTER sstatus; SOLID_REGISTER x[31]; SOLID_REGISTER pc; SOLID_REGISTER scause; struct _SOLID_CPU_CONTEXT_* pNest; SOLID_FPUREGISTER f[32]; /* 浮動小数点有効時のみ */ SOLID_REGISTER32 fcsr; /* 浮動小数点有効時のみ */ /* ベクタ拡張(SOLID_RISCV_V_SUPPORT)有効時はベクタレジスタが続く */ } SOLID_CPU_CONTEXT;
メンバー
-
SOLID_REGISTER rarm[16]¶
-
SOLID_REGISTER cpsr¶
汎用レジスタ r0-r15, cpsrレジスタ(AArch32時)
-
SOLID_REGISTER xarm[31]¶
-
SOLID_REGISTER sp¶
-
SOLID_REGISTER pc¶
-
SOLID_REGISTER32 pstate¶
-
SOLID_REGISTER32 spsel¶
汎用レジスタ r0-r30, sp, pc, pstate, spselレジスタS (AArch64時)
Cortex-M時:ARM_M_AUTOSTACK *astack,SOLID_REGISTER r[8],SOLID_REGISTER exc_return,SOLID_REGISTER control自動退避レジスタ(astack), 汎用レジスタ r4-r11, exc_return, controlレジスタRISC-V時:SOLID_REGISTER sstatus,SOLID_REGISTER x[31],SOLID_REGISTER pc,SOLID_REGISTER scausesstatus, 汎用レジスタ x1-x31, pc, scauseレジスタ-
struct _SOLID_CPU_CONTEXT_ *pNest¶
多重割り込みの場合、その割り込み元のコンテキスト情報へのポインタ
-
SOLID_FPU_CONTEXT *pFPU¶
FPUのレジスタ情報へのポインタ(AArch32/AArch64でFPU/NEON有効時のみ存在)。 Cortex-Mでは
SOLID_REGISTER s2[16]、RISC-VではSOLID_FPUREGISTER f[32]およびfcsrが浮動小数点有効時のみ存在します。
-
SOLID_REGISTER rarm[16]¶