Messages in this thread | | | Subject | Re: [PATCH 1/2] perf arm64: Handle __NR3264_ prefixed syscall number | From | Tiezhu Yang <> | Date | Wed, 24 May 2023 15:18:28 +0800 |
| |
On 05/24/2023 02:43 PM, Alexander Kapshuk wrote: > On Wed, May 24, 2023 at 6:19 AM Tiezhu Yang <yangtiezhu@loongson.cn> wrote: >> >> >> >> On 05/23/2023 08:31 PM, Alexander Kapshuk wrote: >>> On Tue, May 23, 2023 at 1:22 PM Tiezhu Yang <yangtiezhu@loongson.cn> wrote: >>>> >>>> After commit 9854e7ad35fe ("perf arm64: Simplify mksyscalltbl"), >>>> in the generated syscall table file syscalls.c, there exist some >>>> __NR3264_ prefixed syscall numbers such as [__NR3264_ftruncate], >>>> it looks like not so good, just do some small filter operations >>>> to handle __NR3264_ prefixed syscall number as a digital number. >>>> >>>> Without this patch: >>>> >>>> [__NR3264_ftruncate] = "ftruncate", >>>> >>>> With this patch: >>>> >>>> [46] = "ftruncate", >>>> >>>> Signed-off-by: Tiezhu Yang <yangtiezhu@loongson.cn> >>>> --- >>>> tools/perf/arch/arm64/entry/syscalls/mksyscalltbl | 7 ++++--- >>>> 1 file changed, 4 insertions(+), 3 deletions(-) >>>> >>>> diff --git a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl >>>> index 22cdf91..59ab7939 100755 >>>> --- a/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl >>>> +++ b/tools/perf/arch/arm64/entry/syscalls/mksyscalltbl >>>> @@ -39,7 +39,8 @@ create_table() >>>> echo "};" >>>> } >>>> >>>> -$gcc -E -dM -x c -I $incpath/include/uapi $input \ >>>> - |sed -ne 's/^#define __NR_//p' \ >>>> - |sort -t' ' -k2 -n \ >>>> +$gcc -E -dM -x c -I $incpath/include/uapi $input \ >>>> + |awk '{if ($2~"__NR" && $3 !~"__NR3264_") {print}}' \ >>>> + |sed -ne 's/^#define __NR_//p;s/^#define __NR3264_//p' \ >>>> + |sort -t' ' -k2 -n \ >>>> |create_table >>>> -- >>>> 2.1.0 >>>> >>> >>> As an aside, the awk + sed + sort parts of the command line may be >>> reduced to the following awk script, if desired: >>> awk '$2 ~ "__NR" && $3 !~ "__NR3264_" { >>> sub("^#define __NR_", "") >>> sub("^#define __NR3264_", "") >>> print | "sort -k2 -n" >>> }' >>> >> >> Hi Alexander, >> >> Thanks, it seems more simple and works well as expected. >> Let us wait for more review comments before respin. >> >> If no any objections, I will send v2 with the following >> changes based on the current patch in the next week. >> >> -$gcc -E -dM -x c -I $incpath/include/uapi $input \ >> - |awk '{if ($2~"__NR" && $3 !~"__NR3264_") {print}}' \ >> - |sed -ne 's/^#define __NR_//p;s/^#define __NR3264_//p' \ >> - |sort -t' ' -k2 -n \ >> +$gcc -E -dM -x c -I $incpath/include/uapi $input \ >> + |awk '$2 ~ "__NR" && $3 !~ "__NR3264_" { >> + sub("^#define __NR_", "") >> + sub("^#define __NR3264_", "") >> + print | "sort -k2 -n"}' \ >> |create_table >> >> Thanks, >> Tiezhu >> > > Hi Tiezhu, > > Thanks for your prompt feedback. > It was merely a suggestion entirely subject to your discretion. > > If no other patterns are anticipated to be processed by the sub
Yes, there are only 2 patterns such as "__NR_" and "__NR3264_", I confirmed that in include/uapi/asm-generic/unistd.h.
> routines, they may be combined into a single sub routine like so: > awk '$2 ~ "__NR" && $3 !~ "__NR3264_" { > sub("^#define __NR(3264)?_", "") > print | "sort -k2 -n" > }'
Thanks again, I tested the above code, it also works well and looks better, I will modify the code as you suggested in v2.
Thanks, Tiezhu
| |