github.com/golang/gofrontend@v0.0.0-20240429183944-60f985a78526/libgo/runtime/go-now.c (about)

     1  // Copyright 2011 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  #include <stddef.h>
     6  #include <stdint.h>
     7  #include <sys/time.h>
     8  
     9  #include "runtime.h"
    10  
    11  // Return current time.  This is the implementation of runtime.walltime().
    12  
    13  struct walltime_ret
    14  {
    15    int64_t sec;
    16    int32_t nsec;
    17  };
    18  
    19  struct walltime_ret now(void) __asm__ (GOSYM_PREFIX "runtime.walltime")
    20    __attribute__ ((no_split_stack));
    21  
    22  struct walltime_ret
    23  now(void)
    24  {
    25    struct timespec ts;
    26    struct walltime_ret ret;
    27  
    28    clock_gettime (CLOCK_REALTIME, &ts);
    29    ret.sec = ts.tv_sec;
    30    ret.nsec = ts.tv_nsec;
    31    return ret;
    32  }