Returns the current high-resolution real time.
$(NXT_BUILDDIR)/nxt_sha1.o \
$(NXT_BUILDDIR)/nxt_sha2.o \
$(NXT_BUILDDIR)/nxt_pcre.o \
+ $(NXT_BUILDDIR)/nxt_time.o \
$(NXT_BUILDDIR)/nxt_malloc.o \
$(NXT_BUILDDIR)/nxt_mem_cache_pool.o \
$(NXT_BUILDDIR)/nxt_sha1.o \
$(NXT_BUILDDIR)/nxt_sha2.o \
$(NXT_BUILDDIR)/nxt_pcre.o \
+ $(NXT_BUILDDIR)/nxt_time.o \
$(NXT_BUILDDIR)/nxt_malloc.o \
$(NXT_BUILDDIR)/nxt_mem_cache_pool.o \
-I$(NXT_LIB) $(NXT_EDITLINE_CFLAGS) -Injs \
njs/njs_shell.c \
$(NXT_BUILDDIR)/libnjs.a \
- -lm $(NXT_PCRE_LIB) $(NXT_EDITLINE_LIB)
+ -lm $(NXT_PCRE_LIB) $(NXT_LIBRT) $(NXT_EDITLINE_LIB)
$(NXT_BUILDDIR)/njs_unit_test: \
$(NXT_BUILDDIR)/libnxt.a \
-I$(NXT_LIB) -Injs \
njs/test/njs_unit_test.c \
$(NXT_BUILDDIR)/libnjs.a \
- -lm $(NXT_PCRE_LIB)
+ -lm $(NXT_PCRE_LIB) $(NXT_LIBRT)
$(NXT_BUILDDIR)/njs_interactive_test: \
$(NXT_BUILDDIR)/libnxt.a \
-I$(NXT_LIB) -Injs \
njs/test/njs_interactive_test.c \
$(NXT_BUILDDIR)/libnjs.a \
- -lm $(NXT_PCRE_LIB)
+ -lm $(NXT_PCRE_LIB) $(NXT_LIBRT)
$(NXT_BUILDDIR)/njs_benchmark: \
$(NXT_BUILDDIR)/libnxt.a \
-I$(NXT_LIB) -Injs \
njs/test/njs_benchmark.c \
$(NXT_BUILDDIR)/libnjs.a \
- -lm $(NXT_PCRE_LIB)
+ -lm $(NXT_PCRE_LIB) $(NXT_LIBRT)
include $(NXT_LIB)/Makefile
$(NXT_BUILDDIR)/nxt_pcre.o \
$(NXT_BUILDDIR)/nxt_malloc.o \
$(NXT_BUILDDIR)/nxt_trace.o \
+ $(NXT_BUILDDIR)/nxt_time.o \
$(NXT_BUILDDIR)/nxt_mem_cache_pool.o \
ar -r -c $(NXT_BUILDDIR)/libnxt.a \
$(NXT_BUILDDIR)/nxt_sha2.o \
$(NXT_BUILDDIR)/nxt_pcre.o \
$(NXT_BUILDDIR)/nxt_malloc.o \
+ $(NXT_BUILDDIR)/nxt_time.o \
$(NXT_BUILDDIR)/nxt_trace.o \
$(NXT_BUILDDIR)/nxt_mem_cache_pool.o \
-I$(NXT_LIB) \
$(NXT_LIB)/nxt_malloc.c
+$(NXT_BUILDDIR)/nxt_time.o: \
+ $(NXT_LIB)/nxt_auto_config.h \
+ $(NXT_LIB)/nxt_types.h \
+ $(NXT_LIB)/nxt_clang.h \
+ $(NXT_LIB)/nxt_time.h \
+ $(NXT_LIB)/nxt_time.c \
+
+ $(NXT_CC) -c -o $(NXT_BUILDDIR)/nxt_time.o $(NXT_CFLAGS) \
+ -I$(NXT_LIB) \
+ $(NXT_LIB)/nxt_time.c
+
$(NXT_BUILDDIR)/nxt_trace.o: \
$(NXT_LIB)/nxt_auto_config.h \
$(NXT_LIB)/nxt_types.h \
# Copyright (C) NGINX, Inc.
+nxt_feature="clock_gettime(CLOCK_MONOTONIC)"
+nxt_feature_name=NXT_HAVE_CLOCK_MONOTONIC
+nxt_feature_run=yes
+nxt_feature_incs=
+nxt_feature_libs=
+nxt_feature_test="#include <time.h>
+
+ int main() {
+ struct timespec ts;
+
+ if (clock_gettime(CLOCK_MONOTONIC, &ts) == -1)
+ return 1;
+ return 0;
+ }"
+. ${NXT_AUTO}feature
+
+
+if [ $nxt_found = no ]; then
+
+ # Linux and Solaris 10 clock_gettime() are in librt.
+
+ nxt_feature="clock_gettime(CLOCK_MONOTONIC) in librt"
+ nxt_feature_libs="-lrt"
+ . ${NXT_AUTO}feature
+fi
+
+if [ $nxt_found = yes ]; then
+ cat << END >> $NXT_MAKEFILE_CONF
+
+NXT_LIBRT = -lrt
+END
+
+else
+ cat << END >> $NXT_MAKEFILE_CONF
+
+NXT_LIBRT =
+END
+
+fi
+
# Linux, FreeBSD, MacOSX.
nxt_feature="struct tm.tm_gmtoff"
--- /dev/null
+
+/*
+ * Copyright (C) Igor Sysoev
+ * Copyright (C) NGINX, Inc.
+ */
+
+#include <nxt_auto_config.h>
+#include <nxt_types.h>
+#include <nxt_clang.h>
+#include <nxt_time.h>
+
+#include <time.h>
+
+uint64_t
+nxt_time(void)
+{
+#if (NXT_HAVE_CLOCK_MONOTONIC)
+ struct timespec ts;
+
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+
+ return (uint64_t) ts.tv_sec * 1000000000 + ts.tv_nsec;
+#else
+ struct timeval tv;
+
+ gettimeofday(&tv, NULL);
+
+ return (uint64_t) tv.tv_sec * 1000000000 + tv.tv_usec * 1000;
+#endif
+}
#endif
+uint64_t nxt_time(void);
+
+
#endif /* _NXT_TIME_H_INCLUDED_ */