[PATCH v2 4/4] tools/nolibc: sys.h: apply __syscall() helper
Thomas Weißschuh
thomas at t-8ch.de
Tue Jun 6 11:36:53 PDT 2023
Hi Zhangjin,
On 2023-06-06 16:17:38+0800, Zhangjin Wu wrote:
> Use __syscall() helper to shrink 252 lines of code.
>
> $ git show HEAD^:tools/include/nolibc/sys.h | wc -l
> 1425
> $ git show HEAD:tools/include/nolibc/sys.h | wc -l
> 1173
> $ echo "1425-1173" | bc -l
> 252
>
> Signed-off-by: Zhangjin Wu <falcon at tinylab.org>
> ---
> tools/include/nolibc/sys.h | 336 +++++--------------------------------
> 1 file changed, 42 insertions(+), 294 deletions(-)
>
> diff --git a/tools/include/nolibc/sys.h b/tools/include/nolibc/sys.h
> index f6e3168b3e50..0cfc5157845a 100644
> --- a/tools/include/nolibc/sys.h
> +++ b/tools/include/nolibc/sys.h
> @@ -108,13 +108,7 @@ int sys_chdir(const char *path)
> static __attribute__((unused))
> int chdir(const char *path)
> {
> - int ret = sys_chdir(path);
> -
> - if (ret < 0) {
> - SET_ERRNO(-ret);
> - ret = -1;
> - }
> - return ret;
> + return __syscall(chdir, path);
To be honest I'm still not a big fan of the __syscall macro.
It's a bit too magic for too little gain.
The commit message argues that the patches make the code shorter.
However doing
__sysret(sys_chdir(path));
instead of
__syscall(chdir, path);
is only three characters longer and the same amout of lines.
Otherwise we would have syscall() _syscall() and __syscall() each doing
different things.
And __syscall does not behave like a regular function.
The rest of the patchset looks great.
Maybe Willy can break the tie?
Thomas
Note: If we figure out a way to build syscall() without macros I would
like that also :-)
More information about the linux-riscv
mailing list