diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/check_swap.c | 36 |
1 files changed, 30 insertions, 6 deletions
diff --git a/plugins/check_swap.c b/plugins/check_swap.c index 3a799c32..2b71fd21 100644 --- a/plugins/check_swap.c +++ b/plugins/check_swap.c | |||
@@ -47,10 +47,6 @@ long unsigned int crit_size = 0; | |||
47 | int verbose; | 47 | int verbose; |
48 | int allswaps; | 48 | int allswaps; |
49 | 49 | ||
50 | #if !defined(sun) | ||
51 | int sun = 0; /* defined by compiler if it is a sun solaris system */ | ||
52 | #endif | ||
53 | |||
54 | int | 50 | int |
55 | main (int argc, char **argv) | 51 | main (int argc, char **argv) |
56 | { | 52 | { |
@@ -103,10 +99,18 @@ main (int argc, char **argv) | |||
103 | fclose(fp); | 99 | fclose(fp); |
104 | #else | 100 | #else |
105 | # ifdef HAVE_SWAP | 101 | # ifdef HAVE_SWAP |
106 | if (!allswaps && sun) { | 102 | if (!allswaps) { |
103 | #ifdef _AIX | ||
104 | asprintf(&swap_command, "%s", "/usr/sbin/lsps -s"); | ||
105 | asprintf(&swap_format, "%s", "%d%*s %d"); | ||
106 | conv_factor = 1; | ||
107 | #else | ||
108 | # ifdef sun | ||
107 | asprintf(&swap_command, "%s", "/usr/sbin/swap -s"); | 109 | asprintf(&swap_command, "%s", "/usr/sbin/swap -s"); |
108 | asprintf(&swap_format, "%s", "%*s %*dk %*s %*s + %*dk %*s = %dk %*s %dk %*s"); | 110 | asprintf(&swap_format, "%s", "%*s %*dk %*s %*s + %*dk %*s = %dk %*s %dk %*s"); |
109 | conv_factor = 2048; | 111 | conv_factor = 2048; |
112 | # endif | ||
113 | #endif | ||
110 | } else { | 114 | } else { |
111 | asprintf(&swap_command, "%s", SWAP_COMMAND); | 115 | asprintf(&swap_command, "%s", SWAP_COMMAND); |
112 | asprintf(&swap_format, "%s", SWAP_FORMAT); | 116 | asprintf(&swap_format, "%s", SWAP_FORMAT); |
@@ -144,17 +148,33 @@ main (int argc, char **argv) | |||
144 | } | 148 | } |
145 | } | 149 | } |
146 | 150 | ||
147 | if (!allswaps && sun) { | 151 | if (!allswaps) { |
152 | #ifdef _AIX | ||
153 | fgets(input_buffer, MAX_INPUT_BUFFER - 1, child_process); /* Ignore first line */ | ||
154 | sscanf (input_buffer, swap_format, &total_swap, &used_swap); | ||
155 | free_swap = total_swap * (100 - used_swap) /100; | ||
156 | used_swap = total_swap - free_swap; | ||
157 | if (verbose >= 3) | ||
158 | printf (_("total=%d, used=%d, free=%d\n"), total_swap, used_swap, free_swap); | ||
159 | #else | ||
160 | # ifdef sun | ||
148 | sscanf (input_buffer, swap_format, &used_swap, &free_swap); | 161 | sscanf (input_buffer, swap_format, &used_swap, &free_swap); |
149 | used_swap = used_swap / 1024; | 162 | used_swap = used_swap / 1024; |
150 | free_swap = free_swap / 1024; | 163 | free_swap = free_swap / 1024; |
151 | total_swap = used_swap + free_swap; | 164 | total_swap = used_swap + free_swap; |
165 | # endif | ||
166 | #endif | ||
152 | } else { | 167 | } else { |
153 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { | 168 | while (fgets (input_buffer, MAX_INPUT_BUFFER - 1, child_process)) { |
154 | sscanf (input_buffer, swap_format, &dsktotal, &dskfree); | 169 | sscanf (input_buffer, swap_format, &dsktotal, &dskfree); |
155 | 170 | ||
156 | dsktotal = dsktotal / conv_factor; | 171 | dsktotal = dsktotal / conv_factor; |
172 | /* AIX lists percent used, so this converts to dskfree in MBs */ | ||
173 | #ifdef _AIX | ||
174 | dskfree = dsktotal * (100 - dskfree) / 100; | ||
175 | #else | ||
157 | dskfree = dskfree / conv_factor; | 176 | dskfree = dskfree / conv_factor; |
177 | #endif | ||
158 | if (verbose >= 3) | 178 | if (verbose >= 3) |
159 | printf (_("total=%d, free=%d\n"), dsktotal, dskfree); | 179 | printf (_("total=%d, free=%d\n"), dsktotal, dskfree); |
160 | 180 | ||
@@ -373,6 +393,10 @@ On Solaris, if -a specified, uses swap -l, otherwise uses swap -s.\n\ | |||
373 | Will be discrepencies because swap -s counts allocated swap and includes\n\ | 393 | Will be discrepencies because swap -s counts allocated swap and includes\n\ |
374 | real memory\n")); | 394 | real memory\n")); |
375 | #endif | 395 | #endif |
396 | #ifdef _AIX | ||
397 | printf (_("\n\ | ||
398 | On AIX, if -a is specified, uses lsps -a, otherwise uses lsps -s.\n")); | ||
399 | #endif | ||
376 | 400 | ||
377 | printf (_(UT_SUPPORT)); | 401 | printf (_(UT_SUPPORT)); |
378 | } | 402 | } |