xref: /kernel/linux/linux-6.6/tools/perf/util/cap.c
  • Home
  • History
  • Annotate Annotate
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
  • only in /kernel/linux/linux-6.6/tools/perf/util/
162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Capability utilities
462306a36Sopenharmony_ci */
562306a36Sopenharmony_ci
662306a36Sopenharmony_ci#ifdef HAVE_LIBCAP_SUPPORT
762306a36Sopenharmony_ci
862306a36Sopenharmony_ci#include "cap.h"
962306a36Sopenharmony_ci#include <stdbool.h>
1062306a36Sopenharmony_ci#include <sys/capability.h>
1162306a36Sopenharmony_ci
1262306a36Sopenharmony_cibool perf_cap__capable(cap_value_t cap)
1362306a36Sopenharmony_ci{
1462306a36Sopenharmony_ci	cap_flag_value_t val;
1562306a36Sopenharmony_ci	cap_t caps = cap_get_proc();
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci	if (!caps)
1862306a36Sopenharmony_ci		return false;
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci	if (cap_get_flag(caps, cap, CAP_EFFECTIVE, &val) != 0)
2162306a36Sopenharmony_ci		val = CAP_CLEAR;
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci	if (cap_free(caps) != 0)
2462306a36Sopenharmony_ci		return false;
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci	return val == CAP_SET;
2762306a36Sopenharmony_ci}
2862306a36Sopenharmony_ci
2962306a36Sopenharmony_ci#endif  /* HAVE_LIBCAP_SUPPORT */
30

Indexes created Thu Nov 07 10:32:03 CST 2024