Add meminfo UMA collection.

Change-Id: Ief779a5bdc68b8e5bf2f1ed979bf30b50aca8e0f

BUG=chromium-os:13747
TEST=verify that Platform.Meminfo* entries are in about:histograms.

Review URL: http://codereview.chromium.org/6804014
diff --git a/metrics/metrics_daemon.h b/metrics/metrics_daemon.h
index 5252518..e061445 100644
--- a/metrics/metrics_daemon.h
+++ b/metrics/metrics_daemon.h
@@ -49,6 +49,8 @@
   FRIEND_TEST(MetricsDaemonTest, MessageFilter);
   FRIEND_TEST(MetricsDaemonTest, PowerStateChanged);
   FRIEND_TEST(MetricsDaemonTest, ProcessKernelCrash);
+  FRIEND_TEST(MetricsDaemonTest, ProcessMeminfo);
+  FRIEND_TEST(MetricsDaemonTest, ProcessMeminfo2);
   FRIEND_TEST(MetricsDaemonTest, ProcessUncleanShutdown);
   FRIEND_TEST(MetricsDaemonTest, ProcessUserCrash);
   FRIEND_TEST(MetricsDaemonTest, ReportCrashesDailyFrequency);
@@ -125,6 +127,7 @@
   static const char kMetricWriteSectorsShortName[];
   static const int kMetricDiskStatsShortInterval;
   static const int kMetricDiskStatsLongInterval;
+  static const int kMetricMeminfoInterval;
   static const int kMetricSectorsIOMax;
   static const int kMetricSectorsBuckets;
   static const char kMetricsDiskStatsPath[];
@@ -234,6 +237,12 @@
   void SendMetric(const std::string& name, int sample,
                   int min, int max, int nbuckets);
 
+  // Sends a linear histogram sample to Chrome for transport to UMA. See
+  // MetricsLibrary::SendToUMA in metrics_library.h for a description of the
+  // arguments.
+  void SendLinearMetric(const std::string& name, int sample,
+                        int max, int nbuckets);
+
   // Initializes disk stats reporting.
   void DiskStatsReporterInit();
 
@@ -250,6 +259,20 @@
   // Reports disk statistics.
   void DiskStatsCallback();
 
+  // Schedules meminfo collection callback.
+  void ScheduleMeminfoCallback(int wait);
+
+  // Reports memory statistics (static version for glib).  Argument is a glib
+  // artifact.
+  static gboolean MeminfoCallbackStatic(void* handle);
+
+  // Reports memory statistics.  Returns false on failure.
+  gboolean MeminfoCallback();
+
+  // Parses content of /proc/meminfo and sends fields of interest to UMA.
+  // Returns false on errors.
+  gboolean ProcessMeminfo(std::string meminfo);
+
   // Test mode.
   bool testing_;