[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 7/7] lib/nolibc: Implement clock_gettime()
Hi Florian, Looks good, just a minor comment (inline) that I will fix when upstreaming. Thanks for the series. — Felipe Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx> > On 22. Feb 2019, at 15:12, Florian Schmidt <Florian.Schmidt@xxxxxxxxx> wrote: > > Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> > --- > lib/nolibc/exportsyms.uk | 1 + > .../include/nolibc-internal/shareddefs.h | 5 ++++ > lib/nolibc/include/sys/types.h | 1 + > lib/nolibc/include/time.h | 7 +++++ > lib/nolibc/time.c | 26 +++++++++++++++++++ > 5 files changed, 40 insertions(+) > > diff --git a/lib/nolibc/exportsyms.uk b/lib/nolibc/exportsyms.uk > index a26440c9..ddc73bf1 100644 > --- a/lib/nolibc/exportsyms.uk > +++ b/lib/nolibc/exportsyms.uk > @@ -71,6 +71,7 @@ strlcat > > # time > nanosleep > +clock_gettime > > # sys/time > gettimeofday > diff --git a/lib/nolibc/include/nolibc-internal/shareddefs.h > b/lib/nolibc/include/nolibc-internal/shareddefs.h > index 7572e2d3..fb7d95b2 100644 > --- a/lib/nolibc/include/nolibc-internal/shareddefs.h > +++ b/lib/nolibc/include/nolibc-internal/shareddefs.h > @@ -91,6 +91,11 @@ struct timespec { > #define __DEFINED_struct_timespec > #endif > > +#if (defined __NEED_clockid_t && !defined __DEFINED_clockid_t) > +typedef int clockid_t; > +#define __DEFINED_clockid_t > +#endif > + > #if (defined __NEED_mode_t && !defined __DEFINED_mode_t) > typedef unsigned mode_t; > #define __DEFINED_mode_t > diff --git a/lib/nolibc/include/sys/types.h b/lib/nolibc/include/sys/types.h > index 7c43ef3f..20a3c97d 100644 > --- a/lib/nolibc/include/sys/types.h > +++ b/lib/nolibc/include/sys/types.h > @@ -48,6 +48,7 @@ extern "C" { > #define __NEED_off_t > #define __NEED_time_t > #define __NEED_suseconds_t > +#define __NEED_clockid_t > #define __NEED_mode_t > #define __NEED_uid_t > #define __NEED_gid_t > diff --git a/lib/nolibc/include/time.h b/lib/nolibc/include/time.h > index a6b9585b..5223914a 100644 > --- a/lib/nolibc/include/time.h > +++ b/lib/nolibc/include/time.h > @@ -44,14 +44,21 @@ extern "C" { > #define __NEED_NULL > #define __NEED_time_t > #define __NEED_struct_timespec > +#define __NEED_clockid_t > #include <nolibc-internal/shareddefs.h> > > +#define CLOCK_REALTIME 0 > +#define CLOCK_MONOTONIC 1 > + > +#define TIMER_ABSTIME 1 The line above defines TIMER_ABSTIME but it’s never used. I’ll remove this line on upstreaming. > + > struct itimerspec { > struct timespec it_interval; > struct timespec it_value; > }; > > int nanosleep(const struct timespec *req, struct timespec *rem); > +int clock_gettime(clockid_t clk, struct timespec *tp); > > #ifdef __cplusplus > } > diff --git a/lib/nolibc/time.c b/lib/nolibc/time.c > index b15d7e0d..69f29300 100644 > --- a/lib/nolibc/time.c > +++ b/lib/nolibc/time.c > @@ -105,3 +105,29 @@ int gettimeofday(struct timeval *tv, void *tz __unused) > tv->tv_usec = ukarch_time_nsec_to_usec(ukarch_time_subsec(now)); > return 0; > } > + > +int clock_gettime(clockid_t clk_id, struct timespec *tp) > +{ > + __nsec now; > + > + if (!tp) { > + errno = EFAULT; > + return -1; > + } > + > + switch (clk_id) { > + case CLOCK_MONOTONIC: > + now = ukplat_monotonic_clock(); > + break; > + case CLOCK_REALTIME: > + now = ukplat_wall_clock(); > + break; > + default: > + errno = EINVAL; > + return -1; > + } > + > + tp->tv_sec = ukarch_time_nsec_to_sec(now); > + tp->tv_nsec = ukarch_time_subsec(now); > + return 0; > +} > -- > 2.20.1 > > > _______________________________________________ > Minios-devel mailing list > Minios-devel@xxxxxxxxxxxxxxxxxxxx > https://lists.xenproject.org/mailman/listinfo/minios-devel _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |