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

Side by Side 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 unified diff | Download patch
OLDNEW
1 #ifndef _NACL_SYSDEP_H 1 #ifndef _NACL_SYSDEP_H
2 #define _NACL_SYSDEP_H 1 2 #define _NACL_SYSDEP_H 1
3 3
4 #if !defined(__ASSEMBLER__) 4 #if !defined(__ASSEMBLER__)
5 #include <futex_emulation.h> 5 #include <futex_emulation.h>
6 #include <irt_syscalls.h> 6 #include <irt_syscalls.h>
7 #include <lowlevellock.h> 7 #include <lowlevellock.h>
8 8
9 /* Implementation of all syscalls for use in platform- and OS- independent code 9 /* Implementation of all syscalls for use in platform- and OS- independent code
10 as inline functions. Each function translates the syscall arguments into IRT 10 as inline functions. Each function translates the syscall arguments into IRT
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 } 231 }
232 232
233 __extern_always_inline int 233 __extern_always_inline int
234 INTERNAL_SYSCALL_dup3_3 (int *err, int oldfd, int newfd, int flags) 234 INTERNAL_SYSCALL_dup3_3 (int *err, int oldfd, int newfd, int flags)
235 { 235 {
236 *err = (38 /* ENOSYS */); 236 *err = (38 /* ENOSYS */);
237 return 0; 237 return 0;
238 } 238 }
239 239
240 __extern_always_inline int 240 __extern_always_inline int
241 INTERNAL_SYSCALL_epoll_create_1 (int *err, int flags) 241 INTERNAL_SYSCALL_epoll_create_1 (int *err, int size)
242 { 242 {
243 *err = (38 /* ENOSYS */); 243 // here flags is size
244 *err = __nacl_irt_epoll_create (size);
244 return 0; 245 return 0;
245 } 246 }
246 247
247 __extern_always_inline int 248 __extern_always_inline int
248 INTERNAL_SYSCALL_epoll_create1_1 (int *err, int flags) 249 INTERNAL_SYSCALL_epoll_create1_1 (int *err, int flags)
249 { 250 {
250 *err = (38 /* ENOSYS */); 251 *err = __nacl_irt_epoll_create1 (flags);
251 return 0; 252 return 0;
252 } 253 }
253 254
254 __extern_always_inline int 255 __extern_always_inline int
255 INTERNAL_SYSCALL_epoll_ctl_4 (int *err, int epfd, int op, int fd, 256 INTERNAL_SYSCALL_epoll_ctl_4 (int *err, int epfd, int op, int fd,
256 struct epoll_event *event) 257 struct epoll_event *event)
257 { 258 {
258 *err = (38 /* ENOSYS */); 259 *err = __nacl_irt_epoll_ctl (epfd, op, fd, event);
259 return 0; 260 return 0;
260 } 261 }
261 262
262 __extern_always_inline int 263 __extern_always_inline int
263 INTERNAL_SYSCALL_epoll_pwait_6 (int *err, int epfd, struct epoll_event *events, 264 INTERNAL_SYSCALL_epoll_pwait_6 (int *err, int epfd, struct epoll_event *events,
264 int maxevents, int timeout, 265 int maxevents, int timeout,
265 » » » » const sigset_t *sigmask, size_t sigsetsize) 266 » » » » const sigset_t *sigmask, size_t sigset_size)
266 { 267 {
267 *err = (38 /* ENOSYS */); 268 *err = __nacl_irt_epoll_pwait (epfd, events, maxevents, timeout, sigmask,
269 sigset_size);
268 return 0; 270 return 0;
269 } 271 }
270 272
271 __extern_always_inline int 273 __extern_always_inline int
272 INTERNAL_SYSCALL_execve_3 (int *err, const char *filename, char *const argv[], 274 INTERNAL_SYSCALL_execve_3 (int *err, const char *filename, char *const argv[],
273 char *const envp[]) 275 char *const envp[])
274 { 276 {
275 *err = (38 /* ENOSYS */); 277 *err = (38 /* ENOSYS */);
276 return 0; 278 return 0;
277 } 279 }
278 280
279 __extern_always_inline int 281 __extern_always_inline int
280 INTERNAL_SYSCALL_epoll_wait_4 (int *err, int epfd, struct epoll_event *events, 282 INTERNAL_SYSCALL_epoll_wait_4 (int *err, int epfd, struct epoll_event *events,
281 int maxevents, int timeout) 283 int maxevents, int timeout)
282 { 284 {
283 *err = (38 /* ENOSYS */); 285 *err = (38 /* ENOSYS */);
286 *err = __nacl_irt_epoll_wait (epfd, events, maxevents, timeout);
284 return 0; 287 return 0;
285 } 288 }
286 289
287 __extern_always_inline int 290 __extern_always_inline int
288 INTERNAL_SYSCALL_eventfd2_2 (int *err, unsigned int initval, int flags) 291 INTERNAL_SYSCALL_eventfd2_2 (int *err, unsigned int initval, int flags)
289 { 292 {
290 *err = (38 /* ENOSYS */); 293 *err = (38 /* ENOSYS */);
291 return 0; 294 return 0;
292 } 295 }
293 296
(...skipping 863 matching lines...) Expand 10 before | Expand all | Expand 10 after
1157 INTERNAL_SYSCALL_pivot_root_2 (int *err, const char *new_root, 1160 INTERNAL_SYSCALL_pivot_root_2 (int *err, const char *new_root,
1158 const char *put_old) 1161 const char *put_old)
1159 { 1162 {
1160 *err = (38 /* ENOSYS */); 1163 *err = (38 /* ENOSYS */);
1161 return 0; 1164 return 0;
1162 } 1165 }
1163 1166
1164 __extern_always_inline int 1167 __extern_always_inline int
1165 INTERNAL_SYSCALL_poll_3 (int *err, struct pollfd *fds, nfds_t nfds, int timeout) 1168 INTERNAL_SYSCALL_poll_3 (int *err, struct pollfd *fds, nfds_t nfds, int timeout)
1166 { 1169 {
1167 *err = (38 /* ENOSYS */); 1170 *err = __nacl_irt_poll (fds, nfds, timeout);
1168 return 0; 1171 return 0;
1169 } 1172 }
1170 1173
1171 __extern_always_inline int 1174 __extern_always_inline int
1172 INTERNAL_SYSCALL_ppoll_5 (int *err, struct pollfd *fds, nfds_t nfds, 1175 INTERNAL_SYSCALL_ppoll_5 (int *err, struct pollfd *fds, nfds_t nfds,
1173 const struct timespec *timeout, 1176 const struct timespec *timeout,
1174 » » » const sigset_t *sigmask, size_t sigsetsize) 1177 » » » const sigset_t *sigmask, size_t sigset_size)
1175 { 1178 {
1176 *err = (38 /* ENOSYS */); 1179 *err = __nacl_irt_ppoll (fds, nfds, timeout, sigmask, sigset_size);
1177 return 0; 1180 return 0;
1178 } 1181 }
1179 1182
1180 __extern_always_inline int 1183 __extern_always_inline int
1181 INTERNAL_SYSCALL_prctl_5 (int *err, int option, unsigned long arg2, 1184 INTERNAL_SYSCALL_prctl_5 (int *err, int option, unsigned long arg2,
1182 unsigned long arg3, unsigned long arg4, 1185 unsigned long arg3, unsigned long arg4,
1183 unsigned long arg5) 1186 unsigned long arg5)
1184 { 1187 {
1185 *err = (38 /* ENOSYS */); 1188 *err = (38 /* ENOSYS */);
1186 return 0; 1189 return 0;
1187 } 1190 }
1188 1191
1189 __extern_always_inline int 1192 __extern_always_inline int
1190 INTERNAL_SYSCALL_pselect6_6 (int *err, int nfds, fd_set *readfds, 1193 INTERNAL_SYSCALL_pselect6_6 (int *err, int nfds, fd_set *readfds,
1191 » » » fd_set *writefds, fd_set *exceptfds, 1194 fd_set *writefds, fd_set *exceptfds,
1192 » » » const struct timespec *timeout, 1195 const struct timeval *timeout,
1193 » » » void *sigmask) 1196 void *sigmask)
1194 { 1197 {
1195 *err = (38 /* ENOSYS */); 1198 *err = __nacl_irt_pselect (nfds, readfds, writefds, exceptfds, timeout,
1199 sigmask);
1196 return 0; 1200 return 0;
1197 } 1201 }
1198 1202
1199 __extern_always_inline long 1203 __extern_always_inline long
1200 INTERNAL_SYSCALL_ptrace_4 (int *err, enum __ptrace_request request, pid_t pid, 1204 INTERNAL_SYSCALL_ptrace_4 (int *err, enum __ptrace_request request, pid_t pid,
1201 void *addr, void *data) 1205 void *addr, void *data)
1202 { 1206 {
1203 *err = (38 /* ENOSYS */); 1207 *err = (38 /* ENOSYS */);
1204 return 0; 1208 return 0;
1205 } 1209 }
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after
1421 } 1425 }
1422 1426
1423 #ifdef __i386__ 1427 #ifdef __i386__
1424 #define INTERNAL_SYSCALL_select_5 INTERNAL_SYSCALL__newselect_5 1428 #define INTERNAL_SYSCALL_select_5 INTERNAL_SYSCALL__newselect_5
1425 #endif 1429 #endif
1426 __extern_always_inline int 1430 __extern_always_inline int
1427 INTERNAL_SYSCALL_select_5 (int *err, int nfds, fd_set *readfds, 1431 INTERNAL_SYSCALL_select_5 (int *err, int nfds, fd_set *readfds,
1428 fd_set *writefds, fd_set *exceptfds, 1432 fd_set *writefds, fd_set *exceptfds,
1429 const struct timeval *timeout) 1433 const struct timeval *timeout)
1430 { 1434 {
1431 *err = (38 /* ENOSYS */); 1435 *err = __nacl_irt_select (nfds, readfds, writefds, exceptfds, timeout);
1432 return 0; 1436 return 0;
1433 } 1437 }
1434 1438
1435 __extern_always_inline int 1439 __extern_always_inline int
1436 INTERNAL_SYSCALL_semctl_4 (int *err, int semid, int semnum, int cmd, 1440 INTERNAL_SYSCALL_semctl_4 (int *err, int semid, int semnum, int cmd,
1437 #ifdef _SEM_SEMUN_UNDEFINED 1441 #ifdef _SEM_SEMUN_UNDEFINED
1438 int semun) 1442 int semun)
1439 #else 1443 #else
1440 union semun semun) 1444 union semun semun)
1441 #endif 1445 #endif
(...skipping 201 matching lines...) Expand 10 before | Expand all | Expand 10 after
1643 __extern_always_inline int 1647 __extern_always_inline int
1644 INTERNAL_SYSCALL_signalfd_3 (int *err, int fd, const sigset_t *mask, 1648 INTERNAL_SYSCALL_signalfd_3 (int *err, int fd, const sigset_t *mask,
1645 size_t sigsetsize) 1649 size_t sigsetsize)
1646 { 1650 {
1647 return INTERNAL_SYSCALL_signalfd4_4 (err, fd, mask, sigsetsize, 0); 1651 return INTERNAL_SYSCALL_signalfd4_4 (err, fd, mask, sigsetsize, 0);
1648 } 1652 }
1649 1653
1650 __extern_always_inline int 1654 __extern_always_inline int
1651 INTERNAL_SYSCALL_socket_3 (int *err, int domain, int type, int protocol) 1655 INTERNAL_SYSCALL_socket_3 (int *err, int domain, int type, int protocol)
1652 { 1656 {
1653 *err = (38 /* ENOSYS */); 1657 *err = __nacl_irt_socket (domain, type, protocol);
1654 return 0; 1658 return 0;
1655 } 1659 }
1656 1660
1661 __extern_always_inline int
1662 INTERNAL_SYSCALL_accept_3 (int *err, int sockfd, struct sockaddr* addr,
1663 socklen_t* addr_len)
1664 {
1665 *err = __nacl_irt_accept (sockfd, addr, addr_len);
1666 return 0;
1667 }
1668
1669 __extern_always_inline int
1670 INTERNAL_SYSCALL_bind_3 (int *err, int sockfd, struct sockaddr* addr,
1671 socklen_t addr_len)
1672 {
1673 *err = __nacl_irt_bind (sockfd, addr, addr_len);
1674 return 0;
1675 }
1676
1677 __extern_always_inline int
1678 INTERNAL_SYSCALL_getpeername_3 (int *err, int sockfd, struct sockaddr* addr,
1679 socklen_t* addr_len)
1680 {
1681 *err = __nacl_irt_getpeername (sockfd, addr, addr_len);
1682 return 0;
1683 }
1684
1685 __extern_always_inline int
1686 INTERNAL_SYSCALL_getsockname_3 (int *err, int sockfd, struct sockaddr* addr,
1687 socklen_t* addr_len)
1688 {
1689 *err = __nacl_irt_getsockname (sockfd, addr, addr_len);
1690 return 0;
1691 }
1692
1693 __extern_always_inline int
1694 INTERNAL_SYSCALL_getsockopt_5 (int *err, int sockfd, int level, int optname,
1695 void *optval, socklen_t *optlen)
1696 {
1697 *err = __nacl_irt_getsockopt (sockfd, level, optname, optval, optlen);
1698 return 0;
1699 }
1700
1701 __extern_always_inline int
1702 INTERNAL_SYSCALL_setsockopt_5 (int *err, int sockfd, int level, int optname,
1703 const void *optval, socklen_t optlen)
1704 {
1705 *err = __nacl_irt_setsockopt (sockfd, level, optname, optval, optlen);
1706 return 0;
1707 }
1708
1709 __extern_always_inline int
1710 INTERNAL_SYSCALL_listen_2 (int *err, int sockfd, int backlog)
1711 {
1712 *err = __nacl_irt_listen (sockfd, backlog);
1713 return 0;
1714 }
1715
1716 __extern_always_inline int
1717 INTERNAL_SYSCALL_connect_3 (int *err, int sockfd, struct sockaddr* addr,
1718 socklen_t addr_len)
1719 {
1720 *err = __nacl_irt_connect (sockfd, addr, addr_len);
1721 return 0;
1722 }
1723
1724 __extern_always_inline int
1725 INTERNAL_SYSCALL_socketpair_4 (int *err, int domain, int type, int protocol,
1726 int sv[2])
1727 {
1728 *err = __nacl_irt_socketpair (domain, type, protocol, sv);
1729 return 0;
1730 }
1731
1732 __extern_always_inline int
1733 INTERNAL_SYSCALL_shutdown_2 (int *err, int sockfd, int how)
1734 {
1735 *err = __nacl_irt_shutdown (sockfd, how);
1736 return 0;
1737 }
1738
1739 __extern_always_inline int
1740 INTERNAL_SYSCALL_send_4 (int *err, int sockfd, const void *buf, size_t len, int flags)
1741 {
1742 int ret;
1743 *err = __nacl_irt_send (sockfd, buf, len, flags, &ret);
1744 return ret;
1745 }
1746
1747 __extern_always_inline int
1748 INTERNAL_SYSCALL_sendto_6 (int *err, int sockfd, const void *buf, size_t len,
1749 int flags, const struct sockaddr *dest_addr,
1750 socklen_t addrlen)
1751 {
1752 int ret;
1753 *err = __nacl_irt_sendto (sockfd, buf, len, flags, dest_addr, addrlen, &ret);
1754 return ret;
1755 }
1756
1757 __extern_always_inline int
1758 INTERNAL_SYSCALL_recv_4 (int *err, int sockfd, void *buf, size_t len, int flags)
1759 {
1760 int ret;
1761 *err = __nacl_irt_recv (sockfd, buf, len, flags, &ret);
1762 return ret;
1763 }
1764
1765 __extern_always_inline int
1766 INTERNAL_SYSCALL_recvfrom_6 (int *err, int sockfd, void *buf, size_t len, int fl ags,
1767 struct sockaddr *dest_addr, socklen_t *addrlen)
1768 {
1769 int ret;
1770 *err = __nacl_irt_recvfrom (sockfd, buf, len, flags, dest_addr, addrlen, &ret) ;
1771 return ret;
1772 }
1773
1774 __extern_always_inline int
1775 INTERNAL_SYSCALL_sendmsg_3 (int *err, int sockfd, const struct msghdr *msg, int flags)
1776 {
1777 int ret;
1778 *err = __nacl_irt_sendmsg (sockfd, msg, flags, &ret);
1779 return ret;
1780 }
1781
1782 __extern_always_inline int
1783 INTERNAL_SYSCALL_recvmsg_3 (int *err, int sockfd, struct msghdr *msg, int flags)
1784 {
1785 int ret;
1786 *err = __nacl_irt_recvmsg (sockfd, msg, flags, &ret);
1787 return ret;
1788 }
1789
1657 __extern_always_inline ssize_t 1790 __extern_always_inline ssize_t
1658 INTERNAL_SYSCALL_splice_6 (int *err, int fd_in, loff_t *off_in, int fd_out, 1791 INTERNAL_SYSCALL_splice_6 (int *err, int fd_in, loff_t *off_in, int fd_out,
1659 loff_t *off_out, size_t len, unsigned int flags) 1792 loff_t *off_out, size_t len, unsigned int flags)
1660 { 1793 {
1661 *err = (38 /* ENOSYS */); 1794 *err = (38 /* ENOSYS */);
1662 return 0; 1795 return 0;
1663 } 1796 }
1664 1797
1665 __extern_always_inline int 1798 __extern_always_inline int
1666 INTERNAL_SYSCALL_stime_1 (int *err, time_t *t) 1799 INTERNAL_SYSCALL_stime_1 (int *err, time_t *t)
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
2106 #define PSEUDO_END_ERRVAL(name) \ 2239 #define PSEUDO_END_ERRVAL(name) \
2107 END (name) 2240 END (name)
2108 2241
2109 #undef SYSCALL_ERROR_HANDLER_TLS_STORE 2242 #undef SYSCALL_ERROR_HANDLER_TLS_STORE
2110 #define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \ 2243 #define SYSCALL_ERROR_HANDLER_TLS_STORE(src, destoff) \
2111 movl %gs:0, %eax; \ 2244 movl %gs:0, %eax; \
2112 movl src, (%eax,destoff) 2245 movl src, (%eax,destoff)
2113 2246
2114 #endif 2247 #endif
2115 #endif 2248 #endif
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698