PS2SDK
PS2 Homebrew Libraries
devfs.h
Go to the documentation of this file.
1 /*
2 # _____ ___ ____ ___ ____
3 # ____| | ____| | | |____|
4 # | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5 #-----------------------------------------------------------------------
6 # Copyright 2001-2004, ps2dev - http://www.ps2dev.org
7 # Licenced under Academic Free License version 2.0
8 # Review ps2sdk README & LICENSE files for further details.
9 */
10 
19 #ifndef __DEVFS_H__
20 #define __DEVFS_H__
21 
22 #include <types.h>
23 #include <irx.h>
24 
26 typedef s32 HDEV;
28 #define DEVFS_MAX_SUBDEVS 16
29 
30 #define DEVFS_MAX_DEVNAME_LENGTH 32
31 
32 #define DEVFS_MAX_DESC_LENGTH 256
33 
36 {
38  DEVFS_MODE_EX = (1 << 0),
40  DEVFS_MODE_W = (1 << 1),
42  DEVFS_MODE_R = (1 << 2),
45 };
46 
51 {
58 };
59 
61 #define DEVFS_IOCTL_TYPE_1 1
62 
63 #define DEVFS_IOCTL_TYPE_2 2
64 
66 #define DEVFS_IOCTL_GETDESC 0
67 
69 typedef union
70 
71 {
73  u32 loc32[2];
75  u64 loc64;
76 } devfs_loc_t;
77 
79 typedef struct
80 
81 {
83  void *data;
85  s32 subdev;
89  u32 mode;
92 } devfs_info_t;
93 
95 typedef s32 (*read_handler)(const devfs_info_t *dev, u8 *buf, s32 len);
97 typedef s32 (*write_handler)(const devfs_info_t *dev, u8 *buf, s32 len);
99 typedef s32 (*ioctl_handler)(const devfs_info_t *dev, int ioctl_type, int cmd, void *arg,
100  size_t arglen, void *buf, size_t buflen);
101 
103 typedef struct
104 {
106  char *name;
108  char *desc;
110  s32 devtype;
119 } devfs_node_t;
120 
126 extern HDEV DevFSAddDevice(const devfs_node_t *node);
133 extern int DevFSDelDevice(HDEV hDev);
134 
142 extern int DevFSAddSubDevice(HDEV hDev, u32 subdev_no, s32 mode, devfs_loc_t extent, void *data);
143 
149 extern int DevFSDelSubDevice(HDEV hDev, u32 subdev_no);
150 
152 #define INVALID_HDEV -1
153 
154 #define devfs_IMPORTS_start DECLARE_IMPORT_TABLE(devfs, 1, 1)
155 #define devfs_IMPORTS_end END_IMPORT_TABLE
156 
157 #define I_DevFSAddDevice DECLARE_IMPORT(4, DevFSAddDevice)
158 #define I_DevFSDelDevice DECLARE_IMPORT(5, DevFSDelDevice)
159 #define I_DevFSAddSubDevice DECLARE_IMPORT(6, DevFSAddSubDevice)
160 #define I_DevFSDelSubDevice DECLARE_IMPORT(7, DevFSDelSubDevice)
161 
162 #endif /* __DEVFS_H__ */
163 
devfs_devtypes
devfs_devtypes
Definition: devfs.h:50
DEVFS_MODE_EX
@ DEVFS_MODE_EX
Definition: devfs.h:38
devfs_node_t::blocksize
u32 blocksize
Definition: devfs.h:112
devfs_info_t::mode
u32 mode
Definition: devfs.h:89
HDEV
s32 HDEV
Definition: devfs.h:26
devfs_info_t::loc
devfs_loc_t loc
Definition: devfs.h:91
devfs_node_t::devtype
s32 devtype
Definition: devfs.h:110
devfs_info_t::data
void * data
Definition: devfs.h:83
ioctl_handler
s32(* ioctl_handler)(const devfs_info_t *dev, int ioctl_type, int cmd, void *arg, size_t arglen, void *buf, size_t buflen)
Definition: devfs.h:99
DEVFS_MODE_R
@ DEVFS_MODE_R
Definition: devfs.h:42
DEVFS_DEVTYPE_CHAR
@ DEVFS_DEVTYPE_CHAR
Definition: devfs.h:53
devfs_node_t::ioctl
ioctl_handler ioctl
Definition: devfs.h:118
devfs_loc_t::loc64
u64 loc64
Definition: devfs.h:75
irx.h
devfs_node_t::read
read_handler read
Definition: devfs.h:114
DevFSAddSubDevice
int DevFSAddSubDevice(HDEV hDev, u32 subdev_no, s32 mode, devfs_loc_t extent, void *data)
Definition: devfs.c:1213
devfs_info_t
Definition: devfs.h:79
DevFSDelSubDevice
int DevFSDelSubDevice(HDEV hDev, u32 subdev_no)
Definition: devfs.c:1251
DEVFS_MODE_W
@ DEVFS_MODE_W
Definition: devfs.h:40
DEVFS_MODE_RW
@ DEVFS_MODE_RW
Definition: devfs.h:44
devfs_node_t::desc
char * desc
Definition: devfs.h:108
devfs_loc_t
Definition: devfs.h:69
DevFSAddDevice
HDEV DevFSAddDevice(const devfs_node_t *node)
Definition: devfs.c:1109
DEVFS_DEVTYPE_BLOCK
@ DEVFS_DEVTYPE_BLOCK
Definition: devfs.h:55
devfs_info_t::subdev
s32 subdev
Definition: devfs.h:85
write_handler
s32(* write_handler)(const devfs_info_t *dev, u8 *buf, s32 len)
Definition: devfs.h:97
devfs_node_t::name
char * name
Definition: devfs.h:106
devfs_node_t
Definition: devfs.h:103
devfs_subdev_modes
devfs_subdev_modes
Definition: devfs.h:35
read_handler
s32(* read_handler)(const devfs_info_t *dev, u8 *buf, s32 len)
Definition: devfs.h:95
DEVFS_DEVTYPE_STREAM
@ DEVFS_DEVTYPE_STREAM
Definition: devfs.h:57
DevFSDelDevice
int DevFSDelDevice(HDEV hDev)
Definition: devfs.c:1162
devfs_node_t::write
write_handler write
Definition: devfs.h:116