xfstests: src/feature.c: print a number of online CPUs

For this purpose we use sysconf() as it is the
preferred platform neutral interface for getting this
sort of information.

Based on Dave Chinner proposal.

Signed-off-by: Stanislav Kholmanskikh <stanislav.kholmanskikh@oracle.com>
Reviewed-by: Rich Johnston <rjohnston@sgi.com>
Signed-off-by: Rich Johnston <rjohnston@sgi.com>
This commit is contained in:
Stanislav Kholmanskikh
2013-10-29 10:03:59 +00:00
committed by Rich Johnston
parent a16f0cfe3a
commit 2dcf4a56d1
+24 -3
View File
@@ -30,6 +30,7 @@
* Return code: 0 is true, anything else is error/not supported
*
* Test for machine features
* -o report a number of online cpus
* -s report pagesize
* -w report bits per long
*/
@@ -39,6 +40,7 @@
#include <sys/quota.h>
#include <sys/resource.h>
#include <signal.h>
#include <unistd.h>
#ifdef HAVE_XFS_XQM_H
#include <xfs/xqm.h>
@@ -64,7 +66,7 @@ usage(void)
fprintf(stderr, "Usage: feature [-v] -<q|u|g|p|U|G|P> <filesystem>\n");
fprintf(stderr, " feature [-v] -c <file>\n");
fprintf(stderr, " feature [-v] -t <file>\n");
fprintf(stderr, " feature -s | -w\n");
fprintf(stderr, " feature -o | -s | -w\n");
exit(1);
}
@@ -212,9 +214,10 @@ main(int argc, char **argv)
int uflag = 0;
int Uflag = 0;
int wflag = 0;
int oflag = 0;
char *fs = NULL;
while ((c = getopt(argc, argv, "ctgGpPqsuUvw")) != EOF) {
while ((c = getopt(argc, argv, "ctgGopPqsuUvw")) != EOF) {
switch (c) {
case 'c':
cflag++;
@@ -228,6 +231,9 @@ main(int argc, char **argv)
case 'G':
Gflag++;
break;
case 'o':
oflag++;
break;
case 'p':
pflag++;
break;
@@ -262,7 +268,7 @@ main(int argc, char **argv)
if (optind != argc-1) /* need a device */
usage();
fs = argv[argc-1];
} else if (wflag || sflag) {
} else if (wflag || sflag || oflag) {
if (optind != argc)
usage();
} else
@@ -306,6 +312,21 @@ bozo!
#endif
exit(0);
}
if (oflag) {
long ncpus = -1;
#if defined(_SC_NPROCESSORS_ONLN)
ncpus = sysconf(_SC_NPROCESSORS_ONLN);
#elif defined(_SC_NPROC_ONLN)
ncpus = sysconf(_SC_NPROC_ONLN);
#endif
if (ncpus == -1)
ncpus = 1;
printf("%ld\n", ncpus);
exit(0);
}
fprintf(stderr, "feature: dunno what you're after.\n");
return(1);