xref: /linux/tools/perf/util/cap.c (revision a4eb44a6435d6d8f9e642407a4a06f65eb90ca04)
1 // SPDX-License-Identifier: GPL-2.0
2 /*
3  * Capability utilities
4  */
5 
6 #ifdef HAVE_LIBCAP_SUPPORT
7 
8 #include "cap.h"
9 #include <stdbool.h>
10 #include <sys/capability.h>
11 
12 bool perf_cap__capable(cap_value_t cap)
13 {
14 	cap_flag_value_t val;
15 	cap_t caps = cap_get_proc();
16 
17 	if (!caps)
18 		return false;
19 
20 	if (cap_get_flag(caps, cap, CAP_EFFECTIVE, &val) != 0)
21 		val = CAP_CLEAR;
22 
23 	if (cap_free(caps) != 0)
24 		return false;
25 
26 	return val == CAP_SET;
27 }
28 
29 #endif  /* HAVE_LIBCAP_SUPPORT */
30