pstat.c (8335) | pstat.c (8495) |
---|---|
1/*- 2 * Copyright (c) 1980, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 134 unchanged lines hidden (view full) --- 143}; 144 145int usenumflag; 146int totalflag; 147char *nlistf = NULL; 148char *memf = NULL; 149kvm_t *kd; 150 | 1/*- 2 * Copyright (c) 1980, 1991, 1993 3 * The Regents of the University of California. All rights reserved. 4 * 5 * Redistribution and use in source and binary forms, with or without 6 * modification, are permitted provided that the following conditions 7 * are met: 8 * 1. Redistributions of source code must retain the above copyright --- 134 unchanged lines hidden (view full) --- 143}; 144 145int usenumflag; 146int totalflag; 147char *nlistf = NULL; 148char *memf = NULL; 149kvm_t *kd; 150 |
151char *usage; 152 |
|
151#define SVAR(var) __STRING(var) /* to force expansion */ 152#define KGET(idx, var) \ 153 KGET1(idx, &var, sizeof(var), SVAR(var)) 154#define KGET1(idx, p, s, msg) \ 155 KGET2(nl[idx].n_value, p, s, msg) 156#define KGET2(addr, p, s, msg) \ 157 if (kvm_read(kd, (u_long)(addr), p, s) != s) \ 158 warnx("cannot read %s: %s", msg, kvm_geterr(kd)) --- 15 unchanged lines hidden (view full) --- 174void nfs_header __P((void)); 175int nfs_print __P((struct vnode *)); 176void swapmode __P((void)); 177void ttymode __P((void)); 178void ttyprt __P((struct tty *, int)); 179void ttytype __P((struct tty *, char *, int, int)); 180void ufs_header __P((void)); 181int ufs_print __P((struct vnode *)); | 153#define SVAR(var) __STRING(var) /* to force expansion */ 154#define KGET(idx, var) \ 155 KGET1(idx, &var, sizeof(var), SVAR(var)) 156#define KGET1(idx, p, s, msg) \ 157 KGET2(nl[idx].n_value, p, s, msg) 158#define KGET2(addr, p, s, msg) \ 159 if (kvm_read(kd, (u_long)(addr), p, s) != s) \ 160 warnx("cannot read %s: %s", msg, kvm_geterr(kd)) --- 15 unchanged lines hidden (view full) --- 176void nfs_header __P((void)); 177int nfs_print __P((struct vnode *)); 178void swapmode __P((void)); 179void ttymode __P((void)); 180void ttyprt __P((struct tty *, int)); 181void ttytype __P((struct tty *, char *, int, int)); 182void ufs_header __P((void)); 183int ufs_print __P((struct vnode *)); |
182void usage __P((void)); | |
183void vnode_header __P((void)); 184void vnode_print __P((struct vnode *, struct vnode *)); 185void vnodemode __P((void)); 186 187int 188main(argc, argv) 189 int argc; 190 char *argv[]; 191{ 192 extern char *optarg; 193 extern int optind; 194 int ch, i, quit, ret; 195 int fileflag, swapflag, ttyflag, vnodeflag; | 184void vnode_header __P((void)); 185void vnode_print __P((struct vnode *, struct vnode *)); 186void vnodemode __P((void)); 187 188int 189main(argc, argv) 190 int argc; 191 char *argv[]; 192{ 193 extern char *optarg; 194 extern int optind; 195 int ch, i, quit, ret; 196 int fileflag, swapflag, ttyflag, vnodeflag; |
196 char buf[_POSIX2_LINE_MAX]; | 197 char buf[_POSIX2_LINE_MAX],*opts; |
197 198 fileflag = swapflag = ttyflag = vnodeflag = 0; | 198 199 fileflag = swapflag = ttyflag = vnodeflag = 0; |
199 while ((ch = getopt(argc, argv, "TM:N:finstv")) != EOF) | 200 201 /* We will behave like good old swapinfo if thus invoked */ 202 opts = strrchr(argv[0],'/'); 203 if (opts) 204 opts++; 205 else 206 opts = argv[0]; 207 if (!strcmp(opts,"swapinfo")) { 208 swapflag = 1; 209 opts = "k"; 210 usage = "usage: swapinfo [-k] [-M core] [-N system]\n"; 211 } else { 212 opts = "TM:N:fiknstv"; 213 usage = "usage: pstat [-Tfknstv] [-M core] [-N system]\n"; 214 } 215 216 while ((ch = getopt(argc, argv, opts)) != EOF) |
200 switch (ch) { 201 case 'f': 202 fileflag = 1; 203 break; | 217 switch (ch) { 218 case 'f': 219 fileflag = 1; 220 break; |
221 case 'k': 222 putenv("BLOCKSIZE=1K"); 223 break; |
|
204 case 'M': 205 memf = optarg; 206 break; 207 case 'N': 208 nlistf = optarg; 209 break; 210 case 'n': 211 usenumflag = 1; --- 7 unchanged lines hidden (view full) --- 219 case 't': 220 ttyflag = 1; 221 break; 222 case 'v': 223 case 'i': /* Backward compatibility. */ 224 vnodeflag = 1; 225 break; 226 default: | 224 case 'M': 225 memf = optarg; 226 break; 227 case 'N': 228 nlistf = optarg; 229 break; 230 case 'n': 231 usenumflag = 1; --- 7 unchanged lines hidden (view full) --- 239 case 't': 240 ttyflag = 1; 241 break; 242 case 'v': 243 case 'i': /* Backward compatibility. */ 244 vnodeflag = 1; 245 break; 246 default: |
227 usage(); | 247 (void)fprintf(stderr, usage); 248 exit(1); |
228 } 229 argc -= optind; 230 argv += optind; 231 232 /* 233 * Discard setgid privileges if not the running kernel so that bad 234 * guys can't print interesting stuff from kernel memory. 235 */ --- 8 unchanged lines hidden (view full) --- 244 for (i = quit = 0; i <= NLMANDATORY; i++) 245 if (!nl[i].n_value) { 246 quit = 1; 247 warnx("undefined symbol: %s\n", nl[i].n_name); 248 } 249 if (quit) 250 exit(1); 251 } | 249 } 250 argc -= optind; 251 argv += optind; 252 253 /* 254 * Discard setgid privileges if not the running kernel so that bad 255 * guys can't print interesting stuff from kernel memory. 256 */ --- 8 unchanged lines hidden (view full) --- 265 for (i = quit = 0; i <= NLMANDATORY; i++) 266 if (!nl[i].n_value) { 267 quit = 1; 268 warnx("undefined symbol: %s\n", nl[i].n_name); 269 } 270 if (quit) 271 exit(1); 272 } |
252 if (!(fileflag | vnodeflag | ttyflag | swapflag | totalflag)) 253 usage(); | 273 if (!(fileflag | vnodeflag | ttyflag | swapflag | totalflag)) { 274 (void)fprintf(stderr, usage); 275 exit(1); 276 } |
254 if (fileflag || totalflag) 255 filemode(); 256 if (vnodeflag || totalflag) 257 vnodemode(); 258 if (ttyflag) 259 ttymode(); 260 if (swapflag || totalflag) 261 swapmode(); --- 780 unchanged lines hidden (view full) --- 1042 (void)printf("%-11s %*s %8s %8s %8s %s\n", 1043 "Device", hlen, header, 1044 "Used", "Avail", "Capacity", "Type"); 1045 div = blocksize / 512; 1046 avail = npfree = 0; 1047 for (i = 0; i < nswdev; i++) { 1048 int xsize, xfree; 1049 | 277 if (fileflag || totalflag) 278 filemode(); 279 if (vnodeflag || totalflag) 280 vnodemode(); 281 if (ttyflag) 282 ttymode(); 283 if (swapflag || totalflag) 284 swapmode(); --- 780 unchanged lines hidden (view full) --- 1065 (void)printf("%-11s %*s %8s %8s %8s %s\n", 1066 "Device", hlen, header, 1067 "Used", "Avail", "Capacity", "Type"); 1068 div = blocksize / 512; 1069 avail = npfree = 0; 1070 for (i = 0; i < nswdev; i++) { 1071 int xsize, xfree; 1072 |
1050 if (!totalflag) 1051 (void)printf("/dev/%-6s %*d ", 1052 devname(sw[i].sw_dev, S_IFBLK), 1053 hlen, sw[i].sw_nblks / div); 1054 | |
1055 /* 1056 * Don't report statistics for partitions which have not 1057 * yet been activated via swapon(8). 1058 */ | 1073 /* 1074 * Don't report statistics for partitions which have not 1075 * yet been activated via swapon(8). 1076 */ |
1059 if (!(sw[i].sw_flags & SW_FREED)) { 1060 if (totalflag) 1061 continue; 1062 (void)printf(" *** not available for swapping ***\n"); | 1077 if (!(sw[i].sw_flags & SW_FREED)) |
1063 continue; | 1078 continue; |
1064 } | 1079 1080 if (!totalflag) 1081 (void)printf("/dev/%-6s %*d ", 1082 devname(sw[i].sw_dev, S_IFBLK), 1083 hlen, sw[i].sw_nblks / div); 1084 |
1065 xsize = sw[i].sw_nblks; 1066 xfree = perdev[i]; 1067 used = xsize - xfree; 1068 npfree++; 1069 avail += xsize; 1070 if (totalflag) 1071 continue; 1072 (void)printf("%8d %8d %5.0f%% %s\n", --- 13 unchanged lines hidden (view full) --- 1086 return; 1087 } 1088 if (npfree > 1) { 1089 (void)printf("%-11s %*d %8d %8d %5.0f%%\n", 1090 "Total", hlen, avail / div, used / div, nfree / div, 1091 (double)used / (double)avail * 100.0); 1092 } 1093} | 1085 xsize = sw[i].sw_nblks; 1086 xfree = perdev[i]; 1087 used = xsize - xfree; 1088 npfree++; 1089 avail += xsize; 1090 if (totalflag) 1091 continue; 1092 (void)printf("%8d %8d %5.0f%% %s\n", --- 13 unchanged lines hidden (view full) --- 1106 return; 1107 } 1108 if (npfree > 1) { 1109 (void)printf("%-11s %*d %8d %8d %5.0f%%\n", 1110 "Total", hlen, avail / div, used / div, nfree / div, 1111 (double)used / (double)avail * 100.0); 1112 } 1113} |
1094 1095void 1096usage() 1097{ 1098 (void)fprintf(stderr, 1099 "usage: pstat [-Tfnstv] [-M core] [-N system]\n"); 1100 exit(1); 1101} | |