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