10 u32 saved_threadstorage[2];
12 memset(tmpaddr, 0, 0x1c);
14 if(src_addr)tmp_addrlen = 0x1c;
16 cmdbuf[0] = 0x00070104;
17 cmdbuf[1] = (
u32)sockfd;
19 cmdbuf[3] = (
u32)flags;
20 cmdbuf[4] = (
u32)tmp_addrlen;
22 cmdbuf[7] = (((
u32)len)<<4) | 12;
25 saved_threadstorage[0] = cmdbuf[0x100>>2];
26 saved_threadstorage[1] = cmdbuf[0x104>>2];
28 cmdbuf[0x100>>2] = (tmp_addrlen<<14) | 2;
29 cmdbuf[0x104>>2] = (
u32)tmpaddr;
33 cmdbuf[0x100>>2] = saved_threadstorage[0];
34 cmdbuf[0x104>>2] = saved_threadstorage[1];
40 if(ret>0 && src_addr!=NULL)
43 if(*addrlen > tmpaddr[0])*addrlen = tmpaddr[0];
44 memcpy(src_addr->
sa_data, &tmpaddr[2], *addrlen - 2);
57 u32 saved_threadstorage[4];
59 if(src_addr)tmp_addrlen = 0x1c;
61 memset(tmpaddr, 0, 0x1c);
63 cmdbuf[0] = 0x00080102;
64 cmdbuf[1] = (
u32)sockfd;
66 cmdbuf[3] = (
u32)flags;
67 cmdbuf[4] = (
u32)tmp_addrlen;
70 saved_threadstorage[0] = cmdbuf[0x100>>2];
71 saved_threadstorage[1] = cmdbuf[0x104>>2];
72 saved_threadstorage[2] = cmdbuf[0x108>>2];
73 saved_threadstorage[3] = cmdbuf[0x10c>>2];
75 cmdbuf[0x100>>2] = (((
u32)len)<<14) | 2;
76 cmdbuf[0x104>>2] = (
u32)buf;
77 cmdbuf[0x108>>2] = (tmp_addrlen<<14) | 2;
78 cmdbuf[0x10c>>2] = (
u32)tmpaddr;
82 cmdbuf[0x100>>2] = saved_threadstorage[0];
83 cmdbuf[0x104>>2] = saved_threadstorage[1];
84 cmdbuf[0x108>>2] = saved_threadstorage[2];
85 cmdbuf[0x10c>>2] = saved_threadstorage[3];
91 if(ret>0 && src_addr!=NULL)
94 if(*addrlen > tmpaddr[0])*addrlen = tmpaddr[0];
95 memcpy(src_addr->
sa_data, &tmpaddr[2], *addrlen - 2);
105 if(len<0x2000)
return socuipc_cmd8(sockfd, buf, len, flags, src_addr, addrlen);
106 return socuipc_cmd7(sockfd, buf, len, flags, src_addr, addrlen);
u32 * getThreadCommandBuffer(void)
ssize_t socuipc_cmd7(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
s32 _net_convert_error(s32 sock_retval)
ssize_t socuipc_cmd8(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)
s32 svcSendSyncRequest(Handle session)
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen)