More or less fixed calls to sysctl()
This commit is contained in:
parent
5923e1bdcf
commit
8293e58c4c
|
@ -27,6 +27,7 @@ struct sysinfo
|
||||||
|
|
||||||
static int sysinfo(struct sysinfo * info)
|
static int sysinfo(struct sysinfo * info)
|
||||||
{
|
{
|
||||||
|
struct timeval now;
|
||||||
struct timeval tv;
|
struct timeval tv;
|
||||||
struct loadavg la;
|
struct loadavg la;
|
||||||
int mib[2];
|
int mib[2];
|
||||||
|
@ -36,18 +37,19 @@ static int sysinfo(struct sysinfo * info)
|
||||||
mib[0] = CTL_KERN;
|
mib[0] = CTL_KERN;
|
||||||
mib[1] = KERN_BOOTTIME;
|
mib[1] = KERN_BOOTTIME;
|
||||||
len = sizeof(tv);
|
len = sizeof(tv);
|
||||||
if(sysctl(mib, 2, &tv, &len, NULL, 0) != len)
|
if(gettimeofday(&now, NULL) != 0
|
||||||
|
|| sysctl(mib, 2, &tv, &len, NULL, 0) == -1)
|
||||||
{
|
{
|
||||||
info->uptime = 0;
|
info->uptime = 0;
|
||||||
ret++;
|
ret++;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
info->uptime = tv.tv_sec;
|
info->uptime = now.tv_sec - tv.tv_sec;
|
||||||
/* FIXME getloadavg() looks portable */
|
/* FIXME getloadavg() looks portable */
|
||||||
mib[0] = CTL_VM;
|
mib[0] = CTL_VM;
|
||||||
mib[1] = VM_LOADAVG;
|
mib[1] = VM_LOADAVG;
|
||||||
len = sizeof(la);
|
len = sizeof(la);
|
||||||
if(sysctl(mib, 2, &la, &len, NULL, 0) != len)
|
if(sysctl(mib, 2, &la, &len, NULL, 0) == -1)
|
||||||
{
|
{
|
||||||
memset(info->loads, 0, sizeof(info->loads));
|
memset(info->loads, 0, sizeof(info->loads));
|
||||||
ret++;
|
ret++;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user