OLD | NEW |
---|---|
1 #include <string.h> | 1 #include <string.h> |
2 #include <sys/stat.h> | 2 #include <sys/stat.h> |
3 #include <time.h> | 3 #include <time.h> |
4 #include <nacl_stat.h> | 4 #include <nacl_stat.h> |
5 #include <nacl_syscalls.h> | 5 #include <nacl_syscalls.h> |
6 #define stat nacl_abi_stat | 6 #define stat nacl_abi_stat |
7 #include <irt.h> | 7 #include <irt.h> |
8 #include <irt_dev.h> | 8 #include <irt_dev.h> |
9 #undef stat | 9 #undef stat |
10 #include <irt_syscalls.h> | 10 #include <irt_syscalls.h> |
(...skipping 243 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
254 /* Load files from DL_DST_LIB using IRT's open_resource. Other paths | 254 /* Load files from DL_DST_LIB using IRT's open_resource. Other paths |
255 will be processed using regular open syscall. | 255 will be processed using regular open syscall. |
256 | 256 |
257 Note: nacl_mount may change this logic if needed. */ | 257 Note: nacl_mount may change this logic if needed. */ |
258 static int (*___nacl_irt_open_resource) (const char* file, int *fd); | 258 static int (*___nacl_irt_open_resource) (const char* file, int *fd); |
259 static int nacl_irt_open_resource (const char *pathname, int *newfd) { | 259 static int nacl_irt_open_resource (const char *pathname, int *newfd) { |
260 if (memcmp (DL_DST_LIB "/", pathname, sizeof (DL_DST_LIB))) | 260 if (memcmp (DL_DST_LIB "/", pathname, sizeof (DL_DST_LIB))) |
261 return __nacl_irt_open (pathname, O_RDONLY, 0, newfd); | 261 return __nacl_irt_open (pathname, O_RDONLY, 0, newfd); |
262 else | 262 else |
263 return ___nacl_irt_open_resource (pathname + sizeof (DL_DST_LIB) - 1, | 263 return ___nacl_irt_open_resource (pathname + sizeof (DL_DST_LIB) - 1, |
264 » » » » newfd); | 264 newfd); |
Mark Seaborn
2014/03/14 17:21:30
Please fix indentation to line up. Same for other
| |
265 } | 265 } |
266 | 266 |
267 static int nacl_irt_clock_getres(clockid_t clk_id, | 267 static int nacl_irt_clock_getres(clockid_t clk_id, |
268 struct timespec *res) { | 268 struct timespec *res) { |
269 return -NACL_SYSCALL (clock_getres) (clk_id, res); | 269 return -NACL_SYSCALL (clock_getres) (clk_id, res); |
270 } | 270 } |
271 | 271 |
272 static int nacl_irt_clock_gettime(clockid_t clk_id, | 272 static int nacl_irt_clock_gettime(clockid_t clk_id, |
273 struct timespec *tp) { | 273 struct timespec *tp) { |
274 return -NACL_SYSCALL (clock_gettime) (clk_id, tp); | 274 return -NACL_SYSCALL (clock_gettime) (clk_id, tp); |
275 } | 275 } |
276 | 276 |
277 static size_t no_interface (const char *interface_ident, | 277 static size_t no_interface (const char *interface_ident, |
278 void *table, size_t tablesize) { | 278 void *table, size_t tablesize) { |
279 return 0; | 279 return 0; |
280 } | 280 } |
281 | 281 |
282 static int not_implemented() { | 282 static int not_implemented() { |
283 return (38 /* ENOSYS */); | 283 return (38 /* ENOSYS */); |
284 } | 284 } |
285 | 285 |
286 size_t (*__nacl_irt_query) (const char *interface_ident, | 286 size_t (*__nacl_irt_query) (const char *interface_ident, |
287 » » » void *table, size_t tablesize); | 287 void *table, size_t tablesize); |
288 | 288 |
289 int (*__nacl_irt_mkdir) (const char* pathname, mode_t mode); | 289 int (*__nacl_irt_mkdir) (const char* pathname, mode_t mode); |
290 int (*__nacl_irt_rmdir) (const char* pathname); | 290 int (*__nacl_irt_rmdir) (const char* pathname); |
291 int (*__nacl_irt_chdir) (const char* pathname); | 291 int (*__nacl_irt_chdir) (const char* pathname); |
292 int (*__nacl_irt_getcwd) (char* buf, size_t size); | 292 int (*__nacl_irt_getcwd) (char* buf, size_t size); |
293 | 293 |
294 void (*__nacl_irt_exit) (int status); | 294 void (*__nacl_irt_exit) (int status); |
295 int (*__nacl_irt_gettod) (struct timeval *tv); | 295 int (*__nacl_irt_gettod) (struct timeval *tv); |
296 int (*__nacl_irt_clock) (clock_t *ticks); | 296 int (*__nacl_irt_clock) (clock_t *ticks); |
297 int (*__nacl_irt_nanosleep) (const struct timespec *req, struct timespec *rem); | 297 int (*__nacl_irt_nanosleep) (const struct timespec *req, struct timespec *rem); |
298 int (*__nacl_irt_sched_yield) (void); | 298 int (*__nacl_irt_sched_yield) (void); |
299 int (*__nacl_irt_sysconf) (int name, int *value); | 299 int (*__nacl_irt_sysconf) (int name, int *value); |
300 | 300 |
301 int (*__nacl_irt_open) (const char *pathname, int oflag, mode_t cmode, | 301 int (*__nacl_irt_open) (const char *pathname, int oflag, mode_t cmode, |
302 » » » int *newfd); | 302 int *newfd); |
303 int (*__nacl_irt_close) (int fd); | 303 int (*__nacl_irt_close) (int fd); |
304 int (*__nacl_irt_read) (int fd, void *buf, size_t count, size_t *nread); | 304 int (*__nacl_irt_read) (int fd, void *buf, size_t count, size_t *nread); |
305 int (*__nacl_irt_write) (int fd, const void *buf, size_t count, size_t *nwrote); | 305 int (*__nacl_irt_write) (int fd, const void *buf, size_t count, size_t *nwrote); |
306 int (*__nacl_irt_seek) (int fd, off_t offset, int whence, off_t *new_offset); | 306 int (*__nacl_irt_seek) (int fd, off_t offset, int whence, off_t *new_offset); |
307 int (*__nacl_irt_dup) (int fd, int *newfd); | 307 int (*__nacl_irt_dup) (int fd, int *newfd); |
308 int (*__nacl_irt_dup2) (int fd, int newfd); | 308 int (*__nacl_irt_dup2) (int fd, int newfd); |
309 int (*__nacl_irt_fstat) (int fd, struct nacl_abi_stat *); | 309 int (*__nacl_irt_fstat) (int fd, struct nacl_abi_stat *); |
310 int (*__nacl_irt_stat) (const char *pathname, struct nacl_abi_stat *); | 310 int (*__nacl_irt_stat) (const char *pathname, struct nacl_abi_stat *); |
311 int (*__nacl_irt_getdents) (int fd, struct dirent *, size_t count, | 311 int (*__nacl_irt_getdents) (int fd, struct dirent *, size_t count, |
312 » » » size_t *nread); | 312 size_t *nread); |
313 int (*__nacl_irt_socket) (int domain, int type, int protocol, int *sd); | 313 int (*__nacl_irt_socket) (int domain, int type, int protocol, int *sd); |
314 int (*__nacl_irt_accept) (int sockfd, struct sockaddr *addr, | 314 int (*__nacl_irt_accept) (int sockfd, struct sockaddr *addr, |
315 socklen_t *addrlen, int *sd); | 315 socklen_t *addrlen, int *sd); |
316 int (*__nacl_irt_bind) (int sockfd, const struct sockaddr *addr, socklen_t addrl en); | 316 int (*__nacl_irt_bind) (int sockfd, const struct sockaddr *addr, socklen_t addrl en); |
317 int (*__nacl_irt_listen) (int sockfd, int backlog); | 317 int (*__nacl_irt_listen) (int sockfd, int backlog); |
318 int (*__nacl_irt_connect) (int sockfd, const struct sockaddr *addr, | 318 int (*__nacl_irt_connect) (int sockfd, const struct sockaddr *addr, |
319 socklen_t addrlen); | 319 socklen_t addrlen); |
320 int (*__nacl_irt_send) (int sockfd, const void *buf, size_t len, int flags, | 320 int (*__nacl_irt_send) (int sockfd, const void *buf, size_t len, int flags, |
321 int *count); | 321 int *count); |
322 int (*__nacl_irt_sendmsg) (int sockfd, const struct msghdr *msg, int flags, | 322 int (*__nacl_irt_sendmsg) (int sockfd, const struct msghdr *msg, int flags, |
323 int *count); | 323 int *count); |
324 int (*__nacl_irt_sendto) (int sockfd, const void *buf, size_t len, int flags, | 324 int (*__nacl_irt_sendto) (int sockfd, const void *buf, size_t len, int flags, |
325 const struct sockaddr *dest_addr, socklen_t addrlen, | 325 const struct sockaddr *dest_addr, socklen_t addrlen, |
326 » » » » » » int *count); | 326 int *count); |
327 int (*__nacl_irt_recv) (int sockfd, void *buf, size_t len, int flags, int *count ); | 327 int (*__nacl_irt_recv) (int sockfd, void *buf, size_t len, int flags, int *count ); |
328 int (*__nacl_irt_recvmsg) (int sockfd, struct msghdr *msg, int flags, int *count ); | 328 int (*__nacl_irt_recvmsg) (int sockfd, struct msghdr *msg, int flags, int *count ); |
329 int (*__nacl_irt_recvfrom) (int sockfd, void *buf, size_t len, int flags, | 329 int (*__nacl_irt_recvfrom) (int sockfd, void *buf, size_t len, int flags, |
330 struct sockaddr *dest_addr, socklen_t* addrlen, int *count); | 330 struct sockaddr *dest_addr, socklen_t* addrlen, int *count); |
331 | 331 |
332 int (*__nacl_irt_epoll_create) (int size, int *fd); | 332 int (*__nacl_irt_epoll_create) (int size, int *fd); |
333 int (*__nacl_irt_epoll_create1) (int flags, int *fd); | 333 int (*__nacl_irt_epoll_create1) (int flags, int *fd); |
334 int (*__nacl_irt_epoll_ctl) (int epfd, int op, int fd, | 334 int (*__nacl_irt_epoll_ctl) (int epfd, int op, int fd, |
335 struct epoll_event *event); | 335 struct epoll_event *event); |
336 int (*__nacl_irt_epoll_pwait) (int epfd, struct epoll_event *events, | 336 int (*__nacl_irt_epoll_pwait) (int epfd, struct epoll_event *events, |
337 int maxevents, int timeout, const sigset_t *sigmask, size_t sigset_size, | 337 int maxevents, int timeout, const sigset_t *sigmask, size_t sigset_size, |
338 » int *count); | 338 int *count); |
339 int (*__nacl_irt_epoll_wait) (int epfd, struct epoll_event *events, | 339 int (*__nacl_irt_epoll_wait) (int epfd, struct epoll_event *events, |
340 int maxevents, int timeout, int *count); | 340 int maxevents, int timeout, int *count); |
341 int (*__nacl_irt_poll) (struct pollfd *fds, nfds_t nfds, | 341 int (*__nacl_irt_poll) (struct pollfd *fds, nfds_t nfds, |
342 int timeout, int *count); | 342 int timeout, int *count); |
343 int (*__nacl_irt_ppoll) (struct pollfd *fds, nfds_t nfds, | 343 int (*__nacl_irt_ppoll) (struct pollfd *fds, nfds_t nfds, |
344 const struct timespec *timeout, const sigset_t *sigmask, | 344 const struct timespec *timeout, const sigset_t *sigmask, |
345 » size_t sigset_size, int *count); | 345 size_t sigset_size, int *count); |
346 int (*__nacl_irt_select) (int nfds, fd_set *readfds, | 346 int (*__nacl_irt_select) (int nfds, fd_set *readfds, |
347 fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, | 347 fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, |
348 » int *count); | 348 int *count); |
349 int (*__nacl_irt_pselect) (int nfds, fd_set *readfds, | 349 int (*__nacl_irt_pselect) (int nfds, fd_set *readfds, |
350 fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, | 350 fd_set *writefds, fd_set *exceptfds, const struct timeval *timeout, |
351 » void* sigmask, int *count); | 351 void* sigmask, int *count); |
352 int (*__nacl_irt_getpeername) (int sockfd, struct sockaddr *addr, | 352 int (*__nacl_irt_getpeername) (int sockfd, struct sockaddr *addr, |
353 socklen_t *addrlen); | 353 socklen_t *addrlen); |
354 int (*__nacl_irt_getsockname) (int sockfd, struct sockaddr *addr, | 354 int (*__nacl_irt_getsockname) (int sockfd, struct sockaddr *addr, |
355 socklen_t *addrlen); | 355 socklen_t *addrlen); |
356 int (*__nacl_irt_getsockopt) (int sockfd, int level, int optname, | 356 int (*__nacl_irt_getsockopt) (int sockfd, int level, int optname, |
357 void *optval, socklen_t *optlen); | 357 void *optval, socklen_t *optlen); |
358 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname, | 358 int (*__nacl_irt_setsockopt) (int sockfd, int level, int optname, |
359 const void *optval, socklen_t optlen); | 359 const void *optval, socklen_t optlen); |
360 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]); | 360 int (*__nacl_irt_socketpair) (int domain, int type, int protocol, int sv[2]); |
361 int (*__nacl_irt_shutdown) (int sockfd, int how); | 361 int (*__nacl_irt_shutdown) (int sockfd, int how); |
362 | 362 |
363 | 363 |
364 int (*__nacl_irt_sysbrk) (void **newbrk); | 364 int (*__nacl_irt_sysbrk) (void **newbrk); |
365 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags, | 365 int (*__nacl_irt_mmap) (void **addr, size_t len, int prot, int flags, |
366 » » » int fd, off_t off); | 366 int fd, off_t off); |
367 int (*__nacl_irt_munmap) (void *addr, size_t len); | 367 int (*__nacl_irt_munmap) (void *addr, size_t len); |
368 int (*__nacl_irt_mprotect) (void *addr, size_t len, int prot); | 368 int (*__nacl_irt_mprotect) (void *addr, size_t len, int prot); |
369 | 369 |
370 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size); | 370 int (*__nacl_irt_dyncode_create) (void *dest, const void *src, size_t size); |
371 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size); | 371 int (*__nacl_irt_dyncode_modify) (void *dest, const void *src, size_t size); |
372 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size); | 372 int (*__nacl_irt_dyncode_delete) (void *dest, size_t size); |
373 | 373 |
374 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack, | 374 int (*__nacl_irt_thread_create) (void *start_user_address, void *stack, |
375 » » » » void *thread_ptr); | 375 void *thread_ptr); |
376 void (*__nacl_irt_thread_exit) (int32_t *stack_flag); | 376 void (*__nacl_irt_thread_exit) (int32_t *stack_flag); |
377 int (*__nacl_irt_thread_nice) (const int nice); | 377 int (*__nacl_irt_thread_nice) (const int nice); |
378 | 378 |
379 int (*__nacl_irt_mutex_create) (int *mutex_handle); | 379 int (*__nacl_irt_mutex_create) (int *mutex_handle); |
380 int (*__nacl_irt_mutex_destroy) (int mutex_handle); | 380 int (*__nacl_irt_mutex_destroy) (int mutex_handle); |
381 int (*__nacl_irt_mutex_lock) (int mutex_handle); | 381 int (*__nacl_irt_mutex_lock) (int mutex_handle); |
382 int (*__nacl_irt_mutex_unlock) (int mutex_handle); | 382 int (*__nacl_irt_mutex_unlock) (int mutex_handle); |
383 int (*__nacl_irt_mutex_trylock) (int mutex_handle); | 383 int (*__nacl_irt_mutex_trylock) (int mutex_handle); |
384 | 384 |
385 int (*__nacl_irt_cond_create) (int *cond_handle); | 385 int (*__nacl_irt_cond_create) (int *cond_handle); |
386 int (*__nacl_irt_cond_destroy) (int cond_handle); | 386 int (*__nacl_irt_cond_destroy) (int cond_handle); |
387 int (*__nacl_irt_cond_signal) (int cond_handle); | 387 int (*__nacl_irt_cond_signal) (int cond_handle); |
388 int (*__nacl_irt_cond_broadcast) (int cond_handle); | 388 int (*__nacl_irt_cond_broadcast) (int cond_handle); |
389 int (*__nacl_irt_cond_wait) (int cond_handle, int mutex_handle); | 389 int (*__nacl_irt_cond_wait) (int cond_handle, int mutex_handle); |
390 int (*__nacl_irt_cond_timed_wait_abs) (int cond_handle, int mutex_handle, | 390 int (*__nacl_irt_cond_timed_wait_abs) (int cond_handle, int mutex_handle, |
391 » » » » const struct timespec *abstime); | 391 const struct timespec *abstime); |
392 | 392 |
393 int (*__nacl_irt_tls_init) (void *tdb); | 393 int (*__nacl_irt_tls_init) (void *tdb); |
394 void *(*__nacl_irt_tls_get) (void); | 394 void *(*__nacl_irt_tls_get) (void); |
395 | 395 |
396 int (*__nacl_irt_open_resource) (const char* file, int *fd); | 396 int (*__nacl_irt_open_resource) (const char* file, int *fd); |
397 | 397 |
398 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res); | 398 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res); |
399 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp); | 399 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp); |
400 | 400 |
401 int (*__nacl_irt_getpid) (int *pid); | 401 int (*__nacl_irt_getpid) (int *pid); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
436 struct nacl_irt_resource_open nacl_irt_resource_open; | 436 struct nacl_irt_resource_open nacl_irt_resource_open; |
437 struct nacl_irt_clock nacl_irt_clock; | 437 struct nacl_irt_clock nacl_irt_clock; |
438 struct nacl_irt_dev_getpid nacl_irt_dev_getpid; | 438 struct nacl_irt_dev_getpid nacl_irt_dev_getpid; |
439 struct nacl_irt_dev_fdio nacl_irt_dev_fdio; | 439 struct nacl_irt_dev_fdio nacl_irt_dev_fdio; |
440 struct nacl_irt_dev_filename_v0_2 nacl_irt_dev_filename_v0_2; | 440 struct nacl_irt_dev_filename_v0_2 nacl_irt_dev_filename_v0_2; |
441 struct nacl_irt_dev_filename nacl_irt_dev_filename; | 441 struct nacl_irt_dev_filename nacl_irt_dev_filename; |
442 } u; | 442 } u; |
443 | 443 |
444 if (__nacl_irt_query && | 444 if (__nacl_irt_query && |
445 __nacl_irt_query (NACL_IRT_BASIC_v0_1, &u.nacl_irt_basic, | 445 __nacl_irt_query (NACL_IRT_BASIC_v0_1, &u.nacl_irt_basic, |
446 » » » sizeof(u.nacl_irt_basic)) == sizeof(u.nacl_irt_basic)) | 446 sizeof(u.nacl_irt_basic)) == sizeof(u.nacl_irt_basic)) |
447 { | 447 { |
448 __nacl_irt_exit = u.nacl_irt_basic.exit; | 448 __nacl_irt_exit = u.nacl_irt_basic.exit; |
449 __nacl_irt_gettod = u.nacl_irt_basic.gettod; | 449 __nacl_irt_gettod = u.nacl_irt_basic.gettod; |
450 __nacl_irt_clock = u.nacl_irt_basic.clock; | 450 __nacl_irt_clock = u.nacl_irt_basic.clock; |
451 __nacl_irt_nanosleep = u.nacl_irt_basic.nanosleep; | 451 __nacl_irt_nanosleep = u.nacl_irt_basic.nanosleep; |
452 __nacl_irt_sched_yield = u.nacl_irt_basic.sched_yield; | 452 __nacl_irt_sched_yield = u.nacl_irt_basic.sched_yield; |
453 __nacl_irt_sysconf = u.nacl_irt_basic.sysconf; | 453 __nacl_irt_sysconf = u.nacl_irt_basic.sysconf; |
454 } | 454 } |
455 else | 455 else |
456 { | 456 { |
457 __nacl_irt_exit = nacl_irt_exit; | 457 __nacl_irt_exit = nacl_irt_exit; |
458 __nacl_irt_gettod = nacl_irt_gettod; | 458 __nacl_irt_gettod = nacl_irt_gettod; |
459 __nacl_irt_clock = nacl_irt_clock; | 459 __nacl_irt_clock = nacl_irt_clock; |
460 __nacl_irt_nanosleep = nacl_irt_nanosleep; | 460 __nacl_irt_nanosleep = nacl_irt_nanosleep; |
461 __nacl_irt_sched_yield = nacl_irt_sched_yield; | 461 __nacl_irt_sched_yield = nacl_irt_sched_yield; |
462 __nacl_irt_sysconf = nacl_irt_sysconf; | 462 __nacl_irt_sysconf = nacl_irt_sysconf; |
463 } | 463 } |
464 | 464 |
465 if (__nacl_irt_query && | 465 if (__nacl_irt_query && |
466 __nacl_irt_query (NACL_IRT_FDIO_v0_1, &u.nacl_irt_fdio, | 466 __nacl_irt_query (NACL_IRT_FDIO_v0_1, &u.nacl_irt_fdio, |
467 » » » sizeof(u.nacl_irt_fdio)) == sizeof(u.nacl_irt_fdio)) | 467 sizeof(u.nacl_irt_fdio)) == sizeof(u.nacl_irt_fdio)) |
468 { | 468 { |
469 __nacl_irt_close = u.nacl_irt_fdio.close; | 469 __nacl_irt_close = u.nacl_irt_fdio.close; |
470 __nacl_irt_dup = u.nacl_irt_fdio.dup; | 470 __nacl_irt_dup = u.nacl_irt_fdio.dup; |
471 __nacl_irt_dup2 = u.nacl_irt_fdio.dup2; | 471 __nacl_irt_dup2 = u.nacl_irt_fdio.dup2; |
472 __nacl_irt_read = u.nacl_irt_fdio.read; | 472 __nacl_irt_read = u.nacl_irt_fdio.read; |
473 __nacl_irt_write = u.nacl_irt_fdio.write; | 473 __nacl_irt_write = u.nacl_irt_fdio.write; |
474 __nacl_irt_seek = u.nacl_irt_fdio.seek; | 474 __nacl_irt_seek = u.nacl_irt_fdio.seek; |
475 __nacl_irt_fstat = u.nacl_irt_fdio.fstat; | 475 __nacl_irt_fstat = u.nacl_irt_fdio.fstat; |
476 __nacl_irt_getdents = u.nacl_irt_fdio.getdents; | 476 __nacl_irt_getdents = u.nacl_irt_fdio.getdents; |
477 } | 477 } |
478 else | 478 else |
479 { | 479 { |
480 __nacl_irt_close = nacl_irt_close; | 480 __nacl_irt_close = nacl_irt_close; |
481 __nacl_irt_dup = nacl_irt_dup; | 481 __nacl_irt_dup = nacl_irt_dup; |
482 __nacl_irt_dup2 = nacl_irt_dup2; | 482 __nacl_irt_dup2 = nacl_irt_dup2; |
483 __nacl_irt_read = nacl_irt_read; | 483 __nacl_irt_read = nacl_irt_read; |
484 __nacl_irt_write = nacl_irt_write; | 484 __nacl_irt_write = nacl_irt_write; |
485 __nacl_irt_seek = nacl_irt_seek; | 485 __nacl_irt_seek = nacl_irt_seek; |
486 __nacl_irt_fstat = nacl_irt_fstat; | 486 __nacl_irt_fstat = nacl_irt_fstat; |
487 __nacl_irt_getdents = nacl_irt_getdents; | 487 __nacl_irt_getdents = nacl_irt_getdents; |
488 } | 488 } |
489 | 489 |
490 if (__nacl_irt_query && | 490 if (__nacl_irt_query && |
491 __nacl_irt_query (NACL_IRT_FILENAME_v0_1, &u.nacl_irt_filename, | 491 __nacl_irt_query (NACL_IRT_FILENAME_v0_1, &u.nacl_irt_filename, |
492 » » » sizeof(u.nacl_irt_filename)) == sizeof(u.nacl_irt_filena me)) | 492 sizeof(u.nacl_irt_filename)) == sizeof(u.nacl_irt_filename)) |
493 { | 493 { |
494 __nacl_irt_open = u.nacl_irt_filename.open; | 494 __nacl_irt_open = u.nacl_irt_filename.open; |
495 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat; | 495 __nacl_irt_stat = u.nacl_irt_filename.nacl_abi_stat; |
496 } | 496 } |
497 else | 497 else |
498 { | 498 { |
499 __nacl_irt_open = nacl_irt_open; | 499 __nacl_irt_open = nacl_irt_open; |
500 __nacl_irt_stat = nacl_irt_stat; | 500 __nacl_irt_stat = nacl_irt_stat; |
501 } | 501 } |
502 | 502 |
503 if (__nacl_irt_query && | 503 if (__nacl_irt_query && |
504 __nacl_irt_query (NACL_IRT_MEMORY_v0_2, &u.nacl_irt_memory, | 504 __nacl_irt_query (NACL_IRT_MEMORY_v0_2, &u.nacl_irt_memory, |
505 » » » sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory)) | 505 sizeof(u.nacl_irt_memory)) == sizeof(u.nacl_irt_memory)) |
506 { | 506 { |
507 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; | 507 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; |
508 __nacl_irt_mmap = u.nacl_irt_memory.mmap; | 508 __nacl_irt_mmap = u.nacl_irt_memory.mmap; |
509 __nacl_irt_munmap = u.nacl_irt_memory.munmap; | 509 __nacl_irt_munmap = u.nacl_irt_memory.munmap; |
510 __nacl_irt_mprotect = u.nacl_irt_memory.mprotect; | 510 __nacl_irt_mprotect = u.nacl_irt_memory.mprotect; |
511 } | 511 } |
512 else if (__nacl_irt_query && | 512 else if (__nacl_irt_query && |
513 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory, | 513 __nacl_irt_query (NACL_IRT_MEMORY_v0_1, &u.nacl_irt_memory, |
514 sizeof(struct nacl_irt_memory_v0_1)) == | 514 sizeof(struct nacl_irt_memory_v0_1)) == |
515 sizeof(struct nacl_irt_memory_v0_1)) | 515 sizeof(struct nacl_irt_memory_v0_1)) |
516 { | 516 { |
517 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; | 517 __nacl_irt_sysbrk = u.nacl_irt_memory.sysbrk; |
518 __nacl_irt_mmap = u.nacl_irt_memory.mmap; | 518 __nacl_irt_mmap = u.nacl_irt_memory.mmap; |
519 __nacl_irt_munmap = u.nacl_irt_memory.munmap; | 519 __nacl_irt_munmap = u.nacl_irt_memory.munmap; |
520 __nacl_irt_mprotect = not_implemented; | 520 __nacl_irt_mprotect = not_implemented; |
521 } | 521 } |
522 else | 522 else |
523 { | 523 { |
524 __nacl_irt_sysbrk = nacl_irt_sysbrk; | 524 __nacl_irt_sysbrk = nacl_irt_sysbrk; |
525 __nacl_irt_mmap = nacl_irt_mmap; | 525 __nacl_irt_mmap = nacl_irt_mmap; |
526 __nacl_irt_munmap = nacl_irt_munmap; | 526 __nacl_irt_munmap = nacl_irt_munmap; |
527 __nacl_irt_mprotect = nacl_irt_mprotect; | 527 __nacl_irt_mprotect = nacl_irt_mprotect; |
528 } | 528 } |
529 | 529 |
530 if (__nacl_irt_query && | 530 if (__nacl_irt_query && |
531 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode, | 531 __nacl_irt_query (NACL_IRT_DYNCODE_v0_1, &u.nacl_irt_dyncode, |
532 » » » sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode )) | 532 sizeof(u.nacl_irt_dyncode)) == sizeof(u.nacl_irt_dyncode)) |
533 { | 533 { |
534 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create; | 534 __nacl_irt_dyncode_create = u.nacl_irt_dyncode.dyncode_create; |
535 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify; | 535 __nacl_irt_dyncode_modify = u.nacl_irt_dyncode.dyncode_modify; |
536 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete; | 536 __nacl_irt_dyncode_delete = u.nacl_irt_dyncode.dyncode_delete; |
537 } | 537 } |
538 else | 538 else |
539 { | 539 { |
540 __nacl_irt_dyncode_create = nacl_irt_dyncode_create; | 540 __nacl_irt_dyncode_create = nacl_irt_dyncode_create; |
541 __nacl_irt_dyncode_modify = nacl_irt_dyncode_modify; | 541 __nacl_irt_dyncode_modify = nacl_irt_dyncode_modify; |
542 __nacl_irt_dyncode_delete = nacl_irt_dyncode_delete; | 542 __nacl_irt_dyncode_delete = nacl_irt_dyncode_delete; |
543 } | 543 } |
544 | 544 |
545 if (__nacl_irt_query && | 545 if (__nacl_irt_query && |
546 __nacl_irt_query (NACL_IRT_THREAD_v0_1, &u.nacl_irt_thread, | 546 __nacl_irt_query (NACL_IRT_THREAD_v0_1, &u.nacl_irt_thread, |
547 » » » sizeof(u.nacl_irt_thread)) == sizeof(u.nacl_irt_thread)) | 547 sizeof(u.nacl_irt_thread)) == sizeof(u.nacl_irt_thread)) |
548 { | 548 { |
549 __nacl_irt_thread_create = u.nacl_irt_thread.thread_create; | 549 __nacl_irt_thread_create = u.nacl_irt_thread.thread_create; |
550 __nacl_irt_thread_exit = u.nacl_irt_thread.thread_exit; | 550 __nacl_irt_thread_exit = u.nacl_irt_thread.thread_exit; |
551 __nacl_irt_thread_nice = u.nacl_irt_thread.thread_nice; | 551 __nacl_irt_thread_nice = u.nacl_irt_thread.thread_nice; |
552 } | 552 } |
553 else | 553 else |
554 { | 554 { |
555 __nacl_irt_thread_create = nacl_irt_thread_create; | 555 __nacl_irt_thread_create = nacl_irt_thread_create; |
556 __nacl_irt_thread_exit = nacl_irt_thread_exit; | 556 __nacl_irt_thread_exit = nacl_irt_thread_exit; |
557 __nacl_irt_thread_nice = nacl_irt_thread_nice; | 557 __nacl_irt_thread_nice = nacl_irt_thread_nice; |
558 } | 558 } |
559 | 559 |
560 if (__nacl_irt_query && | 560 if (__nacl_irt_query && |
561 __nacl_irt_query (NACL_IRT_MUTEX_v0_1, &u.nacl_irt_mutex, | 561 __nacl_irt_query (NACL_IRT_MUTEX_v0_1, &u.nacl_irt_mutex, |
562 » » sizeof(u.nacl_irt_mutex)) == sizeof(u.nacl_irt_mutex)) | 562 sizeof(u.nacl_irt_mutex)) == sizeof(u.nacl_irt_mutex)) |
563 { | 563 { |
564 __nacl_irt_mutex_create = u.nacl_irt_mutex.mutex_create; | 564 __nacl_irt_mutex_create = u.nacl_irt_mutex.mutex_create; |
565 __nacl_irt_mutex_destroy = u.nacl_irt_mutex.mutex_destroy; | 565 __nacl_irt_mutex_destroy = u.nacl_irt_mutex.mutex_destroy; |
566 __nacl_irt_mutex_lock = u.nacl_irt_mutex.mutex_lock; | 566 __nacl_irt_mutex_lock = u.nacl_irt_mutex.mutex_lock; |
567 __nacl_irt_mutex_unlock = u.nacl_irt_mutex.mutex_unlock; | 567 __nacl_irt_mutex_unlock = u.nacl_irt_mutex.mutex_unlock; |
568 __nacl_irt_mutex_trylock = u.nacl_irt_mutex.mutex_trylock; | 568 __nacl_irt_mutex_trylock = u.nacl_irt_mutex.mutex_trylock; |
569 } | 569 } |
570 else | 570 else |
571 { | 571 { |
572 __nacl_irt_mutex_create = nacl_irt_mutex_create; | 572 __nacl_irt_mutex_create = nacl_irt_mutex_create; |
573 __nacl_irt_mutex_destroy = nacl_irt_mutex_destroy; | 573 __nacl_irt_mutex_destroy = nacl_irt_mutex_destroy; |
574 __nacl_irt_mutex_lock = nacl_irt_mutex_lock; | 574 __nacl_irt_mutex_lock = nacl_irt_mutex_lock; |
575 __nacl_irt_mutex_unlock = nacl_irt_mutex_unlock; | 575 __nacl_irt_mutex_unlock = nacl_irt_mutex_unlock; |
576 __nacl_irt_mutex_trylock = nacl_irt_mutex_trylock; | 576 __nacl_irt_mutex_trylock = nacl_irt_mutex_trylock; |
577 } | 577 } |
578 | 578 |
579 if (__nacl_irt_query && | 579 if (__nacl_irt_query && |
580 __nacl_irt_query (NACL_IRT_COND_v0_1, &u.nacl_irt_cond, | 580 __nacl_irt_query (NACL_IRT_COND_v0_1, &u.nacl_irt_cond, |
581 » » sizeof(u.nacl_irt_cond)) == sizeof(u.nacl_irt_cond)) | 581 sizeof(u.nacl_irt_cond)) == sizeof(u.nacl_irt_cond)) |
582 { | 582 { |
583 __nacl_irt_cond_create = u.nacl_irt_cond.cond_create; | 583 __nacl_irt_cond_create = u.nacl_irt_cond.cond_create; |
584 __nacl_irt_cond_destroy = u.nacl_irt_cond.cond_destroy; | 584 __nacl_irt_cond_destroy = u.nacl_irt_cond.cond_destroy; |
585 __nacl_irt_cond_signal = u.nacl_irt_cond.cond_signal; | 585 __nacl_irt_cond_signal = u.nacl_irt_cond.cond_signal; |
586 __nacl_irt_cond_broadcast = u.nacl_irt_cond.cond_broadcast; | 586 __nacl_irt_cond_broadcast = u.nacl_irt_cond.cond_broadcast; |
587 __nacl_irt_cond_wait = u.nacl_irt_cond.cond_wait; | 587 __nacl_irt_cond_wait = u.nacl_irt_cond.cond_wait; |
588 __nacl_irt_cond_timed_wait_abs = u.nacl_irt_cond.cond_timed_wait_abs; | 588 __nacl_irt_cond_timed_wait_abs = u.nacl_irt_cond.cond_timed_wait_abs; |
589 } | 589 } |
590 else | 590 else |
591 { | 591 { |
592 __nacl_irt_cond_create = nacl_irt_cond_create; | 592 __nacl_irt_cond_create = nacl_irt_cond_create; |
593 __nacl_irt_cond_destroy = nacl_irt_cond_destroy; | 593 __nacl_irt_cond_destroy = nacl_irt_cond_destroy; |
594 __nacl_irt_cond_signal = nacl_irt_cond_signal; | 594 __nacl_irt_cond_signal = nacl_irt_cond_signal; |
595 __nacl_irt_cond_broadcast = nacl_irt_cond_broadcast; | 595 __nacl_irt_cond_broadcast = nacl_irt_cond_broadcast; |
596 __nacl_irt_cond_wait = nacl_irt_cond_wait; | 596 __nacl_irt_cond_wait = nacl_irt_cond_wait; |
597 __nacl_irt_cond_timed_wait_abs = nacl_irt_cond_timed_wait_abs; | 597 __nacl_irt_cond_timed_wait_abs = nacl_irt_cond_timed_wait_abs; |
598 } | 598 } |
599 | 599 |
600 if (__nacl_irt_query && | 600 if (__nacl_irt_query && |
601 __nacl_irt_query (NACL_IRT_TLS_v0_1, &u.nacl_irt_tls, | 601 __nacl_irt_query (NACL_IRT_TLS_v0_1, &u.nacl_irt_tls, |
602 » » sizeof(u.nacl_irt_tls)) == sizeof(u.nacl_irt_tls)) | 602 sizeof(u.nacl_irt_tls)) == sizeof(u.nacl_irt_tls)) |
603 { | 603 { |
604 __nacl_irt_tls_init = u.nacl_irt_tls.tls_init; | 604 __nacl_irt_tls_init = u.nacl_irt_tls.tls_init; |
605 __nacl_irt_tls_get = u.nacl_irt_tls.tls_get; | 605 __nacl_irt_tls_get = u.nacl_irt_tls.tls_get; |
606 } | 606 } |
607 else | 607 else |
608 { | 608 { |
609 __nacl_irt_tls_init = nacl_irt_tls_init; | 609 __nacl_irt_tls_init = nacl_irt_tls_init; |
610 __nacl_irt_tls_get = nacl_irt_tls_get; | 610 __nacl_irt_tls_get = nacl_irt_tls_get; |
611 } | 611 } |
612 | 612 |
613 if (__nacl_irt_query && | 613 if (__nacl_irt_query && |
614 __nacl_irt_query (NACL_IRT_RESOURCE_OPEN_v0_1, &u.nacl_irt_resource_open, | 614 __nacl_irt_query (NACL_IRT_RESOURCE_OPEN_v0_1, &u.nacl_irt_resource_open, |
615 » sizeof(u.nacl_irt_resource_open)) == sizeof(u.nacl_irt_resource_open)) | 615 sizeof(u.nacl_irt_resource_open)) == sizeof(u.nacl_irt_resource_open)) |
616 { | 616 { |
617 ___nacl_irt_open_resource = u.nacl_irt_resource_open.open_resource; | 617 ___nacl_irt_open_resource = u.nacl_irt_resource_open.open_resource; |
618 __nacl_irt_open_resource = nacl_irt_open_resource; | 618 __nacl_irt_open_resource = nacl_irt_open_resource; |
619 #ifdef IS_IN_rtld | 619 #ifdef IS_IN_rtld |
620 if (_dl_argc == 1) | 620 if (_dl_argc == 1) |
621 { | 621 { |
622 static const char *argv[] = | 622 static const char *argv[] = |
623 » { | 623 { |
624 » DL_DST_LIB "/runnable-ld.so", | 624 DL_DST_LIB "/runnable-ld.so", |
625 » DL_DST_LIB "/main.nexe", | 625 DL_DST_LIB "/main.nexe", |
626 » 0 | 626 0 |
627 » }; | 627 }; |
628 _dl_argc = 2; | 628 _dl_argc = 2; |
629 _dl_argv = (char **)argv; | 629 _dl_argv = (char **)argv; |
630 } | 630 } |
631 #endif | 631 #endif |
632 } | 632 } |
633 else | 633 else |
634 __nacl_irt_open_resource = nacl_irt_open_as_resource; | 634 __nacl_irt_open_resource = nacl_irt_open_as_resource; |
635 | 635 |
636 if (__nacl_irt_query && | 636 if (__nacl_irt_query && |
637 __nacl_irt_query (NACL_IRT_CLOCK_v0_1, &u.nacl_irt_clock, | 637 __nacl_irt_query (NACL_IRT_CLOCK_v0_1, &u.nacl_irt_clock, |
638 » » » sizeof(u.nacl_irt_clock)) == sizeof(u.nacl_irt_clock)) | 638 sizeof(u.nacl_irt_clock)) == sizeof(u.nacl_irt_clock)) |
639 { | 639 { |
640 __nacl_irt_clock_getres = u.nacl_irt_clock.clock_getres; | 640 __nacl_irt_clock_getres = u.nacl_irt_clock.clock_getres; |
641 __nacl_irt_clock_gettime = u.nacl_irt_clock.clock_gettime; | 641 __nacl_irt_clock_gettime = u.nacl_irt_clock.clock_gettime; |
642 } | 642 } |
643 else | 643 else |
644 { | 644 { |
645 __nacl_irt_clock_getres = nacl_irt_clock_getres; | 645 __nacl_irt_clock_getres = nacl_irt_clock_getres; |
646 __nacl_irt_clock_gettime = nacl_irt_clock_gettime; | 646 __nacl_irt_clock_gettime = nacl_irt_clock_gettime; |
647 } | 647 } |
648 | 648 |
649 if (__nacl_irt_query && | 649 if (__nacl_irt_query && |
650 __nacl_irt_query (NACL_IRT_DEV_GETPID_v0_1, &u.nacl_irt_dev_getpid, | 650 __nacl_irt_query (NACL_IRT_DEV_GETPID_v0_1, &u.nacl_irt_dev_getpid, |
651 » » » sizeof(u.nacl_irt_dev_getpid)) == sizeof(u.nacl_irt_dev_ getpid)) | 651 sizeof(u.nacl_irt_dev_getpid)) == sizeof(u.nacl_irt_dev_getpid)) |
652 { | 652 { |
653 __nacl_irt_getpid = u.nacl_irt_dev_getpid.getpid; | 653 __nacl_irt_getpid = u.nacl_irt_dev_getpid.getpid; |
654 } | 654 } |
655 else | 655 else |
656 { | 656 { |
657 __nacl_irt_getpid = not_implemented; | 657 __nacl_irt_getpid = not_implemented; |
658 } | 658 } |
659 | 659 |
660 if (__nacl_irt_query && | 660 if (__nacl_irt_query && |
661 __nacl_irt_query (NACL_IRT_DEV_FDIO_v0_2, &u.nacl_irt_dev_fdio, | 661 __nacl_irt_query (NACL_IRT_DEV_FDIO_v0_2, &u.nacl_irt_dev_fdio, |
662 » » » sizeof(u.nacl_irt_dev_fdio)) == sizeof(u.nacl_irt_dev_fd io)) | 662 sizeof(u.nacl_irt_dev_fdio)) == sizeof(u.nacl_irt_dev_fdio)) |
663 { | 663 { |
664 __nacl_irt_fchdir = u.nacl_irt_dev_fdio.fchdir; | 664 __nacl_irt_fchdir = u.nacl_irt_dev_fdio.fchdir; |
665 __nacl_irt_fchmod = u.nacl_irt_dev_fdio.fchmod; | 665 __nacl_irt_fchmod = u.nacl_irt_dev_fdio.fchmod; |
666 __nacl_irt_fsync = u.nacl_irt_dev_fdio.fsync; | 666 __nacl_irt_fsync = u.nacl_irt_dev_fdio.fsync; |
667 __nacl_irt_fdatasync = u.nacl_irt_dev_fdio.fdatasync; | 667 __nacl_irt_fdatasync = u.nacl_irt_dev_fdio.fdatasync; |
668 __nacl_irt_ftruncate = u.nacl_irt_dev_fdio.ftruncate; | 668 __nacl_irt_ftruncate = u.nacl_irt_dev_fdio.ftruncate; |
669 } | 669 } |
670 else | 670 else |
671 { | 671 { |
672 __nacl_irt_fchdir = not_implemented; | 672 __nacl_irt_fchdir = not_implemented; |
673 __nacl_irt_fchmod = not_implemented; | 673 __nacl_irt_fchmod = not_implemented; |
674 __nacl_irt_fsync = not_implemented; | 674 __nacl_irt_fsync = not_implemented; |
675 __nacl_irt_fdatasync = not_implemented; | 675 __nacl_irt_fdatasync = not_implemented; |
676 __nacl_irt_ftruncate = not_implemented; | 676 __nacl_irt_ftruncate = not_implemented; |
677 } | 677 } |
678 | 678 |
679 if (__nacl_irt_query && | 679 if (__nacl_irt_query && |
680 __nacl_irt_query (NACL_IRT_DEV_FILENAME_v0_3, &u.nacl_irt_dev_filename, | 680 __nacl_irt_query (NACL_IRT_DEV_FILENAME_v0_3, &u.nacl_irt_dev_filename, |
681 » » » sizeof(u.nacl_irt_dev_filename)) == sizeof(u.nacl_irt_de v_filename)) | 681 sizeof(u.nacl_irt_dev_filename)) == sizeof(u.nacl_irt_dev_filename)) |
682 { | 682 { |
683 __nacl_irt_mkdir = u.nacl_irt_dev_filename.mkdir; | 683 __nacl_irt_mkdir = u.nacl_irt_dev_filename.mkdir; |
684 __nacl_irt_chdir = u.nacl_irt_dev_filename.chdir; | 684 __nacl_irt_chdir = u.nacl_irt_dev_filename.chdir; |
685 __nacl_irt_rmdir = u.nacl_irt_dev_filename.rmdir; | 685 __nacl_irt_rmdir = u.nacl_irt_dev_filename.rmdir; |
686 __nacl_irt_getcwd = u.nacl_irt_dev_filename.getcwd; | 686 __nacl_irt_getcwd = u.nacl_irt_dev_filename.getcwd; |
687 __nacl_irt_unlink = u.nacl_irt_dev_filename.unlink; | 687 __nacl_irt_unlink = u.nacl_irt_dev_filename.unlink; |
688 __nacl_irt_truncate = u.nacl_irt_dev_filename.truncate; | 688 __nacl_irt_truncate = u.nacl_irt_dev_filename.truncate; |
689 __nacl_irt_lstat = u.nacl_irt_dev_filename.lstat; | 689 __nacl_irt_lstat = u.nacl_irt_dev_filename.lstat; |
690 __nacl_irt_link = u.nacl_irt_dev_filename.link; | 690 __nacl_irt_link = u.nacl_irt_dev_filename.link; |
691 __nacl_irt_rename = u.nacl_irt_dev_filename.rename; | 691 __nacl_irt_rename = u.nacl_irt_dev_filename.rename; |
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
760 __nacl_irt_getsockopt = not_implemented; | 760 __nacl_irt_getsockopt = not_implemented; |
761 __nacl_irt_setsockopt = not_implemented; | 761 __nacl_irt_setsockopt = not_implemented; |
762 __nacl_irt_socketpair = not_implemented; | 762 __nacl_irt_socketpair = not_implemented; |
763 __nacl_irt_shutdown = not_implemented; | 763 __nacl_irt_shutdown = not_implemented; |
764 } | 764 } |
765 | 765 |
766 size_t nacl_interface_query(const char *interface_ident, | 766 size_t nacl_interface_query(const char *interface_ident, |
767 void *table, size_t tablesize) { | 767 void *table, size_t tablesize) { |
768 return (*__nacl_irt_query)(interface_ident, table, tablesize); | 768 return (*__nacl_irt_query)(interface_ident, table, tablesize); |
769 } | 769 } |
OLD | NEW |