ドライバの登録

新しいファイルシステムを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];

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

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

    int (*stat)(const char*, struct stat*);       /* File/Dir Stat   */
    int (*unlink)(const char*);                   /* File/Dir Delete */
    int (*rename)(const char*,const char*);       /* File/Dir Rename */
    int (*chmod)(const char*, int);               /* File/Dir Chmod  */
    int (*utime)(const char*, time_t);            /* File/Dir Utime  */
    int (*mkdir)(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)を格納してください。

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

ファイルシステムが提供する関数を登録してください。 サポートされない関数はNULLを指定してください。

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 -- 登録用構造体

戻り値