Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(39)

Unified Diff: bootstat_log.c

Issue 3129002: Create a bootstat library for external C and C++ programs (Closed) Base URL: ssh://gitrw.chromium.org/bootstat.git
Patch Set: Fix whitespace issue found by presubmit check Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « bootstat.c ('k') | log_unit_tests.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bootstat_log.c
diff --git a/bootstat_log.c b/bootstat_log.c
index e82ef8889c90117bd8edbf9b9cd5e386ae61e752..079c6f26196523a8c4856f11218e9c0fba795270 100644
--- a/bootstat_log.c
+++ b/bootstat_log.c
@@ -2,6 +2,11 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
+// Implementation of bootstat_log(), part of the Chromium OS 'bootstat'
+// facility.
+
+#include "bootstat.h"
+
#include <stdio.h>
#include <stddef.h>
@@ -10,54 +15,44 @@
#include <sys/fcntl.h>
#include <unistd.h>
-#include "bootstat.h"
-
//
// Paths to the statistics files we snapshot as part of the data to
// be logged.
//
-#define UPTIME "/proc/uptime"
-
-#if defined (__amd64__) || defined (__x86_64__)
-#define ROOTDEV "sda"
-#endif
-
-#if defined (__arm__)
-#define ROOTDEV "mmcblk0"
+static const char kUptimeStatisticsFileName[] = "/proc/uptime";
+
+#if defined (__amd64__) || defined (__x86_64__) || defined (__i386__)
+static const char kDiskStatisticsFileName[] = "/sys/block/sda/stat";
+#elif defined (__arm__)
+static const char kDiskStatisticsFileName[] = "/sys/block/mmcblk0/stat";
+#else
+#error "unknown processor type?"
#endif
-#ifdef ROOTDEV
-#define ROOTSTAT "/sys/block/" ROOTDEV "/stat"
-#endif
-
-//
-// Length of the longest valid string naming an event, not counting
-// the terminating NUL character. Arbitrarily chosen, but intended
-// to be somewhat shorter than any valid file or path name.
-//
-#define MAX_EVENT_LEN 63
//
// Maximum length of any pathname for storing event statistics.
-// Also arbitrarily chosen, but see the comment below about
-// truncation.
+// Arbitrarily chosen, but see the comment below about truncation.
//
#define MAX_STAT_PATH 128
//
// Output file creation mode: 0666, a.k.a. rw-rw-rw-.
//
-#define OFMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
+static const int kFileCreationMode =
+ (S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
+
-static void append_logdata(const char *ifname,
- const char *ofprefix, const char *event_id)
+static void append_logdata(const char* input_path,
+ const char* output_name_prefix,
+ const char* event_name)
{
- char ofpath[MAX_STAT_PATH];
- char buffer[256];
- ssize_t nbytes;
- int ifd, ofd;
+ char output_path[MAX_STAT_PATH];
+ char buffer[256];
+ ssize_t num_read;
+ int ifd, ofd;
- ifd = open(ifname, O_RDONLY);
+ ifd = open(input_path, O_RDONLY);
if (ifd < 0) {
return;
}
@@ -65,25 +60,24 @@ static void append_logdata(const char *ifname,
//
// We don't want the file name "/tmp/uptime-..." truncated
// differently from the the name "/tmp/disk-...", so we truncate
- // event_id separately using the "%.*s" format.
+ // event_name separately using the "%.*s" format.
//
- // We expect that MAX_STAT_LEN is enough smaller than
- // MAX_STAT_PATH that ofpath will never be truncated. However,
- // to be safe, we also stuff our own terminating '\0', since
- // snprintf() won't put it there in the case of truncation.
+ // We expect that BOOTSTAT_MAX_EVENT_LEN is enough smaller than
+ // MAX_STAT_PATH that output_path will never be truncated.
//
- (void) snprintf(ofpath, sizeof (ofpath) - 1, "/tmp/%s-%.*s",
- ofprefix, MAX_EVENT_LEN, event_id);
- ofpath[sizeof (ofpath) - 1] = '\0';
- ofd = open(ofpath, O_WRONLY | O_APPEND | O_CREAT, OFMODE);
+ (void) snprintf(output_path, sizeof(output_path), "/tmp/%s-%.*s",
+ output_name_prefix,
+ BOOTSTAT_MAX_EVENT_LEN - 1, event_name);
+ ofd = open(output_path, O_WRONLY | O_APPEND | O_CREAT,
+ kFileCreationMode);
if (ofd < 0) {
(void) close(ifd);
return;
}
- while ((nbytes = read(ifd, buffer, sizeof (buffer))) > 0) {
- ssize_t wnbytes = write(ofd, buffer, nbytes);
- if (wnbytes != nbytes)
+ while ((num_read = read(ifd, buffer, sizeof(buffer))) > 0) {
+ ssize_t num_written = write(ofd, buffer, num_read);
+ if (num_written != num_read)
break;
}
(void) close(ofd);
@@ -91,10 +85,8 @@ static void append_logdata(const char *ifname,
}
-void bootstat_log(const char *event_id)
+void bootstat_log(const char* event_name)
{
- append_logdata(UPTIME, "uptime", event_id);
-#ifdef ROOTSTAT
- append_logdata(ROOTSTAT, "disk", event_id);
-#endif
+ append_logdata(kUptimeStatisticsFileName, "uptime", event_name);
+ append_logdata(kDiskStatisticsFileName, "disk", event_name);
}
« no previous file with comments | « bootstat.c ('k') | log_unit_tests.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698