diff options
Diffstat (limited to 'arm9/lib/src/FS_command.c')
-rw-r--r-- | arm9/lib/src/FS_command.c | 77 |
1 files changed, 0 insertions, 77 deletions
diff --git a/arm9/lib/src/FS_command.c b/arm9/lib/src/FS_command.c deleted file mode 100644 index e677f6c6..00000000 --- a/arm9/lib/src/FS_command.c +++ /dev/null @@ -1,77 +0,0 @@ -#include "FS_file.h" -#include "FS_archive.h" -#include "FSi_util.h" -#include "FS_command.h" - -ARM_FUNC void FSi_ReleaseCommand(FSFile * p_file, FSResult ret) -{ - OSIntrMode bak_psr = OS_DisableInterrupts(); - FSi_CutFromList(p_file); - p_file->stat &= ~(FS_FILE_STATUS_CANCEL | FS_FILE_STATUS_BUSY | FS_FILE_STATUS_SYNC | FS_FILE_STATUS_ASYNC | FS_FILE_STATUS_OPERATING); - p_file->error = ret; - OS_WakeupThread(p_file->queue); - (void)OS_RestoreInterrupts(bak_psr); -} - -ARM_FUNC FSResult FSi_TranslateCommand(FSFile *p_file, FSCommandType command) -{ - FSResult ret; - - FSArchive *const p_arc = p_file->arc; - const int bit = (1 << command); - - if (FS_IsFileSyncMode(p_file)) - p_arc->flag |= FS_ARCHIVE_FLAG_IS_SYNC; - else - p_arc->flag |= FS_ARCHIVE_FLAG_IS_ASYNC; - - if ((p_arc->proc_flag & bit) != 0) - { - switch (ret = (*p_arc->proc) (p_file, command)) - { - case FS_RESULT_SUCCESS: - case FS_RESULT_FAILURE: - case FS_RESULT_UNSUPPORTED: - p_file->error = ret; - break; - case FS_RESULT_PROC_ASYNC: - break; - case FS_RESULT_PROC_UNKNOWN: - ret = FS_RESULT_PROC_DEFAULT; - p_arc->proc_flag &= ~bit; - break; - default: - break; - } - } - else - { - ret = FS_RESULT_PROC_DEFAULT; - } - if (ret == FS_RESULT_PROC_DEFAULT) - { - ret = (*fsi_default_command[command]) (p_file); - } - if (ret == FS_RESULT_PROC_ASYNC) - { - if (FS_IsFileSyncMode(p_file)) - { - OSIntrMode bak_psr = OS_DisableInterrupts(); - while (FSi_IsArchiveSync(p_arc)) - OS_SleepThread(&p_arc->sync_q); - ret = p_file->error; - (void)OS_RestoreInterrupts(bak_psr); - } - } - else if (!FS_IsFileSyncMode(p_file)) - { - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_ASYNC; - FSi_ReleaseCommand(p_file, ret); - } - else - { - p_arc->flag &= ~FS_ARCHIVE_FLAG_IS_SYNC; - p_file->error = ret; - } - return ret; -} |