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