mirror of
https://github.com/pspdev/pspsdk.git
synced 2026-01-06 15:10:29 +00:00
477 lines
13 KiB
C
477 lines
13 KiB
C
/*
|
|
* PSP Software Development Kit - https://github.com/pspdev
|
|
* -----------------------------------------------------------------------
|
|
* Licensed under the BSD license, see LICENSE in PSPSDK root for details.
|
|
*
|
|
* pspiofilemgr.h - Prototypes for the sceIo library.
|
|
*
|
|
* Copyright (c) 2005 Marcus R. Brown <mrbrown@ocgnet.org>
|
|
* Copyright (c) 2005 James Forshaw <tyranid@gmail.com>
|
|
* Copyright (c) 2005 John Kelley <ps2dev@kelley.ca>
|
|
*
|
|
*/
|
|
#ifndef __FILEIO_H__
|
|
#define __FILEIO_H__
|
|
|
|
#include <pspkerneltypes.h>
|
|
#include <pspiofilemgr_fcntl.h>
|
|
#include <pspiofilemgr_stat.h>
|
|
#include <pspiofilemgr_dirent.h>
|
|
|
|
/** @defgroup FileIO File IO Library
|
|
* This module contains the imports for the kernel's IO routines.
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/** @addtogroup FileIO File IO Library */
|
|
/**@{*/
|
|
|
|
/** Permission value for the sceIoAssign function */
|
|
enum IoAssignPerms
|
|
{
|
|
/** Assign the device read/write */
|
|
IOASSIGN_RDWR = 0,
|
|
/** Assign the device read only */
|
|
IOASSIGN_RDONLY = 1
|
|
};
|
|
|
|
/**
|
|
* Open or create a file for reading or writing
|
|
*
|
|
* @par Example1: Open a file for reading
|
|
* @code
|
|
* if(!(fd = sceIoOpen("device:/path/to/file", O_RDONLY, 0777)) {
|
|
* // error
|
|
* }
|
|
* @endcode
|
|
* @par Example2: Open a file for writing, creating it if it doesnt exist
|
|
* @code
|
|
* if(!(fd = sceIoOpen("device:/path/to/file", O_WRONLY|O_CREAT, 0777)) {
|
|
* // error
|
|
* }
|
|
* @endcode
|
|
*
|
|
* @param file - Pointer to a string holding the name of the file to open
|
|
* @param flags - Libc styled flags that are or'ed together
|
|
* @param mode - File access mode.
|
|
* @return A non-negative integer is a valid fd, anything else an error
|
|
*/
|
|
SceUID sceIoOpen(const char *file, int flags, SceMode mode);
|
|
|
|
/**
|
|
* Open or create a file for reading or writing (asynchronous)
|
|
*
|
|
* @param file - Pointer to a string holding the name of the file to open
|
|
* @param flags - Libc styled flags that are or'ed together
|
|
* @param mode - File access mode.
|
|
* @return A non-negative integer is a valid fd, anything else an error
|
|
*/
|
|
SceUID sceIoOpenAsync(const char *file, int flags, SceMode mode);
|
|
|
|
/**
|
|
* Delete a descriptor
|
|
*
|
|
* @code
|
|
* sceIoClose(fd);
|
|
* @endcode
|
|
*
|
|
* @param fd - File descriptor to close
|
|
* @return < 0 on error
|
|
*/
|
|
int sceIoClose(SceUID fd);
|
|
|
|
/**
|
|
* Delete a descriptor (asynchronous)
|
|
*
|
|
* @param fd - File descriptor to close
|
|
* @return < 0 on error
|
|
*/
|
|
int sceIoCloseAsync(SceUID fd);
|
|
|
|
/**
|
|
* Read input
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* bytes_read = sceIoRead(fd, data, 100);
|
|
* @endcode
|
|
*
|
|
* @param fd - Opened file descriptor to read from
|
|
* @param data - Pointer to the buffer where the read data will be placed
|
|
* @param size - Size of the read in bytes
|
|
*
|
|
* @return The number of bytes read
|
|
*/
|
|
int sceIoRead(SceUID fd, void *data, SceSize size);
|
|
|
|
/**
|
|
* Read input (asynchronous)
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* bytes_read = sceIoRead(fd, data, 100);
|
|
* @endcode
|
|
*
|
|
* @param fd - Opened file descriptor to read from
|
|
* @param data - Pointer to the buffer where the read data will be placed
|
|
* @param size - Size of the read in bytes
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoReadAsync(SceUID fd, void *data, SceSize size);
|
|
|
|
/**
|
|
* Write output
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* bytes_written = sceIoWrite(fd, data, 100);
|
|
* @endcode
|
|
*
|
|
* @param fd - Opened file descriptor to write to
|
|
* @param data - Pointer to the data to write
|
|
* @param size - Size of data to write
|
|
*
|
|
* @return The number of bytes written
|
|
*/
|
|
int sceIoWrite(SceUID fd, const void *data, SceSize size);
|
|
|
|
/**
|
|
* Write output (asynchronous)
|
|
*
|
|
* @param fd - Opened file descriptor to write to
|
|
* @param data - Pointer to the data to write
|
|
* @param size - Size of data to write
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoWriteAsync(SceUID fd, const void *data, SceSize size);
|
|
|
|
/**
|
|
* Reposition read/write file descriptor offset
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* pos = sceIoLseek(fd, -10, SEEK_END);
|
|
* @endcode
|
|
*
|
|
* @param fd - Opened file descriptor with which to seek
|
|
* @param offset - Relative offset from the start position given by whence
|
|
* @param whence - Set to SEEK_SET to seek from the start of the file, SEEK_CUR
|
|
* seek from the current position and SEEK_END to seek from the end.
|
|
*
|
|
* @return The position in the file after the seek.
|
|
*/
|
|
SceOff sceIoLseek(SceUID fd, SceOff offset, int whence);
|
|
|
|
/**
|
|
* Reposition read/write file descriptor offset (asynchronous)
|
|
*
|
|
* @param fd - Opened file descriptor with which to seek
|
|
* @param offset - Relative offset from the start position given by whence
|
|
* @param whence - Set to SEEK_SET to seek from the start of the file, SEEK_CUR
|
|
* seek from the current position and SEEK_END to seek from the end.
|
|
*
|
|
* @return < 0 on error. Actual value should be passed returned by the ::sceIoWaitAsync call.
|
|
*/
|
|
int sceIoLseekAsync(SceUID fd, SceOff offset, int whence);
|
|
|
|
/**
|
|
* Reposition read/write file descriptor offset (32bit mode)
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* pos = sceIoLseek32(fd, -10, SEEK_END);
|
|
* @endcode
|
|
*
|
|
* @param fd - Opened file descriptor with which to seek
|
|
* @param offset - Relative offset from the start position given by whence
|
|
* @param whence - Set to SEEK_SET to seek from the start of the file, SEEK_CUR
|
|
* seek from the current position and SEEK_END to seek from the end.
|
|
*
|
|
* @return The position in the file after the seek.
|
|
*/
|
|
int sceIoLseek32(SceUID fd, int offset, int whence);
|
|
|
|
/**
|
|
* Reposition read/write file descriptor offset (32bit mode, asynchronous)
|
|
*
|
|
* @param fd - Opened file descriptor with which to seek
|
|
* @param offset - Relative offset from the start position given by whence
|
|
* @param whence - Set to SEEK_SET to seek from the start of the file, SEEK_CUR
|
|
* seek from the current position and SEEK_END to seek from the end.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoLseek32Async(SceUID fd, int offset, int whence);
|
|
|
|
/**
|
|
* Remove directory entry
|
|
*
|
|
* @param file - Path to the file to remove
|
|
* @return < 0 on error
|
|
*/
|
|
int sceIoRemove(const char *file);
|
|
|
|
/**
|
|
* Make a directory file
|
|
*
|
|
* @param dir
|
|
* @param mode - Access mode.
|
|
* @return Returns the value 0 if its succesful otherwise -1
|
|
*/
|
|
int sceIoMkdir(const char *dir, SceMode mode);
|
|
|
|
/**
|
|
* Remove a directory file
|
|
*
|
|
* @param path - Removes a directory file pointed by the string path
|
|
* @return Returns the value 0 if its succesful otherwise -1
|
|
*/
|
|
int sceIoRmdir(const char *path);
|
|
|
|
/**
|
|
* Change the current directory.
|
|
*
|
|
* @param path - The path to change to.
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoChdir(const char *path);
|
|
|
|
/**
|
|
* Change the name of a file
|
|
*
|
|
* @param oldname - The old filename
|
|
* @param newname - The new filename
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoRename(const char *oldname, const char *newname);
|
|
|
|
/**
|
|
* Open a directory
|
|
*
|
|
* @par Example:
|
|
* @code
|
|
* int dfd;
|
|
* dfd = sceIoDopen("device:/");
|
|
* if(dfd >= 0)
|
|
* { Do something with the file descriptor }
|
|
* @endcode
|
|
* @param dirname - The directory to open for reading.
|
|
* @return If >= 0 then a valid file descriptor, otherwise a Sony error code.
|
|
*/
|
|
SceUID sceIoDopen(const char *dirname);
|
|
|
|
/**
|
|
* Reads an entry from an opened file descriptor.
|
|
*
|
|
* @param fd - Already opened file descriptor (using sceIoDopen)
|
|
* @param dir - Pointer to an io_dirent_t structure to hold the file information
|
|
*
|
|
* @return Read status
|
|
* - 0 - No more directory entries left
|
|
* - > 0 - More directory entired to go
|
|
* - < 0 - Error
|
|
*/
|
|
int sceIoDread(SceUID fd, SceIoDirent *dir);
|
|
|
|
/**
|
|
* Close an opened directory file descriptor
|
|
*
|
|
* @param fd - Already opened file descriptor (using sceIoDopen)
|
|
* @return < 0 on error
|
|
*/
|
|
int sceIoDclose(SceUID fd);
|
|
|
|
/**
|
|
* Send a devctl command to a device.
|
|
*
|
|
* @par Example: Sending a simple command to a device (not a real devctl)
|
|
* @code
|
|
* sceIoDevctl("ms0:", 0x200000, indata, 4, NULL, NULL);
|
|
* @endcode
|
|
*
|
|
* @param dev - String for the device to send the devctl to (e.g. "ms0:")
|
|
* @param cmd - The command to send to the device
|
|
* @param indata - A data block to send to the device, if NULL sends no data
|
|
* @param inlen - Length of indata, if 0 sends no data
|
|
* @param outdata - A data block to receive the result of a command, if NULL receives no data
|
|
* @param outlen - Length of outdata, if 0 receives no data
|
|
* @return 0 on success, < 0 on error
|
|
*/
|
|
int sceIoDevctl(const char *dev, unsigned int cmd, void *indata, int inlen, void *outdata, int outlen);
|
|
|
|
/**
|
|
* Assigns one IO device to another (I guess)
|
|
* @param dev1 - The device name to assign.
|
|
* @param dev2 - The block device to assign from.
|
|
* @param dev3 - The filesystem device to mape the block device to dev1
|
|
* @param mode - Read/Write mode. One of IoAssignPerms.
|
|
* @param unk1 - Unknown, set to NULL.
|
|
* @param unk2 - Unknown, set to 0.
|
|
* @return < 0 on error.
|
|
*
|
|
* @par Example: Reassign flash0 in read/write mode.
|
|
* @code
|
|
* sceIoUnassign("flash0");
|
|
* sceIoAssign("flash0", "lflash0:0,0", "flashfat0:", IOASSIGN_RDWR, NULL, 0);
|
|
* @endcode
|
|
*
|
|
*/
|
|
int sceIoAssign(const char *dev1, const char *dev2, const char *dev3, int mode, void* unk1, long unk2);
|
|
|
|
/**
|
|
* Unassign an IO device.
|
|
* @param dev - The device to unassign.
|
|
* @return < 0 on error
|
|
*
|
|
* @par Example: See ::sceIoAssign
|
|
*/
|
|
int sceIoUnassign(const char *dev);
|
|
|
|
/**
|
|
* Get the status of a file.
|
|
*
|
|
* @param file - The path to the file.
|
|
* @param stat - A pointer to an io_stat_t structure.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoGetstat(const char *file, SceIoStat *stat);
|
|
|
|
/**
|
|
* Change the status of a file.
|
|
*
|
|
* @param file - The path to the file.
|
|
* @param stat - A pointer to an io_stat_t structure.
|
|
* @param bits - Bitmask defining which bits to change.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoChstat(const char *file, SceIoStat *stat, int bits);
|
|
|
|
/**
|
|
* Perform an ioctl on a device.
|
|
*
|
|
* @param fd - Opened file descriptor to ioctl to
|
|
* @param cmd - The command to send to the device
|
|
* @param indata - A data block to send to the device, if NULL sends no data
|
|
* @param inlen - Length of indata, if 0 sends no data
|
|
* @param outdata - A data block to receive the result of a command, if NULL receives no data
|
|
* @param outlen - Length of outdata, if 0 receives no data
|
|
* @return 0 on success, < 0 on error
|
|
*/
|
|
int sceIoIoctl(SceUID fd, unsigned int cmd, void *indata, int inlen, void *outdata, int outlen);
|
|
|
|
/**
|
|
* Perform an ioctl on a device. (asynchronous)
|
|
*
|
|
* @param fd - Opened file descriptor to ioctl to
|
|
* @param cmd - The command to send to the device
|
|
* @param indata - A data block to send to the device, if NULL sends no data
|
|
* @param inlen - Length of indata, if 0 sends no data
|
|
* @param outdata - A data block to receive the result of a command, if NULL receives no data
|
|
* @param outlen - Length of outdata, if 0 receives no data
|
|
* @return 0 on success, < 0 on error
|
|
*/
|
|
int sceIoIoctlAsync(SceUID fd, unsigned int cmd, void *indata, int inlen, void *outdata, int outlen);
|
|
|
|
/**
|
|
* Synchronise the file data on the device.
|
|
*
|
|
* @param device - The device to synchronise (e.g. msfat0:)
|
|
* @param unk - Unknown
|
|
*/
|
|
int sceIoSync(const char *device, unsigned int unk);
|
|
|
|
/**
|
|
* Wait for asyncronous completion.
|
|
*
|
|
* @param fd - The file descriptor which is current performing an asynchronous action.
|
|
* @param res - The result of the async action.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoWaitAsync(SceUID fd, SceInt64 *res);
|
|
|
|
/**
|
|
* Wait for asyncronous completion (with callbacks).
|
|
*
|
|
* @param fd - The file descriptor which is current performing an asynchronous action.
|
|
* @param res - The result of the async action.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoWaitAsyncCB(SceUID fd, SceInt64 *res);
|
|
|
|
/**
|
|
* Poll for asyncronous completion.
|
|
*
|
|
* @param fd - The file descriptor which is current performing an asynchronous action.
|
|
* @param res - The result of the async action.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoPollAsync(SceUID fd, SceInt64 *res);
|
|
|
|
/**
|
|
* Get the asyncronous completion status.
|
|
*
|
|
* @param fd - The file descriptor which is current performing an asynchronous action.
|
|
* @param poll - If 0 then waits for the status, otherwise it polls the fd.
|
|
* @param res - The result of the async action.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoGetAsyncStat(SceUID fd, int poll, SceInt64 *res);
|
|
|
|
/**
|
|
* Cancel an asynchronous operation on a file descriptor.
|
|
*
|
|
* @param fd - The file descriptor to perform cancel on.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoCancel(SceUID fd);
|
|
|
|
/**
|
|
* Get the device type of the currently opened file descriptor.
|
|
*
|
|
* @param fd - The opened file descriptor.
|
|
*
|
|
* @return < 0 on error. Otherwise the device type?
|
|
*/
|
|
int sceIoGetDevType(SceUID fd);
|
|
|
|
/**
|
|
* Change the priority of the asynchronous thread.
|
|
*
|
|
* @param fd - The opened fd on which the priority should be changed.
|
|
* @param pri - The priority of the thread.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoChangeAsyncPriority(SceUID fd, int pri);
|
|
|
|
/**
|
|
* Sets a callback for the asynchronous action.
|
|
*
|
|
* @param fd - The filedescriptor currently performing an asynchronous action.
|
|
* @param cb - The UID of the callback created with ::sceKernelCreateCallback
|
|
* @param argp - Pointer to an argument to pass to the callback.
|
|
*
|
|
* @return < 0 on error.
|
|
*/
|
|
int sceIoSetAsyncCallback(SceUID fd, SceUID cb, void *argp);
|
|
|
|
/**@}*/
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|