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

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 @pasko suggestions on headers and comments 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 26 matching lines...) Expand all
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
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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698