25 #define RPC_PACKET_SIZE 64
28 #define PACKET_F_ALLOC 0x01
50 #ifdef F__rpc_get_packet
54 int len,
pid, rid = 0;
90 #ifdef F__rpc_get_fpacket
116 cd->
hdr.sema_id = -1;
132 if (cd->
hdr.sema_id < 0)
147 void *sendbuf,
int ssize,
void *recvbuf,
int rsize,
157 cd->
hdr.pkt_addr = call;
159 cd->
hdr.sema_id = -1;
193 if (cd->
hdr.sema_id < 0)
207 #ifdef F_SifRpcGetOtherData
218 rd->
hdr.pkt_addr = other;
220 rd->
hdr.sema_id = -1;
237 if (rd->
hdr.sema_id < 0)
253 static u8 pkt_table[2048] __attribute__((aligned(64)));
271 static void rpc_packet_free(
void *
packet)
293 if (client->
hdr.sema_id >= 0)
296 rpc_packet_free(client->
hdr.pkt_addr);
309 server = queue->
link;
311 if (server->
sid == sid)
314 server = server->
link;
334 server = search_svdata(
bind->sid,
data);
355 base->
end->link = server;
357 base->
start = server;
391 static int _rb_count = 0;
435 #ifdef F_SifRegisterRpc
454 if (!(server =
qd->
link)) {
457 while ((server = server->
next))
469 #ifdef F_SifRemoveRpc
477 if((server = queue->
link) == sd)
481 while(server !=
NULL)
483 if(server->
link == sd)
489 server = server->
link;
499 #ifdef F_SifSetRpcQueue
530 #ifdef F_SifRemoveRpcQueue
560 #ifdef F_SifGetNextRequest
569 if (server !=
NULL) {
582 #ifdef F_SifExecRequest
659 #ifdef F_SifCheckStatRpc
s32 CreateSema(ee_sema_t *sema)
s32 iWakeupThread(s32 thread_id)
s32 DeleteSema(s32 sema_id)
s32 iSignalSema(s32 sema_id)
u32 SifSetDma(SifDmaTransfer_t *sdd, s32 len)
static void nopdelay(void)
s32 WaitSema(s32 sema_id)
int SifSetReg(u32 register_num, int register_value)
int SifGetReg(u32 register_num)
int SifGetSreg(int index)
unsigned int SifSendCmd(int cmd, void *packet, int packet_size, void *src_extra, void *dest_extra, int size_extra)
#define SIF_CMD_RPC_RDATA
void SifWriteBackDCache(void *ptr, int size)
void SifAddCmdHandler(int pos, SifCmdHandler_t handler, void *harg)
unsigned int iSifSendCmd(int cmd, void *packet, int packet_size, void *src_extra, void *dest_extra, int size_extra)
struct rpc_data _sif_rpc_data
void * _rpc_get_packet(struct rpc_data *rpc_data)
void * _rpc_get_fpacket(struct rpc_data *rpc_data)
void SifInitRpc(int mode)
SifRpcServerData_t * SifRegisterRpc(SifRpcServerData_t *srv, int sid, SifRpcFunc_t func, void *buff, SifRpcFunc_t cfunc, void *cbuff, SifRpcDataQueue_t *qd)
SifRpcDataQueue_t * SifSetRpcQueue(SifRpcDataQueue_t *q, int thread_id)
int SifCheckStatRpc(SifRpcClientData_t *cd)
SifRpcServerData_t * SifRemoveRpc(SifRpcServerData_t *sd, SifRpcDataQueue_t *queue)
void SifExecRequest(SifRpcServerData_t *srv)
void SifRpcLoop(SifRpcDataQueue_t *q)
SifRpcServerData_t * SifGetNextRequest(SifRpcDataQueue_t *qd)
int SifRpcGetOtherData(SifRpcReceiveData_t *rd, void *src, void *dest, int size, int mode)
SifRpcDataQueue_t * SifRemoveRpcQueue(SifRpcDataQueue_t *qd)
int SifBindRpc(SifRpcClientData_t *client, int rpc_number, int mode)
void(* SifRpcEndFunc_t)(void *end_param)
void *(* SifRpcFunc_t)(int fno, void *buffer, int length)
int SifCallRpc(SifRpcClientData_t *client, int rpc_number, int mode, void *send, int ssize, void *receive, int rsize, SifRpcEndFunc_t end_function, void *end_param)
static SifRpcDataQueue_t qd
struct t_SifRpcClientData * client
struct t_SifRpcServerData * server
struct t_SifRpcServerData * server
SifRpcEndFunc_t end_function
struct t_SifRpcHeader hdr
struct t_SifRpcServerData * end
struct t_SifRpcServerData * start
struct t_SifRpcDataQueue * next
struct t_SifRpcServerData * link
struct t_SifRpcReceiveData * receive
struct t_SifRpcHeader hdr
struct t_SifRpcServerData * server
struct t_SifRpcClientData * client
struct t_SifRpcServerData * link
struct t_SifRpcServerData * next
struct t_SifRpcDataQueue * base
struct t_SifRpcClientData * client