linux-user: Add strace support for printing arguments of fallocate()
commitf4d92c5e9f24efdc83f24a2fd99c37a8609787ee
authorFilip Bozuta <Filip.Bozuta@syrmia.com>
Fri, 19 Jun 2020 12:33:31 +0000 (19 14:33 +0200)
committerLaurent Vivier <laurent@vivier.eu>
Mon, 29 Jun 2020 11:08:48 +0000 (29 13:08 +0200)
treedf57d25088fc8a0146646161a1a1b0d656058d97
parent5844f4bc4111248b9de0c2efa422cafcdaa69cf1
linux-user: Add strace support for printing arguments of fallocate()

This patch implements strace argument printing functionality for following syscall:

    *fallocate - manipulate file space

        int fallocate(int fd, int mode, off_t offset, off_t len)
        man page: https://www.man7.org/linux/man-pages/man2/fallocate.2.html

Implementation notes:

    This syscall's second argument "mode" is composed of predefined values
    which represent flags that determine the type of operation that is
    to be performed on the file space. For that reason, a printing
    function "print_fallocate" was stated in file "strace.list". This printing
    function uses an already existing function "print_flags()" to print flags of
    the "mode" argument. These flags are stated inside an array "falloc_flags"
    that contains values of type "struct flags". These values are instantiated
    using an existing macro "FLAG_GENERIC()". Most of these flags are defined
    after kernel version 3.0 which is why they are enwrapped in an #ifdef
    directive.
    The syscall's third ant fourth argument are of type "off_t" which can
    cause variations between 32/64-bit architectures. To handle this variation,
    function "target_offset64()" was copied from file "strace.c" and used in
    "print_fallocate" to print "off_t" arguments for 32-bit architectures.

Signed-off-by: Filip Bozuta <Filip.Bozuta@syrmia.com>
Reviewed-by: Laurent Vivier <laurent@vivier.eu>
Message-Id: <20200619123331.17387-7-filip.bozuta@syrmia.com>
Signed-off-by: Laurent Vivier <laurent@vivier.eu>
linux-user/qemu.h
linux-user/strace.c
linux-user/strace.list
linux-user/syscall.c