[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Minios-devel] [UNIKRAFT PATCH 3/6] lib/syscall_shim: uk_syscall_name(), uk_syscall_name_p()
Reviewed-by: Gaulthier Gain <gaulthier.gain@xxxxxxxxx> > On 11 Dec 2019, at 15:19, Simon Kuenzer <simon.kuenzer@xxxxxxxxx> wrote: > > The functions return a string with the name of a given system call > number. `uk_syscall_name_p()` does work exactly the same as > `uk_syscall_name()` with the difference that it only resolves > compiled-in system calls. These are the ones that are populated to > UK_PROVIDED_SYSCALLS-y. > > Signed-off-by: Simon Kuenzer <simon.kuenzer@xxxxxxxxx> > --- > lib/syscall_shim/Makefile.uk | 17 +++++++++++-- > lib/syscall_shim/gen_uk_syscall_name.awk | 20 +++++++++++++++ > lib/syscall_shim/gen_uk_syscall_name_p.awk | 20 +++++++++++++++ > lib/syscall_shim/include/uk/syscall.h | 29 +++++++++++++++++++++- > 4 files changed, 83 insertions(+), 3 deletions(-) > create mode 100644 lib/syscall_shim/gen_uk_syscall_name.awk > create mode 100644 lib/syscall_shim/gen_uk_syscall_name_p.awk > > diff --git a/lib/syscall_shim/Makefile.uk b/lib/syscall_shim/Makefile.uk > index bbe98807..015e3aad 100644 > --- a/lib/syscall_shim/Makefile.uk > +++ b/lib/syscall_shim/Makefile.uk > @@ -7,8 +7,10 @@ LIBSYSCALL_SHIM_PHONY_SRC := $(addprefix > $(LIBSYSCALL_SHIM_INCLUDES_PATH)/, $(LI > LIBSYSCALL_SHIM_PHONY_SRC += $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in > LIBSYSCALL_SHIM_PHONY_SRC_NEW := $(addsuffix .new, > $(LIBSYSCALL_SHIM_PHONY_SRC)) > > -LIBSYSCALL_SHIM_GEN_SRC := > $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h \ > - $(LIBSYSCALL_SHIM_BUILD)/syscall_entry.c > +LIBSYSCALL_SHIM_GEN_SRC := > $(LIBSYSCALL_SHIM_INCLUDES_PATH)/provided_syscalls.h > +LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/syscall_entry.c > +LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c > +LIBSYSCALL_SHIM_GEN_SRC += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c > > UK_PREPARE-$(CONFIG_LIBSYSCALL_SHIM) += $(LIBSYSCALL_SHIM_PHONY_SRC) > $(LIBSYSCALL_SHIM_GEN_SRC) > > @@ -43,6 +45,15 @@ $(LIBSYSCALL_SHIM_BUILD)/syscall_entry.c: > $(LIBSYSCALL_SHIM_BUILD)/provided_sysc > $(AWK) -F '-' -f $(LIBSYSCALL_SHIM_BASE)/gen_entry.awk $< > $@ > && \ > cat $(LIBSYSCALL_SHIM_BASE)/entry.c.in_end >> $@) > > +$(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c: > $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk $(LIBSYSCALL_SHIM_TEMPL) > + $(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \ > + $(AWK) -f $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name.awk \ > + $(LIBSYSCALL_SHIM_TEMPL) > $@) > + > +$(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c: > $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in > $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name_p.awk > + $(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \ > + $(AWK) -F '-' -f > $(LIBSYSCALL_SHIM_BASE)/gen_uk_syscall_name_p.awk $< > $@) > + > $(LIBSYSCALL_SHIM_BUILD)/provided_syscalls.h.in.new: > $(call build_cmd,GEN,libsyscall_shim,$(notdir $@), \ > echo $(UK_PROVIDED_SYSCALLS-y) | tr ' ' '\n' > $@) > @@ -58,5 +69,7 @@ CINCLUDES-y += -I$(LIBSYSCALL_SHIM_BASE)/include > CXXINCLUDES-y += -I$(LIBSYSCALL_SHIM_BASE)/include > > LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/syscall_entry.c > +LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name.c > +LIBSYSCALL_SHIM_SRCS-y += $(LIBSYSCALL_SHIM_BUILD)/uk_syscall_name_p.c > > LIBSYSCALL_SHIM_CLEAN = $(LIBSYSCALL_SHIM_PHONY_SRC) > $(LIBSYSCALL_SHIM_PHONY_SRC_NEW) $(LIBSYSCALL_SHIM_GEN_SRC) > $(LIBSYSCALL_SHIM_GEN_SRC) > diff --git a/lib/syscall_shim/gen_uk_syscall_name.awk > b/lib/syscall_shim/gen_uk_syscall_name.awk > new file mode 100644 > index 00000000..7e99ab2b > --- /dev/null > +++ b/lib/syscall_shim/gen_uk_syscall_name.awk > @@ -0,0 +1,20 @@ > +BEGIN { > + print "/* Auto generated file. DO NOT EDIT */\n" > + > + print "#include <stddef.h>\n" > + print "#include <uk/syscall.h>\n" > + > + print "const char *uk_syscall_name(long nr)\n{" > + print "\tswitch (nr) {" > +} > + > +/#define __NR_/{ > + printf "\tcase SYS_%s:\n", substr($2,6) > + printf "\t\treturn \"%s\";\n", substr($2,6) > +} > + > +END { > + print "\tdefault:" > + print "\t\treturn NULL;" > + print "\t}\n}" > +} > diff --git a/lib/syscall_shim/gen_uk_syscall_name_p.awk > b/lib/syscall_shim/gen_uk_syscall_name_p.awk > new file mode 100644 > index 00000000..c6251299 > --- /dev/null > +++ b/lib/syscall_shim/gen_uk_syscall_name_p.awk > @@ -0,0 +1,20 @@ > +BEGIN { > + print "/* Auto generated file. DO NOT EDIT */\n" > + > + print "#include <stddef.h>\n" > + print "#include <uk/syscall.h>\n" > + > + print "const char *uk_syscall_name_p(long nr)\n{" > + print "\tswitch (nr) {" > +} > + > +/[a-zA-Z0-9]+-[0-9]+/{ > + printf "\tcase SYS_%s:\n", $1 > + printf "\t\treturn \"%s\";\n", $1 > +} > + > +END { > + print "\tdefault:" > + print "\t\treturn NULL;" > + print "\t}\n}" > +} > diff --git a/lib/syscall_shim/include/uk/syscall.h > b/lib/syscall_shim/include/uk/syscall.h > index 7ef19e5d..54946119 100644 > --- a/lib/syscall_shim/include/uk/syscall.h > +++ b/lib/syscall_shim/include/uk/syscall.h > @@ -1,6 +1,7 @@ > /* SPDX-License-Identifier: BSD-3-Clause */ > /* > * Authors: Yuri Volchkov <yuri.volchkov@xxxxxxxxx> > + * Simon Kuenzer <simon.kuenzer@xxxxxxxxx> > * > * > * Copyright (c) 2019, NEC Laboratories Europe GmbH, NEC Corporation. > @@ -154,6 +155,32 @@ long uk_syscall(long n, ...); > */ > #define uk_syscall_static(...) > \ > UK_CONCAT(__uk_syscall, __UK_SYSCALL_NARGS(__VA_ARGS__))(__VA_ARGS__) > -#endif > + > +/** > + * Returns a string with the name of the system call number `nr`. > + * > + * @param nr > + * System call number of current architecture > + * @return > + * - (const char *): name of system call > + * - (NULL): if system call number is unknown > + */ > +const char *uk_syscall_name(long nr); > + > +/** > + * Returns a string with the name of the system call number `nr`. > + * This function is similar to `uk_syscall_name` but it uses > + * a smaller lookup table internally. This table contains only > + * system call name mappings of provided calls. > + * > + * @param nr > + * System call number of current architecture > + * @return > + * - (const char *): name of provided system call > + * - (NULL): if system call is not provided > + */ > +const char *uk_syscall_name_p(long nr); > + > +#endif /* CONFIG_LIBSYSCALL_SHIM */ > > #endif /* __UK_SYSCALL_H__ */ > -- > 2.20.1 > _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |