diff options
author | Jasper Lievisse Adriaanse <jasper@humppa.nl> | 2011-06-16 12:27:00 +0200 |
---|---|---|
committer | Jasper Lievisse Adriaanse <jasper@humppa.nl> | 2011-06-16 12:27:00 +0200 |
commit | 46706961ac8dcb27a063506b4a178419bb1fd1e3 (patch) | |
tree | 63395d38098970e57541a13708cfbe47f8ea2bdc /sysdeps/openbsd/uptime.c | |
parent | edda30a4adf4f2501ee0de00c7df7341240bd630 (diff) | |
download | libgtop-46706961ac8dcb27a063506b4a178419bb1fd1e3.tar.gz |
Split off OpenBSD code into a separate implementation
Move OpenBSD code into its own sysdeps directory. The changes from
bsd/ were becoming to hard to maintain as a #ifdef tree. This is
what's currently being distributed as part of OpenBSD ports.
Diffstat (limited to 'sysdeps/openbsd/uptime.c')
-rw-r--r-- | sysdeps/openbsd/uptime.c | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/sysdeps/openbsd/uptime.c b/sysdeps/openbsd/uptime.c new file mode 100644 index 00000000..fdfd44c6 --- /dev/null +++ b/sysdeps/openbsd/uptime.c @@ -0,0 +1,70 @@ +/* $OpenBSD: uptime.c,v 1.3 2011/05/23 19:35:57 jasper Exp $ */ + +/* Copyright (C) 1998-99 Martin Baulig + This file is part of LibGTop 1.0. + + Contributed by Martin Baulig <martin@home-of-linux.org>, April 1998. + + LibGTop is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, + or (at your option) any later version. + + LibGTop is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with LibGTop; see the file COPYING. If not, write to the + Free Software Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. +*/ + +#include <config.h> +#include <glibtop.h> +#include <glibtop/error.h> +#include <glibtop/uptime.h> + +#include <glibtop/cpu.h> + +#include <glibtop_suid.h> + +static const unsigned long _glibtop_sysdeps_uptime = +(1L << GLIBTOP_UPTIME_UPTIME) + (1L << GLIBTOP_UPTIME_IDLETIME); + +static const unsigned long _required_cpu_flags = +(1L << GLIBTOP_CPU_TOTAL) + (1L << GLIBTOP_CPU_IDLE) + +(1L << GLIBTOP_CPU_FREQUENCY); + +/* Init function. */ + +void +_glibtop_init_uptime_p (glibtop *server) +{ + server->sysdeps.uptime = _glibtop_sysdeps_uptime; +} + +/* Provides uptime and idle time. */ + +void +glibtop_get_uptime_p (glibtop *server, glibtop_uptime *buf) +{ + time_t now; + time_t uptime; + int mib[2]; + struct timeval boottime; + size_t size; + + mib[0] = CTL_KERN; + mib[1] = KERN_BOOTTIME; + size = sizeof(boottime); + if (sysctl(mib, 2, &boottime, &size, NULL, 0) != -1 && + boottime.tv_sec != 0) { + time(&now); + buf->uptime = now - boottime.tv_sec; + /* XXX: don't know a useful value to put here. */ + buf->idletime = 0; + buf->flags = _glibtop_sysdeps_uptime; + } +} |