1 // SPDX-License-Identifier: GPL-2.0-or-later
2 /*
3  * Copyright (c) 2018 Mylène Josserand <mylene.josserand@bootlin.com>
4  *
5  */
6 
7 #include <stdio.h>
8 #include <unistd.h>
9 #include <string.h>
10 
print_help(void)11 static void print_help(void)
12 {
13 	printf("Usage: tst_getconf variable\n\n");
14 	printf("       variable: can be PAGESIZE/PAGE_SIZE");
15 	printf(" or _NPROCESSORS_ONLN (for the moment)\n\n");
16 	printf("example: tst_getconf PAGESIZE\n");
17 }
18 
main(int argc,char * argv[])19 int main(int argc, char *argv[])
20 {
21 	int opt;
22 
23 	while ((opt = getopt(argc, argv, ":h")) != -1) {
24 		switch (opt) {
25 		case 'h':
26 			print_help();
27 			return 0;
28 		default:
29 			print_help();
30 			return 1;
31 		}
32 	}
33 
34 	if (argc != 2) {
35 		print_help();
36 		return 1;
37 	}
38 
39 	if (!strcmp(argv[optind], "_NPROCESSORS_ONLN")) {
40 		printf("%ld\n", sysconf(_SC_NPROCESSORS_ONLN));
41 	} else if (!strcmp(argv[optind], "PAGESIZE") ||
42 		   !strcmp(argv[optind], "PAGE_SIZE")) {
43 		printf("%ld\n", sysconf(_SC_PAGE_SIZE));
44 	} else {
45 		printf("tst_getconf: Unrecognized variable \'%s\'\n",
46 		       argv[optind]);
47 		return -1;
48 	}
49 
50 	return 0;
51 }
52