Implement CarStorageMonitoringManager.getBootIoStats()

This API returns information about I/O activity that the system performed from kernel initalization until
the BOOT_COMPLETE notification was broadcast.

Bug: 65846699
Bug: 32512551
Test: runtest -x p/s/C/tests/carservice[_unit]_test/src/com/android/car/CarStorageMonitoringTest.java
Change-Id: I2eaed1491dc6a5dda8e34edd41047c64dcc2f537
diff --git a/car-lib/api/system-current.txt b/car-lib/api/system-current.txt
index ee35126..b567e2e 100644
--- a/car-lib/api/system-current.txt
+++ b/car-lib/api/system-current.txt
@@ -1004,6 +1004,7 @@
 package android.car.storagemonitoring {
 
   public final class CarStorageMonitoringManager {
+    method public java.util.List<android.car.storagemonitoring.UidIoStats> getBootIoStats() throws android.car.CarNotConnectedException;
     method public int getPreEolIndicatorStatus() throws android.car.CarNotConnectedException;
     method public android.car.storagemonitoring.WearEstimate getWearEstimate() throws android.car.CarNotConnectedException;
     method public java.util.List<android.car.storagemonitoring.WearEstimateChange> getWearEstimateHistory() throws android.car.CarNotConnectedException;
@@ -1013,27 +1014,29 @@
     field public static final int PRE_EOL_INFO_WARNING = 2; // 0x2
   }
 
-  public final class UidIoStatEntry implements android.os.Parcelable {
-    ctor public UidIoStatEntry(int, android.car.storagemonitoring.UidIoStatEntry.PerStateMetrics, android.car.storagemonitoring.UidIoStatEntry.PerStateMetrics);
-    ctor public UidIoStatEntry(android.os.Parcel);
-    ctor public UidIoStatEntry(org.json.JSONObject) throws org.json.JSONException;
+  public final class UidIoStats implements android.os.Parcelable {
+    ctor public UidIoStats(int, long, android.car.storagemonitoring.UidIoStats.PerStateMetrics, android.car.storagemonitoring.UidIoStats.PerStateMetrics);
+    ctor public UidIoStats(android.os.Parcel);
+    ctor public UidIoStats(android.car.storagemonitoring.UidIoStatsRecord, long);
+    ctor public UidIoStats(org.json.JSONObject) throws org.json.JSONException;
     method public int describeContents();
     method public void writeToJson(android.util.JsonWriter) throws java.io.IOException;
     method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.car.storagemonitoring.UidIoStatEntry> CREATOR;
-    field public final android.car.storagemonitoring.UidIoStatEntry.PerStateMetrics background;
-    field public final android.car.storagemonitoring.UidIoStatEntry.PerStateMetrics foreground;
+    field public static final android.os.Parcelable.Creator<android.car.storagemonitoring.UidIoStats> CREATOR;
+    field public final android.car.storagemonitoring.UidIoStats.PerStateMetrics background;
+    field public final android.car.storagemonitoring.UidIoStats.PerStateMetrics foreground;
+    field public final long runtimeMillis;
     field public final int uid;
   }
 
-  public static final class UidIoStatEntry.PerStateMetrics implements android.os.Parcelable {
-    ctor public UidIoStatEntry.PerStateMetrics(long, long, long, long, long);
-    ctor public UidIoStatEntry.PerStateMetrics(android.os.Parcel);
-    ctor public UidIoStatEntry.PerStateMetrics(org.json.JSONObject) throws org.json.JSONException;
+  public static final class UidIoStats.PerStateMetrics implements android.os.Parcelable {
+    ctor public UidIoStats.PerStateMetrics(long, long, long, long, long);
+    ctor public UidIoStats.PerStateMetrics(android.os.Parcel);
+    ctor public UidIoStats.PerStateMetrics(org.json.JSONObject) throws org.json.JSONException;
     method public int describeContents();
     method public void writeToJson(android.util.JsonWriter) throws java.io.IOException;
     method public void writeToParcel(android.os.Parcel, int);
-    field public static final android.os.Parcelable.Creator<android.car.storagemonitoring.UidIoStatEntry.PerStateMetrics> CREATOR;
+    field public static final android.os.Parcelable.Creator<android.car.storagemonitoring.UidIoStats.PerStateMetrics> CREATOR;
     field public final long bytesRead;
     field public final long bytesReadFromStorage;
     field public final long bytesWritten;
@@ -1041,6 +1044,21 @@
     field public final long fsyncCalls;
   }
 
+  public final class UidIoStatsRecord {
+    ctor public UidIoStatsRecord(int, long, long, long, long, long, long, long, long, long, long);
+    field public final long background_fsync;
+    field public final long background_rchar;
+    field public final long background_read_bytes;
+    field public final long background_wchar;
+    field public final long background_write_bytes;
+    field public final long foreground_fsync;
+    field public final long foreground_rchar;
+    field public final long foreground_read_bytes;
+    field public final long foreground_wchar;
+    field public final long foreground_write_bytes;
+    field public final int uid;
+  }
+
   public class WearEstimate implements android.os.Parcelable {
     ctor public WearEstimate(int, int);
     ctor public WearEstimate(android.os.Parcel);