< prev index next >

src/java.base/linux/classes/jdk/internal/platform/cgroupv1/CgroupV1SubsystemController.java

Print this page
@  rev 57734 : Review feedback
|
o  rev 57733 : 8231111: Cgroups v2: Rework Metrics in java.base so as to recognize unified hierarchy
|  Reviewed-by: bobv, mchung
~
o  rev 56862 : 8231111: Cgroups v2: Rework Metrics in java.base so as to recognize unified hierarchy
|  Reviewed-by: bobv
~

@@ -23,15 +23,16 @@
  * questions.
  */
 
 package jdk.internal.platform.cgroupv1;
 
+import jdk.internal.platform.CgroupSubsystem;
 import jdk.internal.platform.CgroupSubsystemController;
-import jdk.internal.platform.Metrics;
 
 public class CgroupV1SubsystemController implements CgroupSubsystemController {
 
+    private static final double DOUBLE_RETVAL_UNLIMITED = CgroupSubsystem.LONG_RETVAL_UNLIMITED;
     // Values returned larger than this number are unlimited.
     static long UNLIMITED_MIN = 0x7FFFFFFFFF000000L;
     String root;
     String mountPoint;
     String path;

@@ -70,13 +71,48 @@
     @Override
     public String path() {
         return path;
     }
 
+    public static long getLongEntry(CgroupSubsystemController controller, String param, String entryname) {
+        return CgroupSubsystemController.getLongEntry(controller,
+                                                      param,
+                                                      entryname,
+                                                      CgroupSubsystem.LONG_RETVAL_UNLIMITED /* retval on error */);
+    }
+
+    public static double getDoubleValue(CgroupSubsystemController controller, String parm) {
+        return CgroupSubsystemController.getDoubleValue(controller,
+                                                        parm,
+                                                        DOUBLE_RETVAL_UNLIMITED /* retval on error */);
+    }
+
     public static long convertStringToLong(String strval) {
-        return CgroupSubsystemController.convertStringToLong(strval, Long.MAX_VALUE);
+        return CgroupSubsystemController.convertStringToLong(strval,
+                                                             Long.MAX_VALUE /* overflow value */,
+                                                             CgroupSubsystem.LONG_RETVAL_UNLIMITED /* retval on error */);
     }
 
     public static long longValOrUnlimited(long value) {
-        return value > UNLIMITED_MIN ? Metrics.LONG_RETVAL_UNLIMITED : value;
+        return value > UNLIMITED_MIN ? CgroupSubsystem.LONG_RETVAL_UNLIMITED : value;
     }
+
+    public static long getLongValueMatchingLine(CgroupSubsystemController controller,
+                                                String param,
+                                                String match) {
+        return CgroupSubsystemController.getLongValueMatchingLine(controller,
+                                                                  param,
+                                                                  match,
+                                                                  CgroupV1SubsystemController::convertHierachicalLimitLine,
+                                                                  CgroupSubsystem.LONG_RETVAL_UNLIMITED);
+    }
+
+    public static long convertHierachicalLimitLine(String line) {
+        String[] tokens = line.split("\\s");
+        if (tokens.length == 2) {
+            String strVal = tokens[1];
+            return CgroupV1SubsystemController.convertStringToLong(strVal);
+        }
+        return CgroupV1SubsystemController.UNLIMITED_MIN + 1; // unlimited
+    }
+
 }
< prev index next >