PS2SDK
PS2 Homebrew Libraries
|
#include <tamtypes.h>
#include <kernel.h>
#include <sifrpc.h>
#include <string.h>
#include "libmc.h"
Go to the source code of this file.
Data Structures | |
struct | mcNameParam_t |
struct | libmc_PageReadAlignData |
union | mcNameParam_t.__unnamed74__ |
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.__unnamed74__ |
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 |
function that gets called when mcGetInfo ends and interrupts are disabled
Definition at line 163 of file libmc.c.
References g_mcType.
Referenced by mcGetInfo().
|
static |
|
static |
int mcInit | ( | int | type | ) |
init memcard lib
type | MC_TYPE_MC = use MCSERV/MCMAN; MC_TYPE_XMC = use XMCSERV/XMCMAN |
Definition at line 230 of file libmc.c.
References _iop_reboot_count, g_currentCmd, g_mclibInited, g_mcType, mcReset(), and mcRpcCmd.
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!) |
Definition at line 336 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcGetInfoApdx(), mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcOpen | ( | int | port, |
int | slot, | ||
const char * | name, | ||
int | mode | ||
) |
open a file on memcard mcSync returns: 0 or more = file descriptor (success) < 0 = error
port | port number |
slot | slot number |
name | filename to open |
mode | open file mode (O_RDWR, O_CREAT, etc) |
Definition at line 378 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
Referenced by mcMkDir().
int mcClose | ( | int | fd | ) |
close an open file on memcard mcSync returns: 0 if closed successfully < 0 = error
fd | file descriptor of open file |
Definition at line 403 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcSeek | ( | int | fd, |
int | offset, | ||
int | origin | ||
) |
move memcard file pointer mcSync returns: 0 or more = offset of file pointer from start of file < 0 = error
fd | file descriptor |
offset | number of bytes from origin |
origin | initial position for offset |
Definition at line 424 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcRead | ( | int | fd, |
void * | buffer, | ||
int | size | ||
) |
read from file on memcard mcSync returns: 0 or more = number of bytes read from memcard < 0 = error
fd | file descriptor |
buffer | buffer to read to |
size | number of bytes to read |
Definition at line 447 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcReadFixAlign(), mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcWrite | ( | int | fd, |
const void * | buffer, | ||
int | size | ||
) |
write to file on memcard mcSync returns: 0 or more = number of bytes written to memcard < 0 = error
fd | file descriptor |
buffer | to write from write |
size | number of bytes to read |
Definition at line 473 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcFlush | ( | int | fd | ) |
flush file cache to memcard mcSync returns: 0 if ok < 0 if error
fd | file descriptor |
Definition at line 511 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcMkDir | ( | int | port, |
int | slot, | ||
const char * | name | ||
) |
create a dir mcSync returns: 0 if ok < 0 if error
port | port number |
slot | slot number |
name | directory name |
Definition at line 532 of file libmc.c.
References g_currentCmd, and mcOpen().
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 541 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, mcStoreDir(), and SIF_RPC_M_NOWAIT.
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 |
Definition at line 567 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcSetFileInfo | ( | int | port, |
int | slot, | ||
const char * | name, | ||
const sceMcTblGetDir * | info, | ||
unsigned | flags | ||
) |
change file information mcSync returns: 0 if ok < 0 if error
port | port number |
slot | slot number |
name | filename to access |
info | data to be changed |
flags | flags to show which data is valid |
Definition at line 595 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcDelete | ( | int | port, |
int | slot, | ||
const char * | name | ||
) |
delete file mcSync returns: 0 if deleted successfully < 0 if error
port | port number to delete from |
slot | slot number to delete from |
name | filename to delete |
Definition at line 624 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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 649 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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 671 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
int mcGetEntSpace | ( | int | port, |
int | slot, | ||
const char * | path | ||
) |
get free space info mcSync returns: 0 or more = number of free entries (success) < 0 if error
port | port number |
slot | slot number |
path | path to be checked |
Definition at line 693 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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 717 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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. |
Definition at line 746 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
|
static |
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. |
Definition at line 789 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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. |
Definition at line 814 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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 843 of file libmc.c.
References g_currentCmd, g_mclibInited, g_mcType, mcRpcCmd, and SIF_RPC_M_NOWAIT.
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 |
Definition at line 866 of file libmc.c.
References g_currentCmd.
int mcReset | ( | void | ) |
Reset (force deinit) of library
Definition at line 908 of file libmc.c.
References g_mclibInited.
Referenced by mcInit().
|
static |
rpc command function numbers mcRpcCmd[MC_TYPE_??][MC_RPCCMD_???]
Definition at line 56 of file libmc.c.
Referenced by mcChangeThreadPriority(), mcChdir(), mcClose(), mcDelete(), mcEraseBlock(), mcFlush(), mcFormat(), mcGetDir(), mcGetEntSpace(), mcGetInfo(), mcInit(), mcOpen(), mcRead(), mcReadPage(), mcRename(), mcSeek(), mcSetFileInfo(), mcUnformat(), mcWrite(), and mcWritePage().
|
extern |
external IOP reboot count
Referenced by mcInit().
mcRpcStat_t rpcStat |
|
static |
whether or not mc lib has been inited
Definition at line 151 of file libmc.c.
Referenced by mcChangeThreadPriority(), mcChdir(), mcClose(), mcDelete(), mcEraseBlock(), mcFlush(), mcFormat(), mcGetDir(), mcGetEntSpace(), mcGetInfo(), mcInit(), mcOpen(), mcRead(), mcReadPage(), mcRename(), mcReset(), mcSeek(), mcSetFileInfo(), mcUnformat(), mcWrite(), and mcWritePage().
|
static |
stores command currently being executed on the iop
Definition at line 154 of file libmc.c.
Referenced by mcChangeThreadPriority(), mcChdir(), mcClose(), mcDelete(), mcEraseBlock(), mcFlush(), mcFormat(), mcGetDir(), mcGetEntSpace(), mcGetInfo(), mcInit(), mcMkDir(), mcOpen(), mcRead(), mcReadPage(), mcRename(), mcSeek(), mcSetFileInfo(), mcSync(), mcUnformat(), mcWrite(), and mcWritePage().
|
static |
specifies whether using MCSERV or XMCSERV modules
Definition at line 157 of file libmc.c.
Referenced by mcChangeThreadPriority(), mcChdir(), mcClose(), mcDelete(), mcEraseBlock(), mcFlush(), mcFormat(), mcGetDir(), mcGetEntSpace(), mcGetInfo(), mcGetInfoApdx(), mcInit(), mcOpen(), mcRead(), mcReadFixAlign(), mcReadPage(), mcRename(), mcSeek(), mcSetFileInfo(), mcUnformat(), mcWrite(), and mcWritePage().