Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(205)

Unified Diff: sysdeps/nacl/sysdep.h

Issue 9969049: added several system call hooks for future sockets implementation (Closed) Base URL: http://git.chromium.org/native_client/nacl-glibc.git@master
Patch Set: fixed interceptors w/ @khim's advice Created 8 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sysdeps/nacl/sysdep.h
diff --git a/sysdeps/nacl/sysdep.h b/sysdeps/nacl/sysdep.h
index 7cb9d106219c79ce190e687db6e8f6ed0fe21d9a..751efb341ec68618c4349a87e7622610d876d036 100644
--- a/sysdeps/nacl/sysdep.h
+++ b/sysdeps/nacl/sysdep.h
@@ -238,16 +238,17 @@ INTERNAL_SYSCALL_dup3_3 (int *err, int oldfd, int newfd, int flags)
}
__extern_always_inline int
-INTERNAL_SYSCALL_epoll_create_1 (int *err, int flags)
+INTERNAL_SYSCALL_epoll_create_1 (int *err, int size)
{
- *err = (38 /* ENOSYS */);
+ // here flags is size
+ *err = __nacl_irt_epoll_create (size);
return 0;
}
__extern_always_inline int
INTERNAL_SYSCALL_epoll_create1_1 (int *err, int flags)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_epoll_create1 (flags);
return 0;
}
@@ -255,16 +256,17 @@ __extern_always_inline int
INTERNAL_SYSCALL_epoll_ctl_4 (int *err, int epfd, int op, int fd,
struct epoll_event *event)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_epoll_ctl (epfd, op, fd, event);
return 0;
}
__extern_always_inline int
INTERNAL_SYSCALL_epoll_pwait_6 (int *err, int epfd, struct epoll_event *events,
int maxevents, int timeout,
- const sigset_t *sigmask, size_t sigsetsize)
+ const sigset_t *sigmask, size_t sigset_size)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_epoll_pwait (epfd, events, maxevents, timeout, sigmask,
+ sigset_size);
return 0;
}
@@ -281,6 +283,7 @@ INTERNAL_SYSCALL_epoll_wait_4 (int *err, int epfd, struct epoll_event *events,
int maxevents, int timeout)
{
*err = (38 /* ENOSYS */);
+ *err = __nacl_irt_epoll_wait (epfd, events, maxevents, timeout);
return 0;
}
@@ -1164,16 +1167,16 @@ INTERNAL_SYSCALL_pivot_root_2 (int *err, const char *new_root,
__extern_always_inline int
INTERNAL_SYSCALL_poll_3 (int *err, struct pollfd *fds, nfds_t nfds, int timeout)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_poll (fds, nfds, timeout);
return 0;
}
__extern_always_inline int
INTERNAL_SYSCALL_ppoll_5 (int *err, struct pollfd *fds, nfds_t nfds,
const struct timespec *timeout,
- const sigset_t *sigmask, size_t sigsetsize)
+ const sigset_t *sigmask, size_t sigset_size)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_ppoll (fds, nfds, timeout, sigmask, sigset_size);
return 0;
}
@@ -1188,11 +1191,12 @@ INTERNAL_SYSCALL_prctl_5 (int *err, int option, unsigned long arg2,
__extern_always_inline int
INTERNAL_SYSCALL_pselect6_6 (int *err, int nfds, fd_set *readfds,
- fd_set *writefds, fd_set *exceptfds,
- const struct timespec *timeout,
- void *sigmask)
+ fd_set *writefds, fd_set *exceptfds,
+ const struct timeval *timeout,
+ void *sigmask)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_pselect (nfds, readfds, writefds, exceptfds, timeout,
+ sigmask);
return 0;
}
@@ -1428,7 +1432,7 @@ INTERNAL_SYSCALL_select_5 (int *err, int nfds, fd_set *readfds,
fd_set *writefds, fd_set *exceptfds,
const struct timeval *timeout)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_select (nfds, readfds, writefds, exceptfds, timeout);
return 0;
}
@@ -1650,10 +1654,139 @@ INTERNAL_SYSCALL_signalfd_3 (int *err, int fd, const sigset_t *mask,
__extern_always_inline int
INTERNAL_SYSCALL_socket_3 (int *err, int domain, int type, int protocol)
{
- *err = (38 /* ENOSYS */);
+ *err = __nacl_irt_socket (domain, type, protocol);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_accept_3 (int *err, int sockfd, struct sockaddr* addr,
+ socklen_t* addr_len)
+{
+ *err = __nacl_irt_accept (sockfd, addr, addr_len);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_bind_3 (int *err, int sockfd, struct sockaddr* addr,
+ socklen_t addr_len)
+{
+ *err = __nacl_irt_bind (sockfd, addr, addr_len);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_getpeername_3 (int *err, int sockfd, struct sockaddr* addr,
+ socklen_t* addr_len)
+{
+ *err = __nacl_irt_getpeername (sockfd, addr, addr_len);
return 0;
}
+__extern_always_inline int
+INTERNAL_SYSCALL_getsockname_3 (int *err, int sockfd, struct sockaddr* addr,
+ socklen_t* addr_len)
+{
+ *err = __nacl_irt_getsockname (sockfd, addr, addr_len);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_getsockopt_5 (int *err, int sockfd, int level, int optname,
+ void *optval, socklen_t *optlen)
+{
+ *err = __nacl_irt_getsockopt (sockfd, level, optname, optval, optlen);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_setsockopt_5 (int *err, int sockfd, int level, int optname,
+ const void *optval, socklen_t optlen)
+{
+ *err = __nacl_irt_setsockopt (sockfd, level, optname, optval, optlen);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_listen_2 (int *err, int sockfd, int backlog)
+{
+ *err = __nacl_irt_listen (sockfd, backlog);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_connect_3 (int *err, int sockfd, struct sockaddr* addr,
+ socklen_t addr_len)
+{
+ *err = __nacl_irt_connect (sockfd, addr, addr_len);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_socketpair_4 (int *err, int domain, int type, int protocol,
+ int sv[2])
+{
+ *err = __nacl_irt_socketpair (domain, type, protocol, sv);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_shutdown_2 (int *err, int sockfd, int how)
+{
+ *err = __nacl_irt_shutdown (sockfd, how);
+ return 0;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_send_4 (int *err, int sockfd, const void *buf, size_t len, int flags)
+{
+ int ret;
+ *err = __nacl_irt_send (sockfd, buf, len, flags, &ret);
+ return ret;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_sendto_6 (int *err, int sockfd, const void *buf, size_t len,
+ int flags, const struct sockaddr *dest_addr,
+ socklen_t addrlen)
+{
+ int ret;
+ *err = __nacl_irt_sendto (sockfd, buf, len, flags, dest_addr, addrlen, &ret);
+ return ret;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_recv_4 (int *err, int sockfd, void *buf, size_t len, int flags)
+{
+ int ret;
+ *err = __nacl_irt_recv (sockfd, buf, len, flags, &ret);
+ return ret;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_recvfrom_6 (int *err, int sockfd, void *buf, size_t len, int flags,
+ struct sockaddr *dest_addr, socklen_t *addrlen)
+{
+ int ret;
+ *err = __nacl_irt_recvfrom (sockfd, buf, len, flags, dest_addr, addrlen, &ret);
+ return ret;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_sendmsg_3 (int *err, int sockfd, const struct msghdr *msg, int flags)
+{
+ int ret;
+ *err = __nacl_irt_sendmsg (sockfd, msg, flags, &ret);
+ return ret;
+}
+
+__extern_always_inline int
+INTERNAL_SYSCALL_recvmsg_3 (int *err, int sockfd, struct msghdr *msg, int flags)
+{
+ int ret;
+ *err = __nacl_irt_recvmsg (sockfd, msg, flags, &ret);
+ return ret;
+}
+
__extern_always_inline ssize_t
INTERNAL_SYSCALL_splice_6 (int *err, int fd_in, loff_t *off_in, int fd_out,
loff_t *off_out, size_t len, unsigned int flags)

Powered by Google App Engine
This is Rietveld 408576698