|
PS2SDK
PS2 Homebrew Libraries
|
#include <tamtypes.h>#include <kernel.h>#include <sifrpc.h>#include <string.h>#include "libmc.h"
Include dependency graph for libmc.c:Go to the source code of this file.
Data Structures | |
| struct | mcNameParam_t |
| struct | libmc_PageReadAlignData |
| union | mcNameParam_t.__unnamed__ |
Macros | |
| #define | RSIZE 2048 |
Enumerations | |
| enum | MC_RPCCMD_NUMBERS { MC_RPCCMD_INIT = 0x00, MC_RPCCMD_GET_INFO, MC_RPCCMD_OPEN, MC_RPCCMD_CLOSE, MC_RPCCMD_SEEK, MC_RPCCMD_READ, MC_RPCCMD_WRITE, MC_RPCCMD_FLUSH, MC_RPCCMD_CH_DIR, MC_RPCCMD_GET_DIR, MC_RPCCMD_SET_INFO, MC_RPCCMD_DELETE, MC_RPCCMD_FORMAT, MC_RPCCMD_UNFORMAT, MC_RPCCMD_GET_ENT, MC_RPCCMD_CHG_PRITY, MC_RPCCMD_CHECK_BLOCK, MC_RPCCMD_ERASE_BLOCK = 0x0E, MC_RPCCMD_READ_PAGE, MC_RPCCMD_WRITE_PAGE } |
Functions | |
| static mcNameParam_t g_nameParam | __attribute__ ((aligned(64))) |
| static void | mcGetInfoApdx (void *info) |
| static void | mcReadFixAlign (void *data_raw) |
| static void | mcStoreDir (void *arg) |
| int | mcInit (int type) |
| int | mcGetInfo (int port, int slot, int *type, int *free, int *format) |
| int | mcOpen (int port, int slot, const char *name, int mode) |
| int | mcClose (int fd) |
| int | mcSeek (int fd, int offset, int origin) |
| int | mcRead (int fd, void *buffer, int size) |
| int | mcWrite (int fd, const void *buffer, int size) |
| int | mcFlush (int fd) |
| int | mcMkDir (int port, int slot, const char *name) |
| int | mcChdir (int port, int slot, const char *newDir, char *currentDir) |
| int | mcGetDir (int port, int slot, const char *name, unsigned mode, int maxent, sceMcTblGetDir *table) |
| int | mcSetFileInfo (int port, int slot, const char *name, const sceMcTblGetDir *info, unsigned flags) |
| int | mcDelete (int port, int slot, const char *name) |
| int | mcFormat (int port, int slot) |
| int | mcUnformat (int port, int slot) |
| int | mcGetEntSpace (int port, int slot, const char *path) |
| int | mcRename (int port, int slot, const char *oldName, const char *newName) |
| int | mcEraseBlock (int port, int slot, int block, int mode) |
| static void | libmc_ReadAlignFunction (struct libmc_PageReadAlignData *data) |
| int | mcReadPage (int port, int slot, unsigned int page, void *buffer) |
| int | mcWritePage (int port, int slot, int page, const void *buffer) |
| int | mcChangeThreadPriority (int level) |
| int | mcSync (int mode, int *cmd, int *result) |
| int | mcReset (void) |
Variables | |
| static const int | mcRpcCmd [2][17] |
| int | _iop_reboot_count |
| s32 | result |
| mcRpcStat_t | rpcStat |
| u8 | buffer [RSIZE] |
| static int * | g_pType = NULL |
| static int * | g_pFree = NULL |
| static int * | g_pFormat = NULL |
| static int | g_mclibInited = 0 |
| static unsigned int | g_currentCmd = 0 |
| static int | g_mcType = MC_TYPE_MC |
| struct libmc_PageReadAlignData | __attribute__ |
Function defenitions for mclib.
Definition in file libmc.c.
| struct libmc_PageReadAlignData |
| union mcNameParam_t.__unnamed__ |
| Data Fields | ||
|---|---|---|
| sceMcTblGetDir * | mcT | |
| char * | curdir | |
| enum MC_RPCCMD_NUMBERS |
|
static |
file descriptor related mc command used by: mcInit, mcClose, mcSeek, mcRead, mcWrite, mcGetinfo, mcFormat, mcFlush, mcUnformat, mcChangeThreadPriority
rpc client data
|
static |
|
static |
|
static |
| int mcInit | ( | int | type | ) |
| int mcGetInfo | ( | int | port, |
| int | slot, | ||
| int * | type, | ||
| int * | free, | ||
| int * | format | ||
| ) |
get memcard state mcSync result: 0 = same card as last getInfo call -1 = formatted card inserted since last getInfo call -2 = unformatted card inserted since last getInfo call < -2 = memcard access error (could be due to accessing psx memcard)
| port | port number |
| slot | slot number |
| type | pointer to get memcard type |
| free | pointer to get number of free clusters |
| format | pointer to get whether or not the card is formatted (Note: Originally, sceMcGetInfo didn't have a 5th argument for returning the format status. As this is emulated based on the return value of sceMcSync() when rom0:MCSERV is used, please keep track of the return value from sceMcSync instead!) |
| int mcOpen | ( | int | port, |
| int | slot, | ||
| const char * | name, | ||
| int | mode | ||
| ) |
| int mcClose | ( | int | fd | ) |
| int mcSeek | ( | int | fd, |
| int | offset, | ||
| int | origin | ||
| ) |
| int mcRead | ( | int | fd, |
| void * | buffer, | ||
| int | size | ||
| ) |
| int mcWrite | ( | int | fd, |
| const void * | buffer, | ||
| int | size | ||
| ) |
| int mcFlush | ( | int | fd | ) |
| int mcMkDir | ( | int | port, |
| int | slot, | ||
| const char * | name | ||
| ) |
| int mcChdir | ( | int | port, |
| int | slot, | ||
| const char * | newDir, | ||
| char * | currentDir | ||
| ) |
change current dir (can also get current dir) mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
| newDir | new dir to change to |
| currentDir | buffer to get current dir (use 0 if not needed) |
Definition at line 573 of file libmc.c.
References g_currentCmd, and g_mclibInited.
| int mcGetDir | ( | int | port, |
| int | slot, | ||
| const char * | name, | ||
| unsigned | mode, | ||
| int | maxent, | ||
| sceMcTblGetDir * | table | ||
| ) |
get memcard filelist mcSync result: 0 or more = number of file entries obtained (success) -2 = unformatted card -4 = dirname error
| port | port number of memcard |
| slot | slot number of memcard |
| name | filename to search for (can use wildcard and relative dirs) |
| mode | mode: 0 = first call, otherwise = followup call |
| maxext | maximum number of entries to be written to filetable in 1 call |
| table | mc table array |
| int mcSetFileInfo | ( | int | port, |
| int | slot, | ||
| const char * | name, | ||
| const sceMcTblGetDir * | info, | ||
| unsigned | flags | ||
| ) |
| int mcDelete | ( | int | port, |
| int | slot, | ||
| const char * | name | ||
| ) |
| int mcFormat | ( | int | port, |
| int | slot | ||
| ) |
format memory card mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
Definition at line 681 of file libmc.c.
References g_currentCmd, and g_mclibInited.
| int mcUnformat | ( | int | port, |
| int | slot | ||
| ) |
unformat memory card mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
Definition at line 703 of file libmc.c.
References g_currentCmd, and g_mclibInited.
| int mcGetEntSpace | ( | int | port, |
| int | slot, | ||
| const char * | path | ||
| ) |
| int mcRename | ( | int | port, |
| int | slot, | ||
| const char * | oldName, | ||
| const char * | newName | ||
| ) |
rename file or dir on memcard Note: rom0:MCSERV does not support this. mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
| oldName | name of file/dir to rename |
| newName | new name to give to file/dir |
Definition at line 749 of file libmc.c.
References g_mclibInited, and g_mcType.
| int mcEraseBlock | ( | int | port, |
| int | slot, | ||
| int | block, | ||
| int | mode | ||
| ) |
Erases a block on the memory card. Note: rom0:XMCSERV does not support this. mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
| block | Block number of the block to be erased. |
| mode | Mode: -1 to inhibit ECC recalculation of the erased block's pages (useful if sceMcWritePage is used to fill in its contents later on), 0 for normal operation. |
| int mcReadPage | ( | int | port, |
| int | slot, | ||
| unsigned int | page, | ||
| void * | buffer | ||
| ) |
Reads a page from the memory card. Note: rom0:XMCSERV does not support this. mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
| page | Page number of the page to be read. |
| buffer | Pointer to buffer that will contain the read data. |
| int mcWritePage | ( | int | port, |
| int | slot, | ||
| int | page, | ||
| const void * | buffer | ||
| ) |
Writes a page to the memory card. (The block which the page resides on must be erased first!) Note: rom0:XMCSERV does not support this. mcSync returns: 0 if ok < 0 if error
| port | port number |
| slot | slot number |
| page | Page number of the page to be written. |
| buffer | Pointer to buffer containing data to be written. |
| int mcChangeThreadPriority | ( | int | level | ) |
change mcserv thread priority (I don't think this is implemented properly) Note: rom0:MCSERV does not support this. mcSync returns: 0 if ok < 0 if error
| level | thread priority |
Definition at line 875 of file libmc.c.
References g_mclibInited, and g_mcType.
| int mcSync | ( | int | mode, |
| int * | cmd, | ||
| int * | result | ||
| ) |
wait for mc functions to finish or check if they have finished yet
| mode | mode 0=wait till function finishes, 1=check function status |
| cmd | pointer for storing the number of the currenlty processing function |
| result | pointer for storing result of function if it finishes |
| int mcReset | ( | void | ) |
Reset (force deinit) of library
Definition at line 940 of file libmc.c.
References g_mclibInited.
|
static |
| int _iop_reboot_count |
external IOP reboot count
Referenced by poweroffInit().
|
static |
whether or not mc lib has been inited
Definition at line 151 of file libmc.c.
Referenced by mcChangeThreadPriority(), mcChdir(), mcFormat(), mcRename(), mcReset(), and mcUnformat().
|
static |
stores command currently being executed on the iop
Definition at line 154 of file libmc.c.
Referenced by mcChdir(), mcFormat(), and mcUnformat().
|
static |
specifies whether using MCSERV or XMCSERV modules
Definition at line 157 of file libmc.c.
Referenced by mcChangeThreadPriority(), and mcRename().