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@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 :-)