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