mailing list of musl libc
 help / color / Atom feed
* [musl] sys/sysinfo.h clash with linux/kernel.h
@ 2020-06-02 21:37 Rich Felker
  2020-06-03 11:45 ` [musl] " Szabolcs Nagy
  0 siblings, 1 reply; 2+ messages in thread
From: Rich Felker @ 2020-06-02 21:37 UTC (permalink / raw)
  To: musl; +Cc: libc-alpha, linux-kernel

linux/kernel.h is a uapi header that does almost nothing but define
some internal-use alignment macros and -- oddly -- include
linux/sysinfo.h to provide a definition of struct sysinfo. It's
included only from 6 places in the kernel uapi headers:

include/uapi/linux/lightnvm.h
include/uapi/linux/ethtool.h
include/uapi/linux/sysctl.h
include/uapi/linux/netlink.h
include/uapi/linux/netfilter/x_tables.h
include/uapi/linux/mroute6.h

However, it's also included from glibc's sys/sysinfo.h to provide
struct sysinfo (glibc depends on the kernel for the definition). On
musl, this produces a conflicting definition if both sys/sysinfo.h and
any of the above 6 headers are included in the same file.

I think the underlying problem here is that the same header is used
for two very disjoint purposes: by glibc as the provider of struct
sysinfo, and by other kernel headers as provider of the alignment
macros.

The glibc use is effectively a permanent contract that can't be
changed, so what I'd like to do is move the macros out to a separate
header (maybe linux/something_macros.h?) and have linux/kernel.h and
the above 6 uapi headers all include that. Then nothing but
linux/kernel.h would pull in linux/sysinfo.h.

Note that in practice this is a rather hard issue to hit since almost
nothing needs sysinfo() at the same time as the above uapi interfaces.
However it did come up in toybox, which is how I first (just today)
learned about the conflict, so it seems like something that should be
fixed.

Rich

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [musl] Re: sys/sysinfo.h clash with linux/kernel.h
  2020-06-02 21:37 [musl] sys/sysinfo.h clash with linux/kernel.h Rich Felker
@ 2020-06-03 11:45 ` Szabolcs Nagy
  0 siblings, 0 replies; 2+ messages in thread
From: Szabolcs Nagy @ 2020-06-03 11:45 UTC (permalink / raw)
  To: Rich Felker; +Cc: musl, libc-alpha, linux-kernel, linux-api


i think the linux-api list is the right place for this
so adding it on cc.

* Rich Felker <dalias@libc.org> [2020-06-02 17:37:05 -0400]:
> linux/kernel.h is a uapi header that does almost nothing but define
> some internal-use alignment macros and -- oddly -- include
> linux/sysinfo.h to provide a definition of struct sysinfo. It's
> included only from 6 places in the kernel uapi headers:
> 
> include/uapi/linux/lightnvm.h
> include/uapi/linux/ethtool.h
> include/uapi/linux/sysctl.h
> include/uapi/linux/netlink.h
> include/uapi/linux/netfilter/x_tables.h
> include/uapi/linux/mroute6.h
> 
> However, it's also included from glibc's sys/sysinfo.h to provide
> struct sysinfo (glibc depends on the kernel for the definition). On
> musl, this produces a conflicting definition if both sys/sysinfo.h and
> any of the above 6 headers are included in the same file.
> 
> I think the underlying problem here is that the same header is used
> for two very disjoint purposes: by glibc as the provider of struct
> sysinfo, and by other kernel headers as provider of the alignment
> macros.
> 
> The glibc use is effectively a permanent contract that can't be
> changed, so what I'd like to do is move the macros out to a separate
> header (maybe linux/something_macros.h?) and have linux/kernel.h and
> the above 6 uapi headers all include that. Then nothing but
> linux/kernel.h would pull in linux/sysinfo.h.

i think providing a patch would make this happen faster.

ideally uapi would be reorganized such that it's clear
what headers are supposed to be compatible with inclusion
together with libc headers and what headers may conflict.

> 
> Note that in practice this is a rather hard issue to hit since almost
> nothing needs sysinfo() at the same time as the above uapi interfaces.
> However it did come up in toybox, which is how I first (just today)
> learned about the conflict, so it seems like something that should be
> fixed.
> 
> Rich

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, back to index

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-06-02 21:37 [musl] sys/sysinfo.h clash with linux/kernel.h Rich Felker
2020-06-03 11:45 ` [musl] " Szabolcs Nagy

mailing list of musl libc

Archives are clonable: git clone --mirror http://inbox.vuxu.org/musl

Example config snippet for mirrors

Newsgroup available over NNTP:
	nntp://inbox.vuxu.org/vuxu.archive.musl


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git