Re: <sys/membarrier.h>
enh <[email protected]>
| Newsgroups | gmane.comp.lib.glibc.alpha |
|---|---|
| Message-ID | <CAJgzZorzSAXuiP0THj2a5WhUBQLmzUZh=BNiS=KY7kH02Dpi_w@mail.gmail.com> |
On Thu, Jul 9, 2026 at 7:44 PM Arsen Arsenović <[email protected]> wrote: > > Florian Weimer <[email protected]> writes: > > >> yeah, "all the choices suck". varargs has caused android (and android > >> developers) pain in the past too, so i'm tempted to go for three > >> arguments, but then callers are going to need an #if to support musl, > >> at which point everyone may as well have stuck with syscall() :-( > > > > We can provide C++ overloads for two and three arguments. With GCC, we > > can use __builtin_va_arg_pack and __builtin_va_arg_pack_len to emulate > > that in C. It's not supported by Clang. > > That may not be, but > https://clang.llvm.org/docs/AttributeReference.html#overloadable is. yeah, bionic uses that to get round the unsigned/signed conversion warnings with ioctl() so we could use it to have two membarrier()s (it's also used throughout the clang fortify implementation, but that's unrelated). i suppose we could even do something like the fortify check for open() with O_CREAT or O_TMPFILE but no mode. that's by far the most verbose way we could possible write membarrier() in the headers, but maybe the best option? > -- > Arsen Arsenović