1
2
3
4
5 package oshi.util.platform.linux;
6
7 import java.io.File;
8
9 import oshi.annotation.concurrent.ThreadSafe;
10 import oshi.util.GlobalConfig;
11
12
13
14
15
16
17
18 @ThreadSafe
19 public final class ProcPath {
20
21
22
23
24 public static final String PROC = queryProcConfig();
25
26 public static final String ASOUND = PROC + "/asound/";
27 public static final String AUXV = PROC + "/self/auxv";
28 public static final String CPUINFO = PROC + "/cpuinfo";
29 public static final String DISKSTATS = PROC + "/diskstats";
30 public static final String MEMINFO = PROC + "/meminfo";
31 public static final String MODEL = PROC + "/device-tree/model";
32 public static final String MOUNTS = PROC + "/mounts";
33 public static final String NET = PROC + "/net";
34 public static final String PID_CMDLINE = PROC + "/%d/cmdline";
35 public static final String PID_CWD = PROC + "/%d/cwd";
36 public static final String PID_EXE = PROC + "/%d/exe";
37 public static final String PID_ENVIRON = PROC + "/%d/environ";
38 public static final String PID_FD = PROC + "/%d/fd";
39 public static final String PID_IO = PROC + "/%d/io";
40 public static final String PID_STAT = PROC + "/%d/stat";
41 public static final String PID_STATM = PROC + "/%d/statm";
42 public static final String PID_STATUS = PROC + "/%d/status";
43 public static final String SELF_STAT = PROC + "/self/stat";
44 public static final String SNMP = NET + "/snmp";
45 public static final String SNMP6 = NET + "/snmp6";
46 public static final String STAT = PROC + "/stat";
47 public static final String SYS_FS_FILE_NR = PROC + "/sys/fs/file-nr";
48 public static final String SYS_FS_FILE_MAX = PROC + "/sys/fs/file-max";
49 public static final String TASK_PATH = PROC + "/%d/task";
50 public static final String TASK_COMM = TASK_PATH + "/%d/comm";
51 public static final String TASK_STATUS = TASK_PATH + "/%d/status";
52 public static final String TASK_STAT = TASK_PATH + "/%d/stat";
53 public static final String THREAD_SELF = PROC + "/thread-self";
54 public static final String UPTIME = PROC + "/uptime";
55 public static final String VERSION = PROC + "/version";
56 public static final String VMSTAT = PROC + "/vmstat";
57
58 private ProcPath() {
59 }
60
61 private static String queryProcConfig() {
62 String procPath = GlobalConfig.get(GlobalConfig.OSHI_UTIL_PROC_PATH, "/proc");
63
64 procPath = '/' + procPath.replaceAll("/$|^/", "");
65 if (!new File(procPath).exists()) {
66 throw new GlobalConfig.PropertyException(GlobalConfig.OSHI_UTIL_PROC_PATH, "The path does not exist");
67 }
68 return procPath;
69 }
70 }