Ok, we may store these functions in syscall.c.

вт, 18 авг. 2020 г. в 18:56, Laurent Vivier <[email protected]>:

> Le 18/08/2020 à 01:57, Andrew Aladjev a écrit :
> > Signed-off-by: Andrew Aladjev <[email protected]>
> > ---
> >  linux-user/Makefile.objs  |  5 +++--
> >  linux-user/syscall.c      | 33 +--------------------------------
> >  linux-user/syscall_proc.c | 32 ++++++++++++++++++++++++++++++++
> >  linux-user/syscall_proc.h |  7 +++++++
> >  4 files changed, 43 insertions(+), 34 deletions(-)
> >  create mode 100644 linux-user/syscall_proc.c
> >  create mode 100644 linux-user/syscall_proc.h
> >
> > diff --git a/linux-user/Makefile.objs b/linux-user/Makefile.objs
> > index 1940910a73..20f8828b86 100644
> > --- a/linux-user/Makefile.objs
> > +++ b/linux-user/Makefile.objs
> > @@ -1,7 +1,8 @@
> >  obj-y = main.o syscall.o strace.o mmap.o signal.o \
> >       elfload.o linuxload.o uaccess.o uname.o \
> > -     safe-syscall.o $(TARGET_ABI_DIR)/signal.o \
> > -        $(TARGET_ABI_DIR)/cpu_loop.o exit.o fd-trans.o
> > +     safe-syscall.o syscall_proc.o \
> > +     $(TARGET_ABI_DIR)/cpu_loop.o $(TARGET_ABI_DIR)/signal.o \
> > +        exit.o fd-trans.o
> >
>
> I think this will collide with Paolo's meson pull request.
>
> >  obj-$(TARGET_HAS_BFLT) += flatload.o
> >  obj-$(TARGET_I386) += vm86.o
> > diff --git a/linux-user/syscall.c b/linux-user/syscall.c
> > index 5741c72733..01edc9b68d 100644
> > --- a/linux-user/syscall.c
> > +++ b/linux-user/syscall.c
> > @@ -125,6 +125,7 @@
> >  #include "qapi/error.h"
> >  #include "fd-trans.h"
> >  #include "tcg/tcg.h"
> > +#include "syscall_proc.h"
> >
> >  #ifndef CLONE_IO
> >  #define CLONE_IO                0x80000000      /* Clone io context */
> > @@ -7482,38 +7483,6 @@ static int open_self_auxv(void *cpu_env, int fd)
> >      return 0;
> >  }
> >
> > -static int is_proc_myself(const char *filename, const char *entry)
> > -{
> > -    if (!strncmp(filename, "/proc/", strlen("/proc/"))) {
> > -        filename += strlen("/proc/");
> > -        if (!strncmp(filename, "self/", strlen("self/"))) {
> > -            filename += strlen("self/");
> > -        } else if (*filename >= '1' && *filename <= '9') {
> > -            char myself[80];
> > -            snprintf(myself, sizeof(myself), "%d/", getpid());
> > -            if (!strncmp(filename, myself, strlen(myself))) {
> > -                filename += strlen(myself);
> > -            } else {
> > -                return 0;
> > -            }
> > -        } else {
> > -            return 0;
> > -        }
> > -        if (!strcmp(filename, entry)) {
> > -            return 1;
> > -        }
> > -    }
> > -    return 0;
> > -}
> > -
> > -#if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN) ||
> \
> > -    defined(TARGET_SPARC) || defined(TARGET_M68K) ||
> defined(TARGET_HPPA)
> > -static int is_proc(const char *filename, const char *entry)
> > -{
> > -    return strcmp(filename, entry) == 0;
> > -}
> > -#endif
> > -
> >  #if defined(HOST_WORDS_BIGENDIAN) != defined(TARGET_WORDS_BIGENDIAN)
> >  static int open_net_route(void *cpu_env, int fd)
> >  {
> > diff --git a/linux-user/syscall_proc.c b/linux-user/syscall_proc.c
> > new file mode 100644
> > index 0000000000..34051a8e6b
> > --- /dev/null
> > +++ b/linux-user/syscall_proc.c
> > @@ -0,0 +1,32 @@
> > +#include "qemu/osdep.h"
> > +
> > +#include "syscall_proc.h"
> > +
> > +int is_proc_myself(const char *filename, const char *entry)
> > +{
> > +    if (!strncmp(filename, "/proc/", strlen("/proc/"))) {
> > +        filename += strlen("/proc/");
> > +        if (!strncmp(filename, "self/", strlen("self/"))) {
> > +            filename += strlen("self/");
> > +        } else if (*filename >= '1' && *filename <= '9') {
> > +            char myself[80];
> > +            snprintf(myself, sizeof(myself), "%d/", getpid());
> > +            if (!strncmp(filename, myself, strlen(myself))) {
> > +                filename += strlen(myself);
> > +            } else {
> > +                return 0;
> > +            }
> > +        } else {
> > +            return 0;
> > +        }
> > +        if (!strcmp(filename, entry)) {
> > +            return 1;
> > +        }
> > +    }
> > +    return 0;
> > +}
> > +
> > +int is_proc(const char *filename, const char *entry)
> > +{
> > +    return strcmp(filename, entry) == 0;
> > +}
> > diff --git a/linux-user/syscall_proc.h b/linux-user/syscall_proc.h
> > new file mode 100644
> > index 0000000000..3098af931f
> > --- /dev/null
> > +++ b/linux-user/syscall_proc.h
> > @@ -0,0 +1,7 @@
> > +#ifndef SYSCALL_PROC_H
> > +#define SYSCALL_PROC_H
> > +
> > +int is_proc(const char *filename, const char *entry);
> > +int is_proc_myself(const char *filename, const char *entry);
> > +
> > +#endif
> >
>
> Please add a "SPDX-License-Identifier: GPL-2.0-or-later" header in the
> new files.
>
> Thanks,
> Laurent
>
>
>
>
>

Reply via email to