All of lore.kernel.org
 help / color / mirror / Atom feed
From: Zhangjin Wu <falcon@tinylab.org>
To: thomas@t-8ch.de, w@1wt.eu
Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, linux-riscv@lists.infradead.org
Subject: [PATCH v3 0/3] tools/nolibc: add a new syscall helper
Date: Wed,  7 Jun 2023 19:28:58 +0800	[thread overview]
Message-ID: <cover.1686135913.git.falcon@tinylab.org> (raw)

Willy, Thomas

This is the revision of the v2 syscall helpers [1], it is based on
20230606-nolibc-rv32+stkp7a of [2]. It doesn't conflict with the v4 of
-ENOSYS patchset [3], so, it is ok to simply merge both of them.

This revision mainly applied Thomas' method, removed the __syscall()
helper and replaced it with __sysret() instead, because __syscall()
looks like _syscall() and syscall(), it may mixlead the developers.

Changes from v2 -> v3:

* tools/nolibc: sys.h: add a syscall return helper

  * The __syscall() is removed.

  * Align the code style of __sysret() with the others, and use
    __inline__ instead of inline (like stdlib.h) to let it work with
    the default -std=c89 in tools/testing/selftests/nolibc/Makefile

* tools/nolibc: unistd.h: apply __sysret() helper

  As v2.

* tools/nolibc: sys.h: apply __sysret() helper

  replaced __syscall() with __sysret() and merged two separated patches of v2 to one.

Did run-user tests for rv32 (with [3]), rv64 and arm64.

BTW, two questions for Thomas,

* This commit 659a49abc9c2 ("tools/nolibc: validate C89 compatibility")
  enables -std=c89, why not gnu11 used by kernel ? ;-)

* Do we need to tune the order of the macros in unistd.h like this:

    #define _syscall(N, ...) __sysret(my_syscall##N(__VA_ARGS__))
    #define _syscall_n(N, ...) _syscall(N, __VA_ARGS__)
    #define __syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N
    #define _sycall_narg(...) __syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)
    #define syscall(...) _syscall_n(_sycall_narg(__VA_ARGS__), ##__VA_ARGS__)

  Before, It works but seems not put in using order:

    #define _syscall(N, ...) __sysret(my_syscall##N(__VA_ARGS__))
    #define _sycall_narg(...) __syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)
    #define __syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N
    #define _syscall_n(N, ...) _syscall(N, __VA_ARGS__)
    #define syscall(...) _syscall_n(_sycall_narg(__VA_ARGS__), ##__VA_ARGS__)

Thanks.

Best regards,
Zhangjin

---
[1]: https://lore.kernel.org/linux-riscv/cover.1686036862.git.falcon@tinylab.org/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
[3]: https://lore.kernel.org/linux-riscv/cover.1686128703.git.falcon@tinylab.org/T/#t

Zhangjin Wu (3):
  tools/nolibc: sys.h: add a syscall return helper
  tools/nolibc: unistd.h: apply __sysret() helper
  tools/nolibc: sys.h: apply __sysret() helper

 tools/include/nolibc/sys.h    | 364 +++++-----------------------------
 tools/include/nolibc/unistd.h |  11 +-
 2 files changed, 55 insertions(+), 320 deletions(-)

-- 
2.25.1


WARNING: multiple messages have this Message-ID (diff)
From: Zhangjin Wu <falcon@tinylab.org>
To: thomas@t-8ch.de, w@1wt.eu
Cc: falcon@tinylab.org, arnd@arndb.de, linux-kernel@vger.kernel.org,
	linux-kselftest@vger.kernel.org, linux-riscv@lists.infradead.org
Subject: [PATCH v3 0/3] tools/nolibc: add a new syscall helper
Date: Wed,  7 Jun 2023 19:28:58 +0800	[thread overview]
Message-ID: <cover.1686135913.git.falcon@tinylab.org> (raw)

Willy, Thomas

This is the revision of the v2 syscall helpers [1], it is based on
20230606-nolibc-rv32+stkp7a of [2]. It doesn't conflict with the v4 of
-ENOSYS patchset [3], so, it is ok to simply merge both of them.

This revision mainly applied Thomas' method, removed the __syscall()
helper and replaced it with __sysret() instead, because __syscall()
looks like _syscall() and syscall(), it may mixlead the developers.

Changes from v2 -> v3:

* tools/nolibc: sys.h: add a syscall return helper

  * The __syscall() is removed.

  * Align the code style of __sysret() with the others, and use
    __inline__ instead of inline (like stdlib.h) to let it work with
    the default -std=c89 in tools/testing/selftests/nolibc/Makefile

* tools/nolibc: unistd.h: apply __sysret() helper

  As v2.

* tools/nolibc: sys.h: apply __sysret() helper

  replaced __syscall() with __sysret() and merged two separated patches of v2 to one.

Did run-user tests for rv32 (with [3]), rv64 and arm64.

BTW, two questions for Thomas,

* This commit 659a49abc9c2 ("tools/nolibc: validate C89 compatibility")
  enables -std=c89, why not gnu11 used by kernel ? ;-)

* Do we need to tune the order of the macros in unistd.h like this:

    #define _syscall(N, ...) __sysret(my_syscall##N(__VA_ARGS__))
    #define _syscall_n(N, ...) _syscall(N, __VA_ARGS__)
    #define __syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N
    #define _sycall_narg(...) __syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)
    #define syscall(...) _syscall_n(_sycall_narg(__VA_ARGS__), ##__VA_ARGS__)

  Before, It works but seems not put in using order:

    #define _syscall(N, ...) __sysret(my_syscall##N(__VA_ARGS__))
    #define _sycall_narg(...) __syscall_narg(__VA_ARGS__, 6, 5, 4, 3, 2, 1, 0)
    #define __syscall_narg(_0, _1, _2, _3, _4, _5, _6, N, ...) N
    #define _syscall_n(N, ...) _syscall(N, __VA_ARGS__)
    #define syscall(...) _syscall_n(_sycall_narg(__VA_ARGS__), ##__VA_ARGS__)

Thanks.

Best regards,
Zhangjin

---
[1]: https://lore.kernel.org/linux-riscv/cover.1686036862.git.falcon@tinylab.org/
[2]: https://git.kernel.org/pub/scm/linux/kernel/git/wtarreau/nolibc.git
[3]: https://lore.kernel.org/linux-riscv/cover.1686128703.git.falcon@tinylab.org/T/#t

Zhangjin Wu (3):
  tools/nolibc: sys.h: add a syscall return helper
  tools/nolibc: unistd.h: apply __sysret() helper
  tools/nolibc: sys.h: apply __sysret() helper

 tools/include/nolibc/sys.h    | 364 +++++-----------------------------
 tools/include/nolibc/unistd.h |  11 +-
 2 files changed, 55 insertions(+), 320 deletions(-)

-- 
2.25.1


_______________________________________________
linux-riscv mailing list
linux-riscv@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-riscv

             reply	other threads:[~2023-06-07 11:29 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-06-07 11:28 Zhangjin Wu [this message]
2023-06-07 11:28 ` [PATCH v3 0/3] tools/nolibc: add a new syscall helper Zhangjin Wu
2023-06-07 11:30 ` [PATCH v3 1/3] tools/nolibc: sys.h: add a syscall return helper Zhangjin Wu
2023-06-07 11:30   ` Zhangjin Wu
2023-06-07 11:31 ` [PATCH v3 2/3] tools/nolibc: unistd.h: apply __sysret() helper Zhangjin Wu
2023-06-07 11:31   ` Zhangjin Wu
2023-06-07 11:32 ` [PATCH v3 3/3] tools/nolibc: sys.h: " Zhangjin Wu
2023-06-07 11:32   ` Zhangjin Wu
2023-06-07 21:41 ` [PATCH v3 0/3] tools/nolibc: add a new syscall helper Thomas Weißschuh
2023-06-07 21:41   ` Thomas Weißschuh
2023-06-08 10:10   ` Zhangjin Wu
2023-06-08 10:10     ` Zhangjin Wu

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=cover.1686135913.git.falcon@tinylab.org \
    --to=falcon@tinylab.org \
    --cc=arnd@arndb.de \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-kselftest@vger.kernel.org \
    --cc=linux-riscv@lists.infradead.org \
    --cc=thomas@t-8ch.de \
    --cc=w@1wt.eu \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.