| // 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 runtime.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; | 
 | } |