mirror of
https://github.com/switchbrew/libnx.git
synced 2025-06-21 12:32:40 +02:00
Add ipcAddSendSmart, ipcAddRecvSmart, use where applicable
This commit is contained in:
parent
e648524fa5
commit
635599491c
@ -173,6 +173,42 @@ static inline void ipcAddRecvStatic(IpcCommand* cmd, void* buffer, size_t size,
|
|||||||
cmd->NumStaticOut++;
|
cmd->NumStaticOut++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Adds a smart-buffer (buffer + static-buffer pair) to an IPC command structure.
|
||||||
|
* @param cmd IPC command structure.
|
||||||
|
* @param ipc_buffer_size IPC buffer size.
|
||||||
|
* @param buffer Address of the buffer.
|
||||||
|
* @param size Size of the buffer.
|
||||||
|
* @param index Index of buffer.
|
||||||
|
*/
|
||||||
|
static inline void ipcAddSendSmart(IpcCommand* cmd, size_t ipc_buffer_size, const void* buffer, size_t size, u8 index) {
|
||||||
|
if (ipc_buffer_size != 0 && size <= ipc_buffer_size) {
|
||||||
|
ipcAddSendBuffer(cmd, NULL, 0, 0);
|
||||||
|
ipcAddSendStatic(cmd, buffer, size, index);
|
||||||
|
} else {
|
||||||
|
ipcAddSendBuffer(cmd, buffer, size, 0);
|
||||||
|
ipcAddSendStatic(cmd, NULL, 0, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Adds a smart-receive-buffer (buffer + static-receive-buffer pair) to an IPC command structure.
|
||||||
|
* @param cmd IPC command structure.
|
||||||
|
* @param ipc_buffer_size IPC buffer size.
|
||||||
|
* @param buffer Address of the buffer.
|
||||||
|
* @param size Size of the buffer.
|
||||||
|
* @param index Index of buffer.
|
||||||
|
*/
|
||||||
|
static inline void ipcAddRecvSmart(IpcCommand* cmd, size_t ipc_buffer_size, void* buffer, size_t size, u8 index) {
|
||||||
|
if (ipc_buffer_size != 0 && size <= ipc_buffer_size) {
|
||||||
|
ipcAddRecvBuffer(cmd, NULL, 0, 0);
|
||||||
|
ipcAddRecvStatic(cmd, buffer, size, index);
|
||||||
|
} else {
|
||||||
|
ipcAddRecvBuffer(cmd, buffer, size, 0);
|
||||||
|
ipcAddRecvStatic(cmd, NULL, 0, index);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Tags an IPC command structure to send the PID.
|
* @brief Tags an IPC command structure to send the PID.
|
||||||
* @param cmd IPC command structure.
|
* @param cmd IPC command structure.
|
||||||
|
@ -151,29 +151,8 @@ static Result _binderTransactParcelAuto(
|
|||||||
u32 flags;
|
u32 flags;
|
||||||
} *raw;
|
} *raw;
|
||||||
|
|
||||||
void* buf_static[2] = {parcel_data, parcel_reply};
|
ipcAddSendSmart(&c, session->ipcBufferSize, parcel_data, parcel_data_size, 0);
|
||||||
void* buf_transfer[2] = {parcel_data, parcel_reply};
|
ipcAddRecvSmart(&c, session->ipcBufferSize, parcel_reply, parcel_reply_size, 0);
|
||||||
size_t buf_static_size[2] = {parcel_data_size, parcel_reply_size};
|
|
||||||
size_t buf_transfer_size[2] = {parcel_data_size, parcel_reply_size};
|
|
||||||
|
|
||||||
if(session->ipcBufferSize!=0 && buf_static_size[0] <= session->ipcBufferSize) {
|
|
||||||
buf_transfer[0] = NULL;
|
|
||||||
buf_transfer[1] = NULL;
|
|
||||||
buf_transfer_size[0] = 0;
|
|
||||||
buf_transfer_size[1] = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
buf_static[0] = NULL;
|
|
||||||
buf_static[1] = NULL;
|
|
||||||
buf_static_size[0] = 0;
|
|
||||||
buf_static_size[1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, buf_transfer[0], buf_transfer_size[0], 0);
|
|
||||||
ipcAddRecvBuffer(&c, buf_transfer[1], buf_transfer_size[1], 0);
|
|
||||||
|
|
||||||
ipcAddSendStatic(&c, buf_static[0], buf_static_size[0], 0);
|
|
||||||
ipcAddRecvStatic(&c, buf_static[1], buf_static_size[1], 0);
|
|
||||||
|
|
||||||
raw = ipcPrepareHeader(&c, sizeof(*raw));
|
raw = ipcPrepareHeader(&c, sizeof(*raw));
|
||||||
raw->magic = SFCI_MAGIC;
|
raw->magic = SFCI_MAGIC;
|
||||||
|
@ -24,6 +24,7 @@ __thread Result g_bsdResult;
|
|||||||
__thread int g_bsdErrno;
|
__thread int g_bsdErrno;
|
||||||
|
|
||||||
static Service g_bsdSrv;
|
static Service g_bsdSrv;
|
||||||
|
static size_t g_bsdSrvIpcBufferSize;
|
||||||
static Service g_bsdMonitor;
|
static Service g_bsdMonitor;
|
||||||
static u64 g_bsdClientPid = -1;
|
static u64 g_bsdClientPid = -1;
|
||||||
|
|
||||||
@ -188,8 +189,7 @@ static int _bsdNameGetterCommand(u32 cmd_id, int sockfd, struct sockaddr *addr,
|
|||||||
|
|
||||||
socklen_t maxaddrlen = addrlen == NULL ? 0 : *addrlen;
|
socklen_t maxaddrlen = addrlen == NULL ? 0 : *addrlen;
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, addr, maxaddrlen, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, addr, maxaddrlen, 0);
|
||||||
ipcAddRecvStatic(&c, addr, maxaddrlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -247,6 +247,9 @@ Result bsdInitialize(const BsdInitConfig *config) {
|
|||||||
}
|
}
|
||||||
if(R_FAILED(rc)) goto error;
|
if(R_FAILED(rc)) goto error;
|
||||||
|
|
||||||
|
rc = ipcQueryPointerBufferSize(g_bsdSrv.handle, &g_bsdSrvIpcBufferSize);
|
||||||
|
if(R_FAILED(rc)) goto error;
|
||||||
|
|
||||||
rc = smGetService(&g_bsdMonitor, bsd_srv);
|
rc = smGetService(&g_bsdMonitor, bsd_srv);
|
||||||
if(R_FAILED(rc)) goto error;
|
if(R_FAILED(rc)) goto error;
|
||||||
|
|
||||||
@ -267,6 +270,8 @@ error:
|
|||||||
}
|
}
|
||||||
|
|
||||||
void bsdExit(void) {
|
void bsdExit(void) {
|
||||||
|
g_bsdSrvIpcBufferSize = 0;
|
||||||
|
g_bsdClientPid = 0;
|
||||||
serviceClose(&g_bsdMonitor);
|
serviceClose(&g_bsdMonitor);
|
||||||
serviceClose(&g_bsdSrv);
|
serviceClose(&g_bsdSrv);
|
||||||
tmemClose(&g_bsdTmem);
|
tmemClose(&g_bsdTmem);
|
||||||
@ -285,8 +290,7 @@ int bsdOpen(const char *pathname, int flags) {
|
|||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
size_t pathlen = strlen(pathname) + 1;
|
size_t pathlen = strlen(pathname) + 1;
|
||||||
ipcAddSendBuffer(&c, pathname, pathlen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, pathname, pathlen, 0);
|
||||||
ipcAddSendStatic(&c, pathname, pathlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -307,19 +311,16 @@ int bsdSelect(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, st
|
|||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
||||||
ipcAddSendStatic(&c, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, writefds, writefds == NULL ? 0 : sizeof(fd_set), 1);
|
||||||
ipcAddSendBuffer(&c, writefds, writefds == NULL ? 0 : sizeof(fd_set), 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 2);
|
||||||
ipcAddSendStatic(&c, writefds, writefds == NULL ? 0 : sizeof(fd_set), 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 3);
|
||||||
ipcAddSendBuffer(&c, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddSendStatic(&c, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
||||||
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, writefds, writefds == NULL ? 0 : sizeof(fd_set), 1);
|
||||||
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 2);
|
||||||
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 3);
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddRecvStatic(&c, readfds, readfds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddRecvBuffer(&c, writefds, writefds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddRecvStatic(&c, writefds, writefds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddRecvBuffer(&c, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
ipcAddRecvStatic(&c, exceptfds, exceptfds == NULL ? 0 : sizeof(fd_set), 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -344,11 +345,8 @@ int bsdPoll(struct pollfd *fds, nfds_t nfds, int timeout) {
|
|||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, fds, nfds * sizeof(struct pollfd), 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, fds, nfds * sizeof(struct pollfd), 0);
|
||||||
ipcAddSendStatic(&c, fds, nfds * sizeof(struct pollfd), 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, fds, nfds * sizeof(struct pollfd), 0);
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, fds, nfds * sizeof(struct pollfd), 0);
|
|
||||||
ipcAddRecvStatic(&c, fds, nfds * sizeof(struct pollfd), 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -373,13 +371,10 @@ int bsdSysctl(const int *name, unsigned int namelen, void *oldp, size_t *oldlenp
|
|||||||
|
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, name, 4 * namelen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, name, 4 * namelen, 0);
|
||||||
ipcAddSendStatic(&c, name, 4 * namelen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, newp, newlen, 1);
|
||||||
ipcAddSendBuffer(&c, newp, newlen, 0);
|
|
||||||
ipcAddSendStatic(&c, newp, newlen, 0);
|
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, oldp, inlen, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, oldp, inlen, 0);
|
||||||
ipcAddRecvStatic(&c, oldp, inlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -406,8 +401,7 @@ int bsdSysctl(const int *name, unsigned int namelen, void *oldp, size_t *oldlenp
|
|||||||
ssize_t bsdRecv(int sockfd, void *buf, size_t len, int flags) {
|
ssize_t bsdRecv(int sockfd, void *buf, size_t len, int flags) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddRecvBuffer(&c, buf, len, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, buf, len, 0);
|
||||||
ipcAddRecvStatic(&c, buf, len, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -432,10 +426,8 @@ ssize_t bsdRecvFrom(int sockfd, void *buf, size_t len, int flags, struct sockadd
|
|||||||
|
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, buf, len, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, buf, len, 0);
|
||||||
ipcAddRecvStatic(&c, buf, len, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, src_addr, inaddrlen, 1);
|
||||||
ipcAddRecvBuffer(&c, src_addr, inaddrlen, 0);
|
|
||||||
ipcAddRecvBuffer(&c, src_addr, inaddrlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -457,8 +449,7 @@ ssize_t bsdRecvFrom(int sockfd, void *buf, size_t len, int flags, struct sockadd
|
|||||||
ssize_t bsdSend(int sockfd, const void* buf, size_t len, int flags) {
|
ssize_t bsdSend(int sockfd, const void* buf, size_t len, int flags) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendBuffer(&c, buf, len, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, buf, len, 0);
|
||||||
ipcAddSendStatic(&c, buf, len, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -480,11 +471,8 @@ ssize_t bsdSend(int sockfd, const void* buf, size_t len, int flags) {
|
|||||||
ssize_t bsdSendTo(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen) {
|
ssize_t bsdSendTo(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendBuffer(&c, buf, len, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, buf, len, 0);
|
||||||
ipcAddSendStatic(&c, buf, len, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, dest_addr, addrlen, 1);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, dest_addr, addrlen, 1);
|
|
||||||
ipcAddSendStatic(&c, dest_addr, addrlen, 1);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -510,8 +498,7 @@ int bsdAccept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) {
|
|||||||
int bsdBind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
int bsdBind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendBuffer(&c, addr, addrlen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, addr, addrlen, 0);
|
||||||
ipcAddSendStatic(&c, addr, addrlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -531,8 +518,7 @@ int bsdBind(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
|||||||
int bsdConnect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
int bsdConnect(int sockfd, const struct sockaddr *addr, socklen_t addrlen) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendBuffer(&c, addr, addrlen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, addr, addrlen, 0);
|
||||||
ipcAddSendStatic(&c, addr, addrlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -563,8 +549,7 @@ int bsdGetSockOpt(int sockfd, int level, int optname, void *optval, socklen_t *o
|
|||||||
|
|
||||||
socklen_t inoptlen = optlen == NULL ? 0 : *optlen;
|
socklen_t inoptlen = optlen == NULL ? 0 : *optlen;
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, optval, inoptlen, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, optval, inoptlen, 0);
|
||||||
ipcAddRecvStatic(&c, optval, inoptlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -656,23 +641,15 @@ int bsdIoctl(int fd, int request, void *data) {
|
|||||||
|
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, in1, in1sz, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, in1, in1sz, 0);
|
||||||
ipcAddSendStatic(&c, in1, in1sz, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, in2, in2sz, 1);
|
||||||
ipcAddSendBuffer(&c, in2, in2sz, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, in3, in3sz, 2);
|
||||||
ipcAddSendStatic(&c, in2, in2sz, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, in4, in4sz, 3);
|
||||||
ipcAddSendBuffer(&c, in3, in3sz, 0);
|
|
||||||
ipcAddSendStatic(&c, in3, in3sz, 0);
|
|
||||||
ipcAddSendBuffer(&c, in4, in4sz, 0);
|
|
||||||
ipcAddSendStatic(&c, in4, in4sz, 0);
|
|
||||||
|
|
||||||
ipcAddRecvBuffer(&c, out1, out1sz, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, out1, out1sz, 0);
|
||||||
ipcAddRecvStatic(&c, out1, out1sz, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, out2, out2sz, 1);
|
||||||
ipcAddRecvBuffer(&c, out2, out2sz, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, out3, out3sz, 2);
|
||||||
ipcAddRecvStatic(&c, out2, out2sz, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, out4, out4sz, 3);
|
||||||
ipcAddRecvBuffer(&c, out3, out3sz, 0);
|
|
||||||
ipcAddRecvStatic(&c, out3, out3sz, 0);
|
|
||||||
ipcAddRecvBuffer(&c, out4, out4sz, 0);
|
|
||||||
ipcAddRecvStatic(&c, out4, out4sz, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -730,8 +707,7 @@ int bsdSetSockOpt(int sockfd, int level, int optname, const void *optval, sockle
|
|||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, optval, optlen, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, optval, optlen, 0);
|
||||||
ipcAddSendStatic(&c, optval, optlen, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -795,8 +771,7 @@ int bsdShutdownAllSockets(int how) {
|
|||||||
ssize_t bsdWrite(int fd, const void *buf, size_t count) {
|
ssize_t bsdWrite(int fd, const void *buf, size_t count) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendBuffer(&c, buf, count, 0);
|
ipcAddSendSmart(&c, g_bsdSrvIpcBufferSize, buf, count, 0);
|
||||||
ipcAddSendStatic(&c, buf, count, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -816,8 +791,7 @@ ssize_t bsdWrite(int fd, const void *buf, size_t count) {
|
|||||||
ssize_t bsdRead(int fd, void *buf, size_t count) {
|
ssize_t bsdRead(int fd, void *buf, size_t count) {
|
||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddRecvBuffer(&c, buf, count, 0);
|
ipcAddRecvSmart(&c, g_bsdSrvIpcBufferSize, buf, count, 0);
|
||||||
ipcAddRecvStatic(&c, buf, count, 0);
|
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
|
@ -525,7 +525,7 @@ Result fsFsRenameFile(FsFileSystem* fs, const char* path0, const char* path1) {
|
|||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendStatic(&c, path0, FS_MAX_PATH, 0);
|
ipcAddSendStatic(&c, path0, FS_MAX_PATH, 0);
|
||||||
ipcAddSendStatic(&c, path1, FS_MAX_PATH, 0);
|
ipcAddSendStatic(&c, path1, FS_MAX_PATH, 1);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
@ -558,7 +558,7 @@ Result fsFsRenameDirectory(FsFileSystem* fs, const char* path0, const char* path
|
|||||||
IpcCommand c;
|
IpcCommand c;
|
||||||
ipcInitialize(&c);
|
ipcInitialize(&c);
|
||||||
ipcAddSendStatic(&c, path0, FS_MAX_PATH, 0);
|
ipcAddSendStatic(&c, path0, FS_MAX_PATH, 0);
|
||||||
ipcAddSendStatic(&c, path1, FS_MAX_PATH, 0);
|
ipcAddSendStatic(&c, path1, FS_MAX_PATH, 1);
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
u64 magic;
|
u64 magic;
|
||||||
|
@ -215,29 +215,8 @@ Result nvIoctl(u32 fd, u32 request, void* argp) {
|
|||||||
buf_recv_size = bufsize;
|
buf_recv_size = bufsize;
|
||||||
}
|
}
|
||||||
|
|
||||||
void* bufs_send[2] = {buf_send, buf_send};
|
ipcAddSendSmart(&c, g_nvIpcBufferSize, buf_send, buf_send_size, 0);
|
||||||
void* bufs_recv[2] = {buf_recv, buf_recv};
|
ipcAddRecvSmart(&c, g_nvIpcBufferSize, buf_recv, buf_recv_size, 0);
|
||||||
size_t bufs_send_size[2] = {buf_send_size, buf_send_size};
|
|
||||||
size_t bufs_recv_size[2] = {buf_recv_size, buf_recv_size};
|
|
||||||
|
|
||||||
if(g_nvIpcBufferSize!=0 && bufsize <= g_nvIpcBufferSize) {
|
|
||||||
bufs_send[0] = NULL;
|
|
||||||
bufs_send_size[0] = 0;
|
|
||||||
bufs_recv[0] = NULL;
|
|
||||||
bufs_recv_size[0] = 0;
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
bufs_send[1] = NULL;
|
|
||||||
bufs_send_size[1] = 0;
|
|
||||||
bufs_recv[1] = NULL;
|
|
||||||
bufs_recv_size[1] = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
ipcAddSendBuffer(&c, bufs_send[0], bufs_send_size[0], 0);
|
|
||||||
ipcAddRecvBuffer(&c, bufs_recv[0], bufs_recv_size[0], 0);
|
|
||||||
|
|
||||||
ipcAddSendStatic(&c, bufs_send[1], bufs_send_size[1], 0);
|
|
||||||
ipcAddRecvStatic(&c, bufs_recv[1], bufs_recv_size[1], 0);
|
|
||||||
|
|
||||||
raw = ipcPrepareHeader(&c, sizeof(*raw));
|
raw = ipcPrepareHeader(&c, sizeof(*raw));
|
||||||
raw->magic = SFCI_MAGIC;
|
raw->magic = SFCI_MAGIC;
|
||||||
|
Loading…
Reference in New Issue
Block a user