SOLID独自の型

SOLID-OSでは、以下の独自の型およびエラーコードを使用します。

SOLID-OS独自の定義は、solid_type.h にあります。

#include "solid_type.h"

エラーコード

SOLID_ERR_OK
SOLID_ERR_PAR
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_OK

0

正常終了

SOLID_ERR_PAR

-17

パラメータエラー

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で使用するコンテキスト情報(割り込みやタイマで使用)

定義

/* AArch32時 */
typedef struct _SOLID_CPU_CONTEXT_ {
    SOLID_REGISTER rarm[16];
    SOLID_REGISTER cpsr;
    struct _SOLID_CPU_CONTEXT_* pNest;
    SOLID_FPU_CONTEXT* pFPU;
} 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;
} 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時)

struct _SOLID_CPU_CONTEXT_ *pNest

多重割り込みの場合、その割り込み元のコンテキスト情報へのポインタ

SOLID_FPU_CONTEXT *pFPU

FPUのレジスタ情報へのポインタ