-/* Copyright (c) 2010, 2012 Nicira, Inc.
+/* Copyright (c) 2010, 2012, 2013 Nicira, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
#include "system-stats.h"
-#include <assert.h>
#include <ctype.h>
#include <dirent.h>
#include <errno.h>
{
if (!LINUX_DATAPATH) {
unsigned int pagesize = get_page_size();
+#ifdef _SC_PHYS_PAGES
long int phys_pages = sysconf(_SC_PHYS_PAGES);
+#else
+ long int phys_pages = 0;
+#endif
#ifdef _SC_AVPHYS_PAGES
long int avphys_pages = sysconf(_SC_AVPHYS_PAGES);
#else
stream = fopen(file_name, "r");
if (!stream) {
- VLOG_WARN_ONCE("%s: open failed (%s)", file_name, strerror(errno));
+ VLOG_WARN_ONCE("%s: open failed (%s)",
+ file_name, ovs_strerror(errno));
return;
}
static long long int cache_expiration = LLONG_MIN;
static long long int boot_time;
- assert(LINUX_DATAPATH);
+ ovs_assert(LINUX_DATAPATH);
if (time_msec() >= cache_expiration) {
static const char stat_file[] = "/proc/stat";
stream = fopen(stat_file, "r");
if (!stream) {
- VLOG_ERR_ONCE("%s: open failed (%s)", stat_file, strerror(errno));
+ VLOG_ERR_ONCE("%s: open failed (%s)",
+ stat_file, ovs_strerror(errno));
return boot_time;
}
static unsigned long long int
ticks_to_ms(unsigned long long int ticks)
{
- assert(LINUX_DATAPATH);
+ ovs_assert(LINUX_DATAPATH);
#ifndef USER_HZ
#define USER_HZ 100
FILE *stream;
int n;
- assert(LINUX_DATAPATH);
+ ovs_assert(LINUX_DATAPATH);
sprintf(file_name, "/proc/%lu/stat", (unsigned long int) pid);
stream = fopen(file_name, "r");
if (!stream) {
- VLOG_ERR_ONCE("%s: open failed (%s)", file_name, strerror(errno));
+ VLOG_ERR_ONCE("%s: open failed (%s)",
+ file_name, ovs_strerror(errno));
return false;
}
int crashes = 0;
FILE *stream;
- assert(LINUX_DATAPATH);
+ ovs_assert(LINUX_DATAPATH);
sprintf(file_name, "/proc/%lu/cmdline", (unsigned long int) pid);
stream = fopen(file_name, "r");
if (!stream) {
- VLOG_WARN_ONCE("%s: open failed (%s)", file_name, strerror(errno));
+ VLOG_WARN_ONCE("%s: open failed (%s)", file_name, ovs_strerror(errno));
goto exit;
}
if (!fgets(line, sizeof line, stream)) {
VLOG_WARN_ONCE("%s: read failed (%s)", file_name,
- feof(stream) ? "end of file" : strerror(errno));
+ feof(stream) ? "end of file" : ovs_strerror(errno));
goto exit_close;
}
{
struct raw_process_info child;
- assert(LINUX_DATAPATH);
+ ovs_assert(LINUX_DATAPATH);
if (!get_raw_process_info(pid, &child)) {
return false;
}
dir = opendir(ovs_rundir());
if (!dir) {
- VLOG_ERR_ONCE("%s: open failed (%s)", ovs_rundir(), strerror(errno));
+ VLOG_ERR_ONCE("%s: open failed (%s)",
+ ovs_rundir(), ovs_strerror(errno));
return;
}
static void
get_filesys_stats(struct smap *stats OVS_UNUSED)
{
-#if HAVE_SETMNTENT && HAVE_STATVFS
+#if HAVE_GETMNTENT_R && HAVE_STATVFS
static const char file_name[] = "/etc/mtab";
+ struct mntent mntent;
struct mntent *me;
+ char buf[4096];
FILE *stream;
struct ds s;
stream = setmntent(file_name, "r");
if (!stream) {
- VLOG_ERR_ONCE("%s: open failed (%s)", file_name, strerror(errno));
+ VLOG_ERR_ONCE("%s: open failed (%s)", file_name, ovs_strerror(errno));
return;
}
ds_init(&s);
- while ((me = getmntent(stream)) != NULL) {
+ while ((me = getmntent_r(stream, &mntent, buf, sizeof buf)) != NULL) {
unsigned long long int total, free;
struct statvfs vfs;
char *p;
smap_add(stats, "file_systems", ds_cstr(&s));
}
ds_destroy(&s);
-#endif /* HAVE_SETMNTENT && HAVE_STATVFS */
+#endif /* HAVE_GETMNTENT_R && HAVE_STATVFS */
}
\f
#define SYSTEM_STATS_INTERVAL (5 * 1000) /* In milliseconds. */
smap_init(received_stats);
smap_from_json(received_stats, json);
- assert(state == S_REQUEST_SENT);
+ ovs_assert(state == S_REQUEST_SENT);
state = S_REPLY_RECEIVED;
json_destroy(json);