162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * usage.c
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Various reporting routines.
662306a36Sopenharmony_ci * Originally copied from GIT source.
762306a36Sopenharmony_ci *
862306a36Sopenharmony_ci * Copyright (C) Linus Torvalds, 2005
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci#include "util.h"
1162306a36Sopenharmony_ci#include <stdio.h>
1262306a36Sopenharmony_ci#include <stdlib.h>
1362306a36Sopenharmony_ci#include <linux/compiler.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ciconst char perf_usage_string[] =
1662306a36Sopenharmony_ci	"perf [--version] [--help] [OPTIONS] COMMAND [ARGS]";
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ciconst char perf_more_info_string[] =
1962306a36Sopenharmony_ci	"See 'perf help COMMAND' for more information on a specific command.";
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_cistatic __noreturn void usage_builtin(const char *err)
2262306a36Sopenharmony_ci{
2362306a36Sopenharmony_ci	fprintf(stderr, "\n Usage: %s\n", err);
2462306a36Sopenharmony_ci	exit(129);
2562306a36Sopenharmony_ci}
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci/* If we are in a dlopen()ed .so write to a global variable would segfault
2862306a36Sopenharmony_ci * (ugh), so keep things static. */
2962306a36Sopenharmony_cistatic void (*usage_routine)(const char *err) __noreturn = usage_builtin;
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_civoid usage(const char *err)
3262306a36Sopenharmony_ci{
3362306a36Sopenharmony_ci	usage_routine(err);
3462306a36Sopenharmony_ci}
35