// Copyright 2011 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

#include <stddef.h>
#include <stdint.h>
#include <sys/time.h>

#include "runtime.h"

// Return current time.  This is the implementation of time.walltime().

struct walltime_ret
{
  int64_t sec;
  int32_t nsec;
};

struct walltime_ret now(void) __asm__ (GOSYM_PREFIX "runtime.walltime")
  __attribute__ ((no_split_stack));

struct walltime_ret
now(void)
{
  struct timespec ts;
  struct walltime_ret ret;

  clock_gettime (CLOCK_REALTIME, &ts);
  ret.sec = ts.tv_sec;
  ret.nsec = ts.tv_nsec;
  return ret;
}
