マクロ定義 | |
| #define | criFs_SetUserAllocator(p_malloc_func, p_free_func, p_obj) |
| ユーザアロケータの登録 | |
| #define | criFs_SetDefaultConfig(p_config) |
| デフォルトコンフィギュレーションのセット | |
型定義 | |
| typedef void *(CRIAPI * | CriFsMallocFunc )(void *obj, CriUint32 size) |
| メモリ確保関数 | |
| typedef void(CRIAPI * | CriFsFreeFunc )(void *obj, void *mem) |
| メモリ解放関数 | |
| typedef struct CriFsBinderHnObjTag * | CriFsBinderHn |
| CriFsBinderハンドル | |
関数 | |
| void CRIAPI | criFs_SetUserMallocFunction (CriFsMallocFunc func, void *obj) |
| メモリ確保関数の登録 | |
| void CRIAPI | criFs_SetUserFreeFunction (CriFsFreeFunc func, void *obj) |
| メモリ解放関数の登録 | |
| CriError CRIAPI | criFs_SetSelectIoCallback (CriFsSelectIoCbFunc func) |
| I/O選択コールバックの登録 | |
| #define criFs_SetUserAllocator | ( | p_malloc_func, | |
| p_free_func, | |||
| p_obj | |||
| ) |
{\
criFs_SetUserMallocFunction(p_malloc_func, p_obj);\
criFs_SetUserFreeFunction(p_free_func, p_obj);\
}
ユーザアロケータの登録
| [in] | p_malloc_func | メモリ確保関数 |
| [in] | p_free_func | メモリ解放関数 |
| [in] | p_obj | ユーザ指定オブジェクト |
| #define criFs_SetDefaultConfig | ( | p_config | ) |
{\
(p_config)->thread_model = CRIFS_CONFIG_DEFAULT_THREAD_MODEL;\
(p_config)->num_binders = CRIFS_CONFIG_DEFAULT_NUM_BINDERS;\
(p_config)->num_loaders = CRIFS_CONFIG_DEFAULT_NUM_LOADERS;\
(p_config)->num_group_loaders = CRIFS_CONFIG_DEFAULT_NUM_GROUP_LOADERS;\
(p_config)->num_stdio_handles = CRIFS_CONFIG_DEFAULT_NUM_STDIO_HANDLES;\
(p_config)->num_installers = CRIFS_CONFIG_DEFAULT_NUM_INSTALLERS;\
(p_config)->max_binds = CRIFS_CONFIG_DEFAULT_MAX_BINDS;\
(p_config)->max_files = CRIFS_CONFIG_DEFAULT_MAX_FILES;\
(p_config)->max_path = CRIFS_CONFIG_DEFAULT_MAX_PATH;\
(p_config)->version = CRI_FS_VERSION;\
}
デフォルトコンフィギュレーションのセット
| [in] | config | コンフィギュレーション |
| typedef void*(CRIAPI * CriFsMallocFunc)(void *obj, CriUint32 size) |
メモリ確保関数
| [in] | obj | ユーザ指定オブジェクト |
| [in] | size | 要求メモリサイズ(バイト単位) |
| typedef void(CRIAPI * CriFsFreeFunc)(void *obj, void *mem) |
メモリ解放関数
| [in] | obj | ユーザ指定オブジェクト |
| [in] | mem | 解放するメモリアドレス |
| typedef struct CriFsBinderHnObjTag* CriFsBinderHn |
CriFsBinderハンドル
| void CRIAPI criFs_SetUserMallocFunction | ( | CriFsMallocFunc | func, |
| void * | obj | ||
| ) |
メモリ確保関数の登録
| [in] | func | メモリ確保関数 |
| [in] | obj | ユーザ指定オブジェクト |
// 独自のメモリ確保関数を用意 void *user_malloc(void *obj, CriUint32 size) { void *mem; // メモリの確保 mem = malloc(size); return (mem); } main() { : // メモリ確保関数の登録 criFs_SetUserMallocFunction(user_malloc, NULL); : }
| void CRIAPI criFs_SetUserFreeFunction | ( | CriFsFreeFunc | func, |
| void * | obj | ||
| ) |
メモリ解放関数の登録
| [in] | func | メモリ解放関数 |
| [in] | obj | ユーザ指定オブジェクト |
// 独自のメモリ解放関数を用意 void user_free(void *obj, void *mem) { // メモリの解放 free(mem); return; } main() { : // メモリ解放関数の登録 criFs_SetUserFreeFunction(user_free, NULL); : }
| CriError CRIAPI criFs_SetSelectIoCallback | ( | CriFsSelectIoCbFunc | func | ) |
I/O選択コールバックの登録
| [in] | func | I/O選択コールバック |
// 独自のI/Oインターフェースを定義 // 備考)構造体のメンバ関数はユーザが独自に実装。 static CriFsIoInterface g_userIoInterface = { userExists, userRemove, userRename, userOpen, userClose, userGetFileSize, userRead, userIsReadComplete, userGetReadSize, userWrite, userIsWriteComplete, userGetWriteSize, userFlush, userResize, userGetNativeFileHandle }; // I/O選択コールバック関数 CriError user_select_io_callback( const CriChar8 *path, CriFsDeviceId *device_id, CriFsIoInterfacePtr *ioif) { // パスを解析し、デバイスのIDを特定する if (strncmp(path, …) == 0) { (*device_id) = CRIFS_DEVICE_〜; } else { (*device_id) = CRIFS_DEFAULT_DEVICE; } // ファイルアクセスに使用するI/Oインターフェースを指定する (*ioif) = g_userIoInterface; return (CRIERR_OK); } int main(…) { : // I/O選択コールバックを登録 criFs_SetSelectIoCallback(user_select_io_callback); : }