ドライバの登録

新しいファイルシステムをSOLIDに追加する場合、solid_fs_driver.h にある、 SOLID_FS_Register 関数を使って登録してください。

#include "solid_fs_driver.h"

データタイプ

SOLID_FS_HANDLER

typedef struct _SOLID_FS_HANDLER_ SOLID_FS_HANDLER
struct _SOLID_FS_HANDLER_

説明

ファイルシステムの登録用構造体

定義

typedef struct _SOLID_FS_HANDLER_ {
    struct _SOLID_FS_HANDLER_ * pNext;
    size_t mlen;
    char mount[SOLID_MAX_PATH];

    void* param; /* 常に第一引数に渡されるパラメータ */

    int (*open)(void*,void**, const char*, int);          /* File Open  */
    int (*close)(void*,void*);                            /* File Close */
    int (*read)(void*,void*,void*,size_t,size_t*);                /* File Read  */
    int (*write)(void*,void*,const void*,size_t,size_t*); /* File Write */
    int (*lseek)(void*,void*,off_t);                              /* File Seek  */
    int (*sync)(void*,void*);                                     /* File Sync  */
    int (*ftell)(void*,void*, off_t*);                    /* File Ftell */
    int (*eof)(void*,void*, int*);                                /* File EOF   */
    int (*fsize)(void*,void*, size_t*);                   /* File Size  */
    int (*truncate)(void*,const char*, off_t);            /* File Truncate */

    int (*opendir)(void*,const char*, void**);    /* Dir Open   */
    int (*closedir)(void*,void*);                 /* Dir Close  */
    int (*readdir)(void*,void*,struct dirent*);   /* Dir Read   */

    int (*stat)(void*,const char*, struct stat*); /* File/Dir Stat   */
    int (*unlink)(void*,const char*);                     /* File/Dir Delete */
    int (*rename)(void*,const char*,const char*); /* File/Dir Rename */
    int (*chmod)(void*,const char*, int);         /* File/Dir Chmod  */
    int (*utime)(void*,const char*, time_t);              /* File/Dir Utime  */
    int (*mkdir)(void*,const char*);                      /* Dir Mkdir       */

    /* SOLIDが設定する関数 */
    void* (*malloc)(size_t size);         /* malloc */
    void (*free)(void*);                  /* free */

} SOLID_FS_HANDLER;

メンバー

struct _SOLID_FS_HANDLER_ *pNext
size_t mlen

コアサービスが使用します。

char mount[SOLID_MAX_PATH]

ファイルシステムの識別に使用するprefix(例: FATFS)を格納してください。

void *param

各関数を呼び出す際、常に第一引数として渡されるパラメータです。 ドライバ側で任意に利用できます。

int (*open)(void*, void**, const char*, int)
int (*close)(void*, void*)
int (*read)(void*, void*, void*, size_t, size_t*)
int (*write)(void*, void*, const void*, size_t, size_t*)
int (*lseek)(void*, void*, off_t)
int (*sync)(void*, void*)
int (*ftell)(void*, void*, off_t*)
int (*eof)(void*, void*, int*)
int (*fsize)(void*, void*, size_t*)
int (*truncate)(void*, const char*, off_t)
int (*opendir)(void*, const char*, void**)
int (*closedir)(void*, void*)
int (*readdir)(void*, void*, struct dirent*)
int (*stat)(void*, const char*, struct stat*)
int (*rename)(void*, const char*, const char*)
int (*chmod)(void*, const char*, int)
int (*utime)(void*, const char*, time_t)
int (*mkdir)(void*, const char*)

ファイルシステムが提供する関数を登録してください。 サポートされない関数はNULLを指定してください。 各関数の第一引数には param が渡されます。

void *(*malloc)(size_t size)
void (*free)(void*)

コアサービスが提供する動的メモリ関数です。ドライバ内のメモリの確保、解放は こちらを使用してください。

API

SOLID_FS_Register

int SOLID_FS_Register(SOLID_FS_HANDLER *pHandler)

ファイルシステム用ドライバを登録します

パラメータ:
  • pHandler -- 登録用構造体

戻り値:

SOLID_FS_UnRegister

int SOLID_FS_UnRegister(SOLID_FS_HANDLER *pHandler)

ドライバの登録を解除します

パラメータ:
  • pHandler -- 登録用構造体

戻り値: