--- a/src/hotspot/os/aix/os_perf_aix.cpp Wed Apr 10 22:41:28 2019 -0400
+++ b/src/hotspot/os/aix/os_perf_aix.cpp Wed Apr 10 09:33:32 2019 +0200
@@ -273,98 +273,12 @@
return n;
}
-static FILE* open_statfile(void) {
- FILE *f;
-
- if ((f = fopen("/proc/stat", "r")) == NULL) {
- static int haveWarned = 0;
- if (!haveWarned) {
- haveWarned = 1;
- }
- }
- return f;
-}
-
-static void
-next_line(FILE *f) {
- int c;
- do {
- c = fgetc(f);
- } while (c != '\n' && c != EOF);
-}
-
/**
- * Return the total number of ticks since the system was booted.
- * If the usedTicks parameter is not NULL, it will be filled with
- * the number of ticks spent on actual processes (user, system or
- * nice processes) since system boot. Note that this is the total number
- * of "executed" ticks on _all_ CPU:s, that is on a n-way system it is
- * n times the number of ticks that has passed in clock time.
- *
- * Returns a negative value if the reading of the ticks failed.
+ * on Linux we got the ticks related information from /proc/stat
+ * this does not work on AIX, libperfstat might be an alternative
*/
static OSReturn get_total_ticks(int which_logical_cpu, CPUPerfTicks* pticks) {
- FILE* fh;
- uint64_t userTicks, niceTicks, systemTicks, idleTicks;
- uint64_t iowTicks = 0, irqTicks = 0, sirqTicks= 0;
- int logical_cpu = -1;
- const int expected_assign_count = (-1 == which_logical_cpu) ? 4 : 5;
- int n;
-
- if ((fh = open_statfile()) == NULL) {
- return OS_ERR;
- }
- if (-1 == which_logical_cpu) {
- n = fscanf(fh, "cpu " UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT " "
- UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT,
- &userTicks, &niceTicks, &systemTicks, &idleTicks,
- &iowTicks, &irqTicks, &sirqTicks);
- } else {
- // Move to next line
- next_line(fh);
-
- // find the line for requested cpu faster to just iterate linefeeds?
- for (int i = 0; i < which_logical_cpu; i++) {
- next_line(fh);
- }
-
- n = fscanf(fh, "cpu%u " UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT " "
- UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT " " UINT64_FORMAT,
- &logical_cpu, &userTicks, &niceTicks,
- &systemTicks, &idleTicks, &iowTicks, &irqTicks, &sirqTicks);
- }
-
- fclose(fh);
- if (n < expected_assign_count || logical_cpu != which_logical_cpu) {
- return OS_ERR;
- }
- pticks->used = userTicks + niceTicks;
- pticks->usedKernel = systemTicks + irqTicks + sirqTicks;
- pticks->total = userTicks + niceTicks + systemTicks + idleTicks +
- iowTicks + irqTicks + sirqTicks;
-
- return OS_OK;
-}
-
-
-static int get_systemtype(void) {
- static int procEntriesType = UNDETECTED;
- DIR *taskDir;
-
- if (procEntriesType != UNDETECTED) {
- return procEntriesType;
- }
-
- // Check whether we have a task subdirectory
- if ((taskDir = opendir("/proc/self/task")) == NULL) {
- procEntriesType = UNDETECTABLE;
- } else {
- // The task subdirectory exists; we're on a Linux >= 2.6 system
- closedir(taskDir);
- procEntriesType = LINUX26_NPTL;
- }
-
- return procEntriesType;
+ return OS_ERR;
}
/** read user and system ticks from a named procfile, assumed to be in 'stat' format then. */
@@ -378,26 +292,7 @@
* to the JVM on any CPU.
*/
static OSReturn get_jvm_ticks(CPUPerfTicks* pticks) {
- uint64_t userTicks;
- uint64_t systemTicks;
-
- if (get_systemtype() != LINUX26_NPTL) {
- return OS_ERR;
- }
-
- if (read_ticks("/proc/self/stat", &userTicks, &systemTicks) != 2) {
- return OS_ERR;
- }
-
- // get the total
- if (get_total_ticks(-1, pticks) != OS_OK) {
- return OS_ERR;
- }
-
- pticks->used = userTicks;
- pticks->usedKernel = systemTicks;
-
- return OS_OK;
+ return OS_ERR;
}
/**
@@ -461,29 +356,7 @@
}
static int SCANF_ARGS(1, 2) parse_stat(_SCANFMT_ const char* fmt, ...) {
- FILE *f;
- va_list args;
-
- va_start(args, fmt);
-
- if ((f = open_statfile()) == NULL) {
- va_end(args);
- return OS_ERR;
- }
- for (;;) {
- char line[80];
- if (fgets(line, sizeof(line), f) != NULL) {
- if (vsscanf(line, fmt, args) == 1) {
- fclose(f);
- va_end(args);
- return OS_OK;
- }
- } else {
- fclose(f);
- va_end(args);
- return OS_ERR;
- }
- }
+ return OS_ERR;
}
static int get_noof_context_switches(uint64_t* switches) {