Le 13/07/2020 à 11:50, Filip Bozuta a écrit : > This patch implements strace argument printing functionality for following > syscalls: > > * mlock, munlock, mlockall, munlockall - lock and unlock memory > > int mlock(const void *addr, size_t len) > int munlock(const void *addr, size_t len) > int mlockall(int flags) > int munlockall(void) > man page: https://man7.org/linux/man-pages/man2/mlock.2.html > > Implementation notes: > > Syscall mlockall() takes an argument that is composed of predefined values > which represent flags that determine the type of locking operation that is > to be performed. For that reason, a printing function "print_mlockall" was > stated in file "strace.list". This printing function uses an already > existing > function "print_flags()" to print the "flags" argument. These flags are > stated > inside an array "mlockall_flags" that contains values of type "struct > flags". > These values are instantiated using an existing macro "FLAG_TARGET()" that > crates aproppriate target flag values based on those defined in files > '/target_syscall.h'. These target flag values were changed from > "TARGET_MLOCKALL_MCL*" to "TARGET_MCL_*" so that they can be > aproppriately set > and recognised in "strace.c" with "FLAG_TARGET()". Value for "MCL_ONFAULT" > was added in this patch. This value was also added in "syscall.c" in > function > "target_to_host_mlockall_arg()". Because this flag value was added in > kernel > version 4.4, it is enwrapped in an #ifdef directive (both in "syscall.c" > and > in "strace.c") as to support older kernel versions. > The other syscalls have only primitive argument types, so the > rest of the implementation was handled by stating an appropriate > printing format in file "strace.list". Syscall mlock2() is not > implemented in > "syscall.c" and thus it's argument printing is not implemented in this > patch. > > Signed-off-by: Filip Bozuta <filip.boz...@syrmia.com> > --- > linux-user/aarch64/target_syscall.h | 5 +++-- > linux-user/alpha/target_syscall.h | 5 +++-- > linux-user/arm/target_syscall.h | 6 ++++-- > linux-user/cris/target_syscall.h | 5 +++-- > linux-user/hppa/target_syscall.h | 5 +++-- > linux-user/i386/target_syscall.h | 5 +++-- > linux-user/m68k/target_syscall.h | 6 +++--- > linux-user/microblaze/target_syscall.h | 5 +++-- > linux-user/mips/target_syscall.h | 5 +++-- > linux-user/mips64/target_syscall.h | 5 +++-- > linux-user/nios2/target_syscall.h | 5 +++-- > linux-user/openrisc/target_syscall.h | 5 +++-- > linux-user/ppc/target_syscall.h | 5 +++-- > linux-user/riscv/target_syscall.h | 5 +++-- > linux-user/s390x/target_syscall.h | 5 +++-- > linux-user/sh4/target_syscall.h | 5 +++-- > linux-user/sparc/target_syscall.h | 5 +++-- > linux-user/sparc64/target_syscall.h | 5 +++-- > linux-user/strace.c | 21 +++++++++++++++++++++ > linux-user/strace.list | 8 ++++---- > linux-user/syscall.c | 10 ++++++++-- > linux-user/tilegx/target_syscall.h | 5 +++-- > linux-user/x86_64/target_syscall.h | 5 +++-- > linux-user/xtensa/target_syscall.h | 5 +++-- > 24 files changed, 97 insertions(+), 49 deletions(-) >
Reviewed-by: Laurent Vivier <laur...@vivier.eu>