Hi Yann,
Yann Sionneau wrote,
Hi Waldemar,
It's just not clear to me what __UCLIBC_HAVE_STATX__ is supposed to mean.
Does it mean the kernel supports the syscall?
I would say yes. It is for newer architectures which only support
statx like c-sky. At least that is the reason it was introduced.
The old functions are not available for c-sky.
Now it is also used by kvx.
Or does it mean the arch want to expose some
"statx" function which wraps the
statx syscall? (because statx is non POSIX and is Linux specific)
In the first scenario I would think that it seems redundant with just checking
__NR_statx
It seems not to be redundant, as you can see it breaks some
architectures which in newer kernels define __NR_statx, but the old
functions still are available and working fine like mips64 n32.
In the second scenario I would think that even if the
arch does not want to
expose a statx() function in the libc, the arch would still want to wrap the
"old" functions (fstatat, stat, etc) around the new statx syscall, right?
In any case I am interested in understanding which of the 2 scenario is
correct: what does __UCLIBC_HAVE_STATX__ mean?
Also, indeed I can see that in other files the check is done like this `#if
defined __NR_statx && defined __UCLIBC_HAVE_STATX__` but maybe we need to make
sure this is correct, and if it's not, fix this.
I at least hope this is correct, yes.
I hope I'm helping and not making this more
complex than it's already is :)
Is it now sufficiently explained? Can I push the change?
best regards
Waldemar