sdk-core
v2026.11.05
PS2 SDK - core tier (build-critical EE/IOP modules)
Toggle main menu visibility
Loading...
Searching...
No Matches
sifrpc-common.h
Go to the documentation of this file.
1
/*
2
# _____ ___ ____ ___ ____
3
# ____| | ____| | | |____|
4
# | ___| |____ ___| ____| | \ PS2DEV Open Source Project.
5
#-----------------------------------------------------------------------
6
# Copyright 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
16
17
#ifndef __SIFRPC_COMMON_H__
18
#define __SIFRPC_COMMON_H__
19
20
#include <
sifcmd-common.h
>
21
22
/* Modes for bind() and call() */
24
#define SIF_RPC_M_NOWAIT 0x01
26
#define SIF_RPC_M_NOWBDC 0x02
27
28
#ifdef __cplusplus
29
extern
"C"
{
30
#endif
31
32
typedef
void
*(*SifRpcFunc_t)(
int
fno,
void
*buffer,
int
length);
33
typedef
void (*SifRpcEndFunc_t)(
void
*end_param);
34
35
#ifdef __cplusplus
36
}
37
#endif
38
39
typedef
struct
t_SifRpcPktHeader
40
{
41
struct
t_SifCmdHeader
sifcmd;
42
int
rec_id;
43
void
*pkt_addr;
44
int
rpc_id;
45
} SifRpcPktHeader_t;
46
47
typedef
struct
t_SifRpcRendPkt
48
{
49
struct
t_SifCmdHeader
sifcmd;
50
int
rec_id;
/* 04 */
51
void
*pkt_addr;
/* 05 */
52
int
rpc_id;
/* 06 */
53
54
struct
t_SifRpcClientData
*cd;
/* 7 */
55
u32 cid;
/* 8 */
56
struct
t_SifRpcServerData
*sd;
/* 9 */
57
void
*buf,
/* 10 */
58
*cbuf;
/* 11 */
59
} SifRpcRendPkt_t;
60
61
typedef
struct
t_SifRpcOtherDataPkt
62
{
63
struct
t_SifCmdHeader
sifcmd;
64
int
rec_id;
/* 04 */
65
void
*pkt_addr;
/* 05 */
66
int
rpc_id;
/* 06 */
67
68
struct
t_SifRpcReceiveData
*recvbuf;
/* 07 */
69
void
*src;
/* 08 */
70
void
*dest;
/* 09 */
71
int
size;
/* 10 */
72
} SifRpcOtherDataPkt_t;
73
74
typedef
struct
t_SifRpcBindPkt
75
{
76
struct
t_SifCmdHeader
sifcmd;
77
int
rec_id;
/* 04 */
78
void
*pkt_addr;
/* 05 */
79
int
rpc_id;
/* 06 */
80
struct
t_SifRpcClientData
*cd;
/* 07 */
81
int
sid;
/* 08 */
82
} SifRpcBindPkt_t;
83
84
typedef
struct
t_SifRpcCallPkt
85
{
86
struct
t_SifCmdHeader
sifcmd;
87
int
rec_id;
/* 04 */
88
void
*pkt_addr;
/* 05 */
89
int
rpc_id;
/* 06 */
90
struct
t_SifRpcClientData
*cd;
/* 07 */
91
int
rpc_number;
/* 08 */
92
int
send_size;
/* 09 */
93
void
*recvbuf;
/* 10 */
94
int
recv_size;
/* 11 */
95
int
rmode;
/* 12 */
96
struct
t_SifRpcServerData
*sd;
/* 13 */
97
} SifRpcCallPkt_t;
98
99
typedef
struct
t_SifRpcServerData
100
{
101
int
sid;
/* 04 00 */
102
103
SifRpcFunc_t func;
/* 05 01 */
104
void
*buf;
/* 06 02 */
105
int
size;
/* 07 03 */
106
107
SifRpcFunc_t cfunc;
/* 08 04 */
108
void
*cbuf;
/* 09 05 */
109
int
size2;
/* 10 06 */
110
111
struct
t_SifRpcClientData
*client;
/* 11 07 */
112
void
*pkt_addr;
/* 12 08 */
113
int
rpc_number;
/* 13 09 */
114
115
void
*recvbuf;
/* 14 10 */
116
int
rsize;
/* 15 11 */
117
int
rmode;
/* 16 12 */
118
int
rid;
/* 17 13 */
119
120
struct
t_SifRpcServerData
*link;
/* 18 14 */
121
struct
t_SifRpcServerData
*next;
/* 19 15 */
122
struct
t_SifRpcDataQueue
*base;
/* 20 16 */
123
} SifRpcServerData_t;
124
125
126
typedef
struct
t_SifRpcHeader
127
{
128
void
*pkt_addr;
/* 04 00 */
129
u32 rpc_id;
/* 05 01 */
130
int
sema_id;
/* 06 02 */
131
u32 mode;
/* 07 03 */
132
} SifRpcHeader_t;
133
134
135
typedef
struct
t_SifRpcClientData
136
{
137
struct
t_SifRpcHeader
hdr;
138
u32 command;
/* 04 08 */
139
void
*buf,
/* 05 09 */
140
*cbuf;
/* 06 10 */
141
SifRpcEndFunc_t end_function;
/* 07 11 */
142
void
*end_param;
/* 08 12 */
143
struct
t_SifRpcServerData
*server;
/* 09 13 */
144
} SifRpcClientData_t;
145
146
typedef
struct
t_SifRpcReceiveData
147
{
148
struct
t_SifRpcHeader
hdr;
149
void
*src,
/* 04 */
150
*dest;
/* 05 */
151
int
size;
/* 06 */
152
} SifRpcReceiveData_t;
153
154
typedef
struct
t_SifRpcDataQueue
155
{
156
int
thread_id,
/* 00 */
157
active;
/* 01 */
158
struct
t_SifRpcServerData
*link,
/* 02 */
159
*start,
/* 03 */
160
*end;
/* 04 */
161
struct
t_SifRpcDataQueue
*next;
/* 05 */
162
} SifRpcDataQueue_t;
163
164
#ifdef __cplusplus
165
extern
"C"
{
166
#endif
167
168
extern
void
sceSifInitRpc(
int
mode);
169
#ifdef _EE
170
extern
void
sceSifExitRpc(
void
);
171
#endif
172
173
/* SIF RPC client API */
174
extern
int
sceSifBindRpc(SifRpcClientData_t *cd,
int
sid,
int
mode);
175
extern
int
sceSifCallRpc(SifRpcClientData_t *cd,
int
rpc_number,
int
mode,
void
*sendbuf,
176
int
ssize,
void
*recvbuf,
int
rsize, SifRpcEndFunc_t end_function,
void
*end_param);
177
178
extern
void
sceSifRegisterRpc(SifRpcServerData_t *sd,
int
sid, SifRpcFunc_t func,
void
*buf,
179
SifRpcFunc_t cfunc,
void
*cbuf, SifRpcDataQueue_t *qd);
180
181
extern
int
sceSifCheckStatRpc(SifRpcClientData_t *cd);
182
183
/* SIF RPC server API */
184
extern
void
sceSifSetRpcQueue(SifRpcDataQueue_t *qd,
int
thread_id);
185
extern
SifRpcServerData_t *sceSifGetNextRequest(SifRpcDataQueue_t *qd);
186
extern
void
sceSifExecRequest(SifRpcServerData_t *sd);
187
extern
void
sceSifRpcLoop(SifRpcDataQueue_t *qd);
188
189
extern
int
sceSifGetOtherData(SifRpcReceiveData_t *rd,
void
*src,
void
*dest,
int
size,
int
mode);
190
191
extern
SifRpcServerData_t *sceSifRemoveRpc(SifRpcServerData_t *sd, SifRpcDataQueue_t *qd);
192
extern
SifRpcDataQueue_t *sceSifRemoveRpcQueue(SifRpcDataQueue_t *qd);
193
#ifdef _IOP
194
extern
void
sceSifSetSif1CB(
void
(*func)(
void
*userdata),
void
*userdata);
195
extern
void
sceSifClearSif1CB(
void
);
196
#endif
197
198
#ifdef __cplusplus
199
}
200
#endif
201
202
// For backwards compatibility purposes
203
#define SifInitRpc(...) sceSifInitRpc(__VA_ARGS__)
204
#define SifExitRpc(...) sceSifExitRpc(__VA_ARGS__)
205
#define SifBindRpc(...) sceSifBindRpc(__VA_ARGS__)
206
#define SifCallRpc(...) sceSifCallRpc(__VA_ARGS__)
207
#define SifRegisterRpc(...) sceSifRegisterRpc(__VA_ARGS__)
208
#define SifCheckStatRpc(...) sceSifCheckStatRpc(__VA_ARGS__)
209
#define SifSetRpcQueue(...) sceSifSetRpcQueue(__VA_ARGS__)
210
#define SifGetNextRequest(...) sceSifGetNextRequest(__VA_ARGS__)
211
#define SifExecRequest(...) sceSifExecRequest(__VA_ARGS__)
212
#define SifRpcLoop(...) sceSifRpcLoop(__VA_ARGS__)
213
#define SifRpcGetOtherData(...) sceSifGetOtherData(__VA_ARGS__)
214
#define SifRemoveRpc(...) sceSifRemoveRpc(__VA_ARGS__)
215
#define SifRemoveRpcQueue(...) sceSifRemoveRpcQueue(__VA_ARGS__)
216
217
#endif
/* __SIFRPC_COMMON_H__ */
sifcmd-common.h
t_SifCmdHeader
Definition
sifcmd-common.h:24
t_SifRpcBindPkt
Definition
sifrpc-common.h:75
t_SifRpcCallPkt
Definition
sifrpc-common.h:85
t_SifRpcClientData
Definition
sifrpc-common.h:136
t_SifRpcDataQueue
Definition
sifrpc-common.h:155
t_SifRpcHeader
Definition
sifrpc-common.h:127
t_SifRpcOtherDataPkt
Definition
sifrpc-common.h:62
t_SifRpcPktHeader
Definition
sifrpc-common.h:40
t_SifRpcReceiveData
Definition
sifrpc-common.h:147
t_SifRpcRendPkt
Definition
sifrpc-common.h:48
t_SifRpcServerData
Definition
sifrpc-common.h:100
core
common
include
sifrpc-common.h
Generated by
1.18.0