C++程序  |  52行  |  1 KB

// SPDX-License-Identifier: GPL-2.0-or-later
/*
 * Copyright (c) 2018 Mylène Josserand <mylene.josserand@bootlin.com>
 *
 */

#include <stdio.h>
#include <unistd.h>
#include <string.h>

static void print_help(void)
{
	printf("Usage: tst_getconf variable\n\n");
	printf("       variable: can be PAGESIZE/PAGE_SIZE");
	printf(" or _NPROCESSORS_ONLN (for the moment)\n\n");
	printf("example: tst_getconf PAGESIZE\n");
}

int main(int argc, char *argv[])
{
	int opt;

	while ((opt = getopt(argc, argv, ":h")) != -1) {
		switch (opt) {
		case 'h':
			print_help();
			return 0;
		default:
			print_help();
			return 1;
		}
	}

	if (argc != 2) {
		print_help();
		return 1;
	}

	if (!strcmp(argv[optind], "_NPROCESSORS_ONLN")) {
		printf("%ld\n", sysconf(_SC_NPROCESSORS_ONLN));
	} else if (!strcmp(argv[optind], "PAGESIZE") ||
		   !strcmp(argv[optind], "PAGE_SIZE")) {
		printf("%ld\n", sysconf(_SC_PAGE_SIZE));
	} else {
		printf("tst_getconf: Unrecognized variable \'%s\'\n",
		       argv[optind]);
		return -1;
	}

	return 0;
}