Chromium Code Reviews| Index: metrics_daemon_main.cc |
| diff --git a/metrics_daemon_main.cc b/metrics_daemon_main.cc |
| index 899256cffccbd6948d2699b4b12ebbfbff5951fc..3510c84c08afb87bc2993e17b4cc74581173040e 100644 |
| --- a/metrics_daemon_main.cc |
| +++ b/metrics_daemon_main.cc |
| @@ -3,20 +3,46 @@ |
| // found in the LICENSE file. |
| +#include <base/logging.h> |
| #include <gflags/gflags.h> |
| +#include <rootdev/rootdev.h> |
| #include "metrics_daemon.h" |
| DEFINE_bool(daemon, true, "run as daemon (use -nodaemon for debugging)"); |
| -// Path to disk stats. This may be system dependent. |
| -const char kMetricsMainDiskStatsPath[] = "/sys/class/block/sda/stat"; |
| +// Return the path to the disk stats in the sysfs. |
| +static |
| +const std::string MetricsMainDiskStatsPath() { |
| + char dev_path_cstr[PATH_MAX]; |
| + int ret; |
|
petkov
2011/02/26 00:26:46
per style, variables should be declared close to t
|
| + std::string stat_path = "/sys/class/block/"; |
| + std::string dev_prefix = "/dev/"; |
| + std::string dev_path; |
| + std::string dev_name; |
| + |
| + ret = rootdev(dev_path_cstr, sizeof(dev_path_cstr), true, true); |
|
petkov
2011/02/26 00:26:46
int ret = ...
|
| + if (ret != 0) { |
| + LOG(WARNING) << "error " << ret << " determining root device"; |
| + return ""; |
| + } |
| + dev_path = dev_path_cstr; |
| + // Check that rootdev begins with "/dev/". |
| + if (dev_path.compare(0, dev_prefix.length(), dev_prefix) != 0) { |
|
petkov
2011/02/26 00:26:46
if (base::StartsWithASCII(dev_path, dev_prefix, fa
|
| + LOG(WARNING) << "unexpected root device " << dev_path; |
| + return ""; |
| + } |
| + // Get the device name, e.g. "sda" from "/dev/sda". |
| + dev_name = dev_path.substr(dev_prefix.length()); |
| + // Create the full path of the stat file, e.g. "/sys/class/block/sda/stat" |
| + return stat_path.append(dev_name.append("/stat")); |
|
petkov
2011/02/26 00:26:46
This is simpler and doesn't need a comment or stat
|
| +} |
| int main(int argc, char** argv) { |
| google::ParseCommandLineFlags(&argc, &argv, true); |
| MetricsLibrary metrics_lib; |
| metrics_lib.Init(); |
| MetricsDaemon daemon; |
| - daemon.Init(false, &metrics_lib, kMetricsMainDiskStatsPath); |
| + daemon.Init(false, &metrics_lib, MetricsMainDiskStatsPath()); |
| daemon.Run(FLAGS_daemon); |
| } |