[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Minios-devel] [UNIKRAFT/NEWLIB PATCH] Implement gettimeofday, clock_gettime, sleep



Hi Florian

Patch looks good, thanks.

— Felipe

Reviewed-by: Felipe Huici <felipe.huici@xxxxxxxxx>

On 03.04.19, 14:16, "Florian Schmidt" <Florian.Schmidt@xxxxxxxxx> wrote:

    The implementations are taken from nolibc.
    
    Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx>
    ---
     include/time.h |  1 +
     time.c         | 43 +++++++++++++++++++++++++++++++++++++++++++
     2 files changed, 44 insertions(+)
    
    diff --git a/include/time.h b/include/time.h
    index dd2eef2..2718515 100644
    --- a/include/time.h
    +++ b/include/time.h
    @@ -59,6 +59,7 @@
     #endif /* __DYNAMIC_REENT__ */
     #endif /* __rtems__ */
     
    +#define _POSIX_MONOTONIC_CLOCK 1
     #include_next <time.h>
     
     /* cleanup __rtems__ */
    diff --git a/time.c b/time.c
    index fa887ba..dccf8a1 100644
    --- a/time.c
    +++ b/time.c
    @@ -36,6 +36,7 @@
      */
     
     #include <errno.h>
    +#include <time.h>
     #include <sys/time.h>
     #include <utime.h>
     #include <uk/plat/time.h>
    @@ -49,6 +50,15 @@
     int
     gettimeofday(struct timeval *tv __unused, void *tz __unused)
     {
    +   __nsec now = ukplat_wall_clock();
    +
    +   if (!tv) {
    +           errno = EINVAL;
    +           return -1;
    +   }
    +
    +   tv->tv_sec = ukarch_time_nsec_to_sec(now);
    +   tv->tv_usec = ukarch_time_nsec_to_usec(ukarch_time_subsec(now));
        return 0;
     }
     
    @@ -103,7 +113,40 @@ int nanosleep(const struct timespec *req, struct 
timespec *rem)
        return 0;
     }
     
    +unsigned int sleep(unsigned int seconds)
    +{
    +   struct timespec ts;
    +
    +   ts.tv_sec = seconds;
    +   ts.tv_nsec = 0;
    +   if (nanosleep(&ts, &ts))
    +           return ts.tv_sec;
    +
    +   return 0;
    +}
    +
     int clock_gettime(clockid_t clk_id __unused, struct timespec *tp __unused)
     {
    +   __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.21.0
    
    

_______________________________________________
Minios-devel mailing list
Minios-devel@xxxxxxxxxxxxxxxxxxxx
https://lists.xenproject.org/mailman/listinfo/minios-devel

 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.