ファイルシステム

SOLIDでのファイルへのアクセスは、SOLID_FS APIを介して行います。

SOLID_FS APIを使用するには、solid_fs.h をインクルードしてください。

#include "solid_fs.h"

SOLIDには、基本構成としてFATファイルシステム、簡易的なメモリファイルシステム、デバッガ接続時のみ 使用可能なVLINKファイルシステムが存在します。 どのファイルシステムへのアクセスかは、パス名の先頭にて区別されます。 例えば、VLINKファイルシステムへのアクセスは、\VLINK\ を先頭につけます。

int fd;
int result = SOLID_FS_Open(&fd, "\\VLINK\\textfile.txt", O_CREAT | O_RDWR | O_TRUNC);
if (result == SOLID_ERR_OK)
{
    size_t bytes_written;
    result = SOLID_FS_Write(fd, "hello", 5, &bytes_written);
    SOLID_FS_Close(fd);
}

本項

ドライバの登録

ドライバの登録について

FATファイルシステムドライバの登録

Fatファイルシステムのドライバの登録について

API

SOLID_MAX_PATH

SOLID_MAX_PATH

パス名およびディレクトリエントリ名の最大長(256)です。

S_DIR

typedef int S_DIR

ディレクトリ識別子の型です。SOLID_FS_OpenDir で取得し、 SOLID_FS_ReadDir / SOLID_FS_CloseDir で使用します。

struct dirent

struct dirent

説明

ディレクトリエントリ情報を格納する構造体。SOLID_FS_ReadDir で取得します。

定義

struct dirent {
    ino_t d_ino;
    unsigned char d_type;
    char d_name[SOLID_MAX_PATH];
};

メンバー

ino_t d_ino

iノード番号

unsigned char d_type

エントリの種別 (下記の DT_* 定数のいずれか)

char d_name[SOLID_MAX_PATH]

エントリ名(文字列, NULL終端)

DT_UNKNOWN
DT_FIFO
DT_CHR
DT_DIR
DT_BLK
DT_REG
DT_LNK
DT_SOCK
DT_WHT

struct direntd_type がとる値です。

名前

説明

DT_UNKNOWN

0

不明

DT_FIFO

1

名前付きパイプ(FIFO)

DT_CHR

2

キャラクタデバイス

DT_DIR

4

ディレクトリ

DT_BLK

6

ブロックデバイス

DT_REG

8

通常ファイル

DT_LNK

10

シンボリックリンク

DT_SOCK

12

ソケット

DT_WHT

14

ホワイトアウト

SOLID_FS_Open

int SOLID_FS_Open(int *fd, const char *path, int mode)

ファイルへのアクセスを開始します

成功した場合、fdに識別子が入ります

パラメータ:
  • fd -- オープンしたファイルの識別子

  • path -- ファイルパス(文字列, NULL終端)

  • mode -- O_XXX (fcntl.h を参照)

戻り値:

SOLID_FS_Close

int SOLID_FS_Close(int fd)

ファイルへのアクセスを終了します

パラメータ:
  • fd -- ファイルの識別子

戻り値:

SOLID_FS_Read

int SOLID_FS_Read(int fd, void *buf, size_t size, size_t *result)

ファイルからデータを読み込みます

パラメータ:
  • fd -- ファイルの識別子

  • buf -- 格納先

  • size -- 読み込むサイズ(byte)

  • result -- 実際に取得できたサイズ(byte)

戻り値:

SOLID_FS_Write

int SOLID_FS_Write(int fd, const void *buf, size_t size, size_t *result)

ファイルへデータを書き込みます

パラメータ:
  • fd -- ファイルの識別子

  • buf -- 書き込むデータ

  • size -- 書き込むサイズ(byte)

  • result -- 実際に書き込んだサイズ(byte)

戻り値:

SOLID_FS_Lseek

int SOLID_FS_Lseek(int fd, off_t offset, int whence)

ファイルのアクセス位置を移動します

パラメータ:
  • fd -- ファイルの識別子

  • offset -- オフセット(byte)

  • whence -- SEEK_XXX(fcntl.h を参照)

戻り値:

SOLID_FS_Sync

int SOLID_FS_Sync(int fd)

ファイルの書き込みをフラッシュします

パラメータ:
  • fd -- ファイルの識別子

戻り値:

SOLID_FS_Ftell

int SOLID_FS_Ftell(int fd, off_t *result)

ファイルのアクセス位置を取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- 現在のアクセス位置(先頭からのオフセット, byte)

戻り値:

SOLID_FS_Feof

int SOLID_FS_Feof(int fd, int *result)

ファイルのアクセス位置が終端に来ているかどうかを取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- 終端:1 それ以外:0

戻り値:

SOLID_FS_Fsize

int SOLID_FS_Fsize(int fd, size_t *result)

ファイルサイズを取得します

パラメータ:
  • fd -- ファイルの識別子

  • result -- ファイルサイズ(byte)

戻り値:

SOLID_FS_Truncate

int SOLID_FS_Truncate(const char *path, off_t size)

指定されたファイルのサイズを切り詰めます

パラメータ:
  • path -- ファイルパス(文字列, NULL終端)

  • size -- ファイルサイズ(byte)

戻り値:

SOLID_FS_OpenDir

int SOLID_FS_OpenDir(const char *path, S_DIR *pDir)

ディレクトリをオープンする

パラメータ:
  • path -- オープンするディレクトリへのパス(文字列, NULL終端)

  • pDir -- ディレクトリ識別子

戻り値:

SOLID_FS_CloseDir

int SOLID_FS_CloseDir(S_DIR dir)

ディレクトリをクローズする

パラメータ:
  • dir -- ディレクトリ識別子

戻り値:

SOLID_FS_ReadDir

int SOLID_FS_ReadDir(S_DIR dir, struct dirent *dirp)

オープンされたディレクトリの次のエントリを取得する

パラメータ:
  • dir -- ディレクトリ識別子

  • dirp -- エントリ情報の格納先

戻り値:

SOLID_FS_Stat

int SOLID_FS_Stat(const char *path, struct stat *buf)

ファイル/ディレクトリの情報を取得する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • buf -- 情報格納先(stat.h 参照)

戻り値:

SOLID_FS_Rename

int SOLID_FS_Rename(const char *oldpath, const char *newpath)

ファイル/ディレクトリの名前を変更する

パラメータ:
  • oldpath -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • newpath -- 変更後のパス(文字列, NULL終端)

戻り値:

SOLID_FS_Chmod

int SOLID_FS_Chmod(const char *path, int mode)

ファイル/ディレクトリの属性を変更する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • mode -- S_XXX (stat.h 参照)

戻り値:

SOLID_FS_Utime

int SOLID_FS_Utime(const char *path, time_t time)

ファイル/ディレクトリのタイムスタンプを変更する

パラメータ:
  • path -- ファイル/ディレクトリのパス(文字列, NULL終端)

  • time -- 変更する時間

戻り値:

SOLID_FS_Mkdir

int SOLID_FS_Mkdir(const char *path)

ディレクトリを作成する

パラメータ:
  • path -- 生成するディレクトリパス(文字列, NULL終端)

戻り値:

メモリファイルシステム

SOLIDでのファイルシステムは、メモリの一部をファイルの内容としてアクセスする、 簡易的なファイルシステムが実装されています。

指定するファイルパスは、\ROM\<アドレス>,<サイズ> を指定します。 アドレスおよびサイズは16進数で指定してください。