diff options
author | jbj <devnull@localhost> | 2001-10-15 03:47:21 +0000 |
---|---|---|
committer | jbj <devnull@localhost> | 2001-10-15 03:47:21 +0000 |
commit | db7110722d3317cc81dd11c104dd45ac8c328e20 (patch) | |
tree | acc2fe412f5d1f7e3d3fd35993fd3fd5cc20a7f3 /db/os | |
parent | 033e2a186a797374caeb2295a00dee5eef202ffc (diff) | |
download | librpm-tizen-db7110722d3317cc81dd11c104dd45ac8c328e20.tar.gz librpm-tizen-db7110722d3317cc81dd11c104dd45ac8c328e20.tar.bz2 librpm-tizen-db7110722d3317cc81dd11c104dd45ac8c328e20.zip |
Initial revision
CVS patchset: 5110
CVS date: 2001/10/15 03:47:21
Diffstat (limited to 'db/os')
-rw-r--r-- | db/os/os_clock.c | 93 |
1 files changed, 93 insertions, 0 deletions
diff --git a/db/os/os_clock.c b/db/os/os_clock.c new file mode 100644 index 000000000..b6218a845 --- /dev/null +++ b/db/os/os_clock.c @@ -0,0 +1,93 @@ +/*- + * See the file LICENSE for redistribution information. + * + * Copyright (c) 2001 + * Sleepycat Software. All rights reserved. + */ + +#include "db_config.h" + +#ifndef lint +static const char revid[] = "Id: os_clock.c,v 1.6 2001/09/07 18:17:49 krinsky Exp "; +#endif /* not lint */ + +#ifndef NO_SYSTEM_INCLUDES +#include <sys/types.h> + +#if TIME_WITH_SYS_TIME +#include <sys/time.h> +#include <time.h> +#else +#if HAVE_SYS_TIME_H +#include <sys/time.h> +#else +#include <time.h> +#endif /* HAVE_SYS_TIME_H */ +#endif /* TIME_WITH SYS_TIME */ + +#include <string.h> +#endif + +#include "db_int.h" +#include "os_jump.h" + +/* + * __os_clock -- + * Return the current time-of-day clock in seconds and microseconds. + * + * PUBLIC: int __os_clock __P((DB_ENV *, u_int32_t *, u_int32_t *)); + */ +int +__os_clock(dbenv, secsp, usecsp) + DB_ENV *dbenv; + u_int32_t *secsp, *usecsp; /* Seconds and microseconds. */ +{ +#if defined(HAVE_GETTIMEOFDAY) + struct timeval tp; + int ret; + +retry: if (gettimeofday(&tp, NULL) != 0) { + if ((ret = __os_get_errno()) == EINTR) + goto retry; + __db_err(dbenv, "gettimeofday: %s", strerror(ret)); + return (ret); + } + + if (secsp != NULL) + *secsp = tp.tv_sec; + if (usecsp != NULL) + *usecsp = tp.tv_usec; +#endif +#if !defined(HAVE_GETTIMEOFDAY) && defined(HAVE_CLOCK_GETTIME) + struct timespec tp; + int ret; + +retry: if (clock_gettime(CLOCK_REALTIME, &tp) != 0) { + if ((ret = __os_get_errno()) == EINTR) + goto retry; + __db_err(dbenv, "clock_gettime: %s", strerror(ret)); + return (ret); + } + + if (secsp != NULL) + *secsp = tp.tv_sec; + if (usecsp != NULL) + *usecsp = tp.tv_nsec / 1000; +#endif +#if !defined(HAVE_GETTIMEOFDAY) && !defined(HAVE_CLOCK_GETTIME) + time_t now; + int ret; + + if (time(&now) == (time_t)-1) { + ret = __os_get_errno(); + __db_err(dbenv, "time: %s", strerror(ret)); + return (ret); + } + + if (secsp != NULL) + *secsp = now; + if (usecsp != NULL) + *usecsp = 0; +#endif + return (0); +} |