| Index: fusl/src/time/clock_gettime.c
|
| diff --git a/fusl/src/time/clock_gettime.c b/fusl/src/time/clock_gettime.c
|
| index 241288042d64c36ce13f4506a5d0f5a8695a7ac1..424e5f42605874e5858258402c437ed6d3dd9456 100644
|
| --- a/fusl/src/time/clock_gettime.c
|
| +++ b/fusl/src/time/clock_gettime.c
|
| @@ -7,52 +7,52 @@
|
|
|
| #ifdef VDSO_CGT_SYM
|
|
|
| -void *__vdsosym(const char *, const char *);
|
| +void* __vdsosym(const char*, const char*);
|
|
|
| -static void *volatile vdso_func;
|
| +static void* volatile vdso_func;
|
|
|
| -static int cgt_init(clockid_t clk, struct timespec *ts)
|
| -{
|
| - void *p = __vdsosym(VDSO_CGT_VER, VDSO_CGT_SYM);
|
| - int (*f)(clockid_t, struct timespec *) =
|
| - (int (*)(clockid_t, struct timespec *))p;
|
| - a_cas_p(&vdso_func, (void *)cgt_init, p);
|
| - return f ? f(clk, ts) : -ENOSYS;
|
| +static int cgt_init(clockid_t clk, struct timespec* ts) {
|
| + void* p = __vdsosym(VDSO_CGT_VER, VDSO_CGT_SYM);
|
| + int (*f)(clockid_t, struct timespec*) =
|
| + (int (*)(clockid_t, struct timespec*))p;
|
| + a_cas_p(&vdso_func, (void*)cgt_init, p);
|
| + return f ? f(clk, ts) : -ENOSYS;
|
| }
|
|
|
| -static void *volatile vdso_func = (void *)cgt_init;
|
| +static void* volatile vdso_func = (void*)cgt_init;
|
|
|
| #endif
|
|
|
| -int __clock_gettime(clockid_t clk, struct timespec *ts)
|
| -{
|
| - int r;
|
| +int __clock_gettime(clockid_t clk, struct timespec* ts) {
|
| + int r;
|
|
|
| #ifdef VDSO_CGT_SYM
|
| - int (*f)(clockid_t, struct timespec *) =
|
| - (int (*)(clockid_t, struct timespec *))vdso_func;
|
| - if (f) {
|
| - r = f(clk, ts);
|
| - if (!r) return r;
|
| - if (r == -EINVAL) return __syscall_ret(r);
|
| - /* Fall through on errors other than EINVAL. Some buggy
|
| - * vdso implementations return ENOSYS for clocks they
|
| - * can't handle, rather than making the syscall. This
|
| - * also handles the case where cgt_init fails to find
|
| - * a vdso function to use. */
|
| - }
|
| + int (*f)(clockid_t, struct timespec*) =
|
| + (int (*)(clockid_t, struct timespec*))vdso_func;
|
| + if (f) {
|
| + r = f(clk, ts);
|
| + if (!r)
|
| + return r;
|
| + if (r == -EINVAL)
|
| + return __syscall_ret(r);
|
| + /* Fall through on errors other than EINVAL. Some buggy
|
| + * vdso implementations return ENOSYS for clocks they
|
| + * can't handle, rather than making the syscall. This
|
| + * also handles the case where cgt_init fails to find
|
| + * a vdso function to use. */
|
| + }
|
| #endif
|
|
|
| - r = __syscall(SYS_clock_gettime, clk, ts);
|
| - if (r == -ENOSYS) {
|
| - if (clk == CLOCK_REALTIME) {
|
| - __syscall(SYS_gettimeofday, ts, 0);
|
| - ts->tv_nsec = (int)ts->tv_nsec * 1000;
|
| - return 0;
|
| - }
|
| - r = -EINVAL;
|
| - }
|
| - return __syscall_ret(r);
|
| + r = __syscall(SYS_clock_gettime, clk, ts);
|
| + if (r == -ENOSYS) {
|
| + if (clk == CLOCK_REALTIME) {
|
| + __syscall(SYS_gettimeofday, ts, 0);
|
| + ts->tv_nsec = (int)ts->tv_nsec * 1000;
|
| + return 0;
|
| + }
|
| + r = -EINVAL;
|
| + }
|
| + return __syscall_ret(r);
|
| }
|
|
|
| weak_alias(__clock_gettime, clock_gettime);
|
|
|