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

Unified 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « sysdeps/nacl/irt_syscalls.h ('k') | sysdeps/nacl/nacl_syscalls.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: sysdeps/nacl/irt_syscalls.c
diff --git a/sysdeps/nacl/irt_syscalls.c b/sysdeps/nacl/irt_syscalls.c
index 3c141671b9cc6a7d6698de1c840ec97eb1e993fb..3706927dcea20d91664b38092ea9cd58e48cdb05 100644
--- a/sysdeps/nacl/irt_syscalls.c
+++ b/sysdeps/nacl/irt_syscalls.c
@@ -1,5 +1,6 @@
#include <string.h>
#include <sys/stat.h>
+#include <time.h>
#include <nacl_stat.h>
#include <nacl_syscalls.h>
#define stat nacl_abi_stat
@@ -258,6 +259,16 @@ static int nacl_irt_open_resource (const char *pathname, int *newfd) {
newfd);
}
+static int nacl_irt_clock_getres(clockid_t clk_id,
+ struct timespec *res) {
+ return -NACL_SYSCALL (clock_getres) (clk_id, res);
+}
+
+static int nacl_irt_clock_gettime(clockid_t clk_id,
+ struct timespec *tp) {
+ return -NACL_SYSCALL (clock_gettime) (clk_id, tp);
+}
+
static size_t no_interface (const char *interface_ident,
void *table, size_t tablesize) {
return 0;
@@ -319,6 +330,9 @@ void *(*__nacl_irt_tls_get) (void);
int (*__nacl_irt_open_resource) (const char* file, int *fd);
+int (*__nacl_irt_clock_getres) (clockid_t clk_id, struct timespec *res);
+int (*__nacl_irt_clock_gettime) (clockid_t clk_id, struct timespec *tp);
+
void
init_irt_table (void)
{
@@ -333,6 +347,7 @@ init_irt_table (void)
struct nacl_irt_cond nacl_irt_cond;
struct nacl_irt_tls nacl_irt_tls;
struct nacl_irt_resource_open nacl_irt_resource_open;
+ struct nacl_irt_clock nacl_irt_clock;
} u;
if (__nacl_irt_query &&
@@ -515,6 +530,19 @@ init_irt_table (void)
else
__nacl_irt_open_resource = nacl_irt_open_as_resource;
+ if (__nacl_irt_query &&
+ __nacl_irt_query (NACL_IRT_CLOCK_v0_1, &u.nacl_irt_clock,
+ sizeof(u.nacl_irt_clock)) == sizeof(u.nacl_irt_clock))
+ {
+ __nacl_irt_clock_getres = u.nacl_irt_clock.getres;
+ __nacl_irt_clock_gettime = u.nacl_irt_clock.gettime;
+ }
+ else
+ {
+ __nacl_irt_clock_getres = nacl_irt_clock_getres;
+ __nacl_irt_clock_gettime = nacl_irt_clock_gettime;
+ }
+
if (!__nacl_irt_query)
__nacl_irt_query = no_interface;
}
« 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