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

Side by Side Diff: sysdeps/nacl/irt_syscalls.c

Issue 9389024: plumb glibc clock_get interfaces to irt (Closed) Base URL: http://git.chromium.org/native_client/nacl-glibc.git@master
Patch Set: GNU style; pass through for clock_nanosleep Created 8 years, 10 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
« no previous file with comments | « sysdeps/nacl/irt_syscalls.h ('k') | sysdeps/nacl/nacl_syscalls.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #include <string.h> 1 #include <string.h>
2 #include <sys/stat.h> 2 #include <sys/stat.h>
3 #include <time.h>
3 #include <nacl_stat.h> 4 #include <nacl_stat.h>
4 #include <nacl_syscalls.h> 5 #include <nacl_syscalls.h>
5 #define stat nacl_abi_stat 6 #define stat nacl_abi_stat
6 #include <irt.h> 7 #include <irt.h>
7 #undef stat 8 #undef stat
8 #include <irt_syscalls.h> 9 #include <irt_syscalls.h>
9 #ifdef IS_IN_rtld 10 #ifdef IS_IN_rtld
10 #include <ldsodefs.h> 11 #include <ldsodefs.h>
11 #endif 12 #endif
12 #include "trusted-dirs.h" 13 #include "trusted-dirs.h"
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after
251 Note: nacl_mount may change this logic if needed. */ 252 Note: nacl_mount may change this logic if needed. */
252 static int (*___nacl_irt_open_resource) (const char* file, int *fd); 253 static int (*___nacl_irt_open_resource) (const char* file, int *fd);
253 static int nacl_irt_open_resource (const char *pathname, int *newfd) { 254 static int nacl_irt_open_resource (const char *pathname, int *newfd) {
254 if (memcmp (DL_DST_LIB "/", pathname, sizeof (DL_DST_LIB))) 255 if (memcmp (DL_DST_LIB "/", pathname, sizeof (DL_DST_LIB)))
255 return __nacl_irt_open (pathname, O_RDONLY, 0, newfd); 256 return __nacl_irt_open (pathname, O_RDONLY, 0, newfd);
256 else 257 else
257 return ___nacl_irt_open_resource (pathname + sizeof (DL_DST_LIB) - 1, 258 return ___nacl_irt_open_resource (pathname + sizeof (DL_DST_LIB) - 1,
258 newfd); 259 newfd);
259 } 260 }
260 261
262 static int nacl_irt_clock_getres(clockid_t clk_id,
263 struct timespec *res) {
264 return -NACL_SYSCALL (clock_getres) (clk_id, res);
265 }
266
267 static int nacl_irt_clock_gettime(clockid_t clk_id,
268 struct timespec *tp) {
269 return -NACL_SYSCALL (clock_gettime) (clk_id, tp);
270 }
271
261 static size_t no_interface (const char *interface_ident, 272 static size_t no_interface (const char *interface_ident,
262 void *table, size_t tablesize) { 273 void *table, size_t tablesize) {
263 return 0; 274 return 0;
264 } 275 }
265 276
266 size_t (*__nacl_irt_query) (const char *interface_ident, 277 size_t (*__nacl_irt_query) (const char *interface_ident,
267 void *table, size_t tablesize); 278 void *table, size_t tablesize);
268 279
269 void (*__nacl_irt_exit) (int status); 280 void (*__nacl_irt_exit) (int status);
270 int (*__nacl_irt_gettod) (struct timeval *tv); 281 int (*__nacl_irt_gettod) (struct timeval *tv);
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 int (*__nacl_irt_cond_broadcast) (int cond_handle); 323 int (*__nacl_irt_cond_broadcast) (int cond_handle);
313 int (*__nacl_irt_cond_wait) (int cond_handle, int mutex_handle); 324 int (*__nacl_irt_cond_wait) (int cond_handle, int mutex_handle);
314 int (*__nacl_irt_cond_timed_wait_abs) (int cond_handle, int mutex_handle, 325 int (*__nacl_irt_cond_timed_wait_abs) (int cond_handle, int mutex_handle,
315 const struct timespec *abstime); 326 const struct timespec *abstime);
316 327
317 int (*__nacl_irt_tls_init) (void *tdb); 328 int (*__nacl_irt_tls_init) (void *tdb);
318 void *(*__nacl_irt_tls_get) (void); 329 void *(*__nacl_irt_tls_get) (void);
319 330
320 int (*__nacl_irt_open_resource) (const char* file, int *fd); 331 int (*__nacl_irt_open_resource) (const char* file, int *fd);
321 332
333 int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res);
334 int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp);
335
322 void 336 void
323 init_irt_table (void) 337 init_irt_table (void)
324 { 338 {
325 union { 339 union {
326 struct nacl_irt_basic nacl_irt_basic; 340 struct nacl_irt_basic nacl_irt_basic;
327 struct nacl_irt_fdio nacl_irt_fdio; 341 struct nacl_irt_fdio nacl_irt_fdio;
328 struct nacl_irt_filename nacl_irt_filename; 342 struct nacl_irt_filename nacl_irt_filename;
329 struct nacl_irt_memory nacl_irt_memory; 343 struct nacl_irt_memory nacl_irt_memory;
330 struct nacl_irt_dyncode nacl_irt_dyncode; 344 struct nacl_irt_dyncode nacl_irt_dyncode;
331 struct nacl_irt_thread nacl_irt_thread; 345 struct nacl_irt_thread nacl_irt_thread;
332 struct nacl_irt_mutex nacl_irt_mutex; 346 struct nacl_irt_mutex nacl_irt_mutex;
333 struct nacl_irt_cond nacl_irt_cond; 347 struct nacl_irt_cond nacl_irt_cond;
334 struct nacl_irt_tls nacl_irt_tls; 348 struct nacl_irt_tls nacl_irt_tls;
335 struct nacl_irt_resource_open nacl_irt_resource_open; 349 struct nacl_irt_resource_open nacl_irt_resource_open;
350 struct nacl_irt_clock nacl_irt_clock;
336 } u; 351 } u;
337 352
338 if (__nacl_irt_query && 353 if (__nacl_irt_query &&
339 __nacl_irt_query (NACL_IRT_BASIC_v0_1, &u.nacl_irt_basic, 354 __nacl_irt_query (NACL_IRT_BASIC_v0_1, &u.nacl_irt_basic,
340 sizeof(u.nacl_irt_basic)) == sizeof(u.nacl_irt_basic)) 355 sizeof(u.nacl_irt_basic)) == sizeof(u.nacl_irt_basic))
341 { 356 {
342 __nacl_irt_exit = u.nacl_irt_basic.exit; 357 __nacl_irt_exit = u.nacl_irt_basic.exit;
343 __nacl_irt_gettod = u.nacl_irt_basic.gettod; 358 __nacl_irt_gettod = u.nacl_irt_basic.gettod;
344 __nacl_irt_clock = u.nacl_irt_basic.clock; 359 __nacl_irt_clock = u.nacl_irt_basic.clock;
345 __nacl_irt_nanosleep = u.nacl_irt_basic.nanosleep; 360 __nacl_irt_nanosleep = u.nacl_irt_basic.nanosleep;
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
508 0 523 0
509 }; 524 };
510 _dl_argc = 2; 525 _dl_argc = 2;
511 _dl_argv = (char **)argv; 526 _dl_argv = (char **)argv;
512 } 527 }
513 #endif 528 #endif
514 } 529 }
515 else 530 else
516 __nacl_irt_open_resource = nacl_irt_open_as_resource; 531 __nacl_irt_open_resource = nacl_irt_open_as_resource;
517 532
533 if (__nacl_irt_query &&
534 __nacl_irt_query (NACL_IRT_CLOCK_v0_1, &u.nacl_irt_clock,
535 sizeof(u.nacl_irt_clock)) == sizeof(u.nacl_irt_clock))
536 {
537 __nacl_irt_clock_getres = u.nacl_irt_clock.getres;
538 __nacl_irt_clock_gettime = u.nacl_irt_clock.gettime;
539 }
540 else
541 {
542 __nacl_irt_clock_getres = nacl_irt_clock_getres;
543 __nacl_irt_clock_gettime = nacl_irt_clock_gettime;
544 }
545
518 if (!__nacl_irt_query) 546 if (!__nacl_irt_query)
519 __nacl_irt_query = no_interface; 547 __nacl_irt_query = no_interface;
520 } 548 }
521 549
522 size_t nacl_interface_query(const char *interface_ident, 550 size_t nacl_interface_query(const char *interface_ident,
523 void *table, size_t tablesize) { 551 void *table, size_t tablesize) {
524 return (*__nacl_irt_query)(interface_ident, table, tablesize); 552 return (*__nacl_irt_query)(interface_ident, table, tablesize);
525 } 553 }
OLDNEW
« no previous file with comments | « sysdeps/nacl/irt_syscalls.h ('k') | sysdeps/nacl/nacl_syscalls.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698