Improve perf_event_open argument decoding
* configure.ac (AC_CHECK_HEADERS): Add linux/perf_event.h. * desc.c [HAVE_LINUX_PERF_EVENT_H]: Include <linux/perf_event.h>. (perf_event_open_flags): New xlat structure. (sys_perf_event_open): New function. * linux/dummy.h (sys_perf_event_open): Remove. * linux/syscall.h (sys_perf_event_open): New prototype. Signed-off-by: Ben Noordhuis <info@bnoordhuis.nl> Signed-off-by: Dmitry V. Levin <ldv@altlinux.org>
This commit is contained in:
parent
af8dc6b3a5
commit
88eafd81ab
@ -196,6 +196,7 @@ AC_CHECK_HEADERS(m4_normalize([
|
||||
ioctls.h
|
||||
libaio.h
|
||||
linux/capability.h
|
||||
linux/perf_event.h
|
||||
linux/ptrace.h
|
||||
linux/utsname.h
|
||||
mqueue.h
|
||||
|
31
desc.c
31
desc.c
@ -37,6 +37,9 @@
|
||||
#ifdef HAVE_LIBAIO_H
|
||||
# include <libaio.h>
|
||||
#endif
|
||||
#ifdef HAVE_LINUX_PERF_EVENT_H
|
||||
# include <linux/perf_event.h>
|
||||
#endif
|
||||
|
||||
#if HAVE_LONG_LONG_OFF_T
|
||||
/*
|
||||
@ -222,6 +225,19 @@ static const struct xlat whence[] = {
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
static const struct xlat perf_event_open_flags[] = {
|
||||
#ifdef PERF_FLAG_FD_NO_GROUP
|
||||
{ PERF_FLAG_FD_NO_GROUP, "PERF_FLAG_FD_NO_GROUP" },
|
||||
#endif
|
||||
#ifdef PERF_FLAG_FD_OUTPUT
|
||||
{ PERF_FLAG_FD_OUTPUT, "PERF_FLAG_FD_OUTPUT" },
|
||||
#endif
|
||||
#ifdef PERF_FLAG_PID_CGROUP
|
||||
{ PERF_FLAG_PID_CGROUP, "PERF_FLAG_PID_CGROUP" },
|
||||
#endif
|
||||
{ 0, NULL },
|
||||
};
|
||||
|
||||
#ifndef HAVE_LONG_LONG_OFF_T
|
||||
/* fcntl/lockf */
|
||||
static void
|
||||
@ -1068,3 +1084,18 @@ sys_eventfd2(struct tcb *tcp)
|
||||
{
|
||||
return do_eventfd(tcp, 1);
|
||||
}
|
||||
|
||||
int
|
||||
sys_perf_event_open(struct tcb *tcp)
|
||||
{
|
||||
if (entering(tcp)) {
|
||||
tprintf("%#lx, %d, %d, %d, ",
|
||||
tcp->u_arg[0],
|
||||
(int) tcp->u_arg[1],
|
||||
(int) tcp->u_arg[2],
|
||||
(int) tcp->u_arg[3]);
|
||||
printflags(perf_event_open_flags, tcp->u_arg[4],
|
||||
"PERF_FLAG_???");
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -39,7 +39,6 @@
|
||||
#define sys_lookup_dcookie printargs
|
||||
#define sys_name_to_handle_at printargs
|
||||
#define sys_open_by_handle_at printargs
|
||||
#define sys_perf_event_open printargs
|
||||
#define sys_request_key printargs
|
||||
#define sys_sync_file_range printargs
|
||||
#define sys_sysfs printargs
|
||||
|
@ -163,6 +163,7 @@ int sys_oldselect();
|
||||
int sys_oldstat();
|
||||
int sys_open();
|
||||
int sys_openat();
|
||||
int sys_perf_event_open();
|
||||
int sys_personality();
|
||||
int sys_pipe();
|
||||
int sys_pipe2();
|
||||
|
Loading…
x
Reference in New Issue
Block a user