On Wed, Jun 7, 2023, at 11:46, Zhangjin Wu wrote:
On Wed, Jun 7, 2023, at 07:19, Zhangjin Wu wrote:
Ok, agree, as the 64bit version of lseek may be enough for nolibc, if a target application really require, they can add the alias themselves.
Are there any examples of functions where we actually want mulitple versions?
For example, the following ones are related to the syscalls being added, all of them have similar library routines in current sys.h:
- waitid, https://linux.die.net/man/2/waitid
- ppoll, https://linux.die.net/man/2/ppoll
- pselect, https://linux.die.net/man/2/pselect6
- clock_gettime, https://linux.die.net/man/2/clock_gettime
The similar routines are put in right side:
- waitid --> waitpid, wait, wait4
- ppoll --> poll
- pselect --> select
- clock_gettime --> gettimeofday
Ok, I think these are all useful to have in both versions.
All four of these examples are old enough that I think it's sufficient just expose them to userspace as the bare system calls, and have the older library calls be implemented using them without a fallback to the native syscalls of the same name on architectures that have both, newer architectures would only have the latest version anyway.
For the clock_gettime, it may also let us think about if we need to add its friends (clock_getres, clock_settime) together.
Yes, I think that makes sense. We also need clock_settime() to implement settimeofday() on rv32.
Ideally, I'd love to extend the tooling around system calls in the kernel so we can automatically generate the low-level wrapper functions from syscall.tbl, but this needs a lot of other work that you should not need to depend on for what you are doing right now.
Arnd