Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On Thu, Jan 07, 2021 at 12:50:34PM -0500, Eric Farman wrote: > > > On 1/7/21 12:05 PM, Peter Maydell wrote: > > On Thu, 7 Jan 2021 at 16:52, Eric Farman wrote: > > > On 1/6/21 2:03 PM, Peter Xu wrote: > > > > Could I ask why the const.h is installed into > > > > include/standard-headers/linux > > > > rather than linux-headers/linux? When I was working on my version I > > > > failed to > > > > figure out the difference. > > > > > > Considering the main difference is whether the header file is copied > > > directly or edited with a bunch of substitutions, and const.h doesn't > > > get modified by those substitutions, I suppose it could go in > > > linux-headers itself. > > > > No, it can't, because linux-headers/ only goes on the include > > path when on a Linux host and on a CPU architecture with KVM support, > > whereas include/standard-headers/ headers are available and > > used on all host OSes/architectures. > > > > Because include/standard-headers/linux/ethtool.h will end up > > with a line > > #include "standard-headers/linux/const.h" > > we need to provide a const.h in that location so that the #include > > pulls in the file correctly. > > Ah, today I learned. Thanks, Peter. Yeah. Peter taught me the rules on IRC after I posted the email, and I didn't update later. So I guess my r-b stands. :) Thanks, -- Peter Xu
Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On 1/7/21 12:05 PM, Peter Maydell wrote: On Thu, 7 Jan 2021 at 16:52, Eric Farman wrote: On 1/6/21 2:03 PM, Peter Xu wrote: Could I ask why the const.h is installed into include/standard-headers/linux rather than linux-headers/linux? When I was working on my version I failed to figure out the difference. Considering the main difference is whether the header file is copied directly or edited with a bunch of substitutions, and const.h doesn't get modified by those substitutions, I suppose it could go in linux-headers itself. No, it can't, because linux-headers/ only goes on the include path when on a Linux host and on a CPU architecture with KVM support, whereas include/standard-headers/ headers are available and used on all host OSes/architectures. Because include/standard-headers/linux/ethtool.h will end up with a line #include "standard-headers/linux/const.h" we need to provide a const.h in that location so that the #include pulls in the file correctly. Ah, today I learned. Thanks, Peter. - Eric thanks -- PMM
Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On Thu, 7 Jan 2021 at 16:52, Eric Farman wrote: > On 1/6/21 2:03 PM, Peter Xu wrote: > > Could I ask why the const.h is installed into include/standard-headers/linux > > rather than linux-headers/linux? When I was working on my version I failed > > to > > figure out the difference. > > Considering the main difference is whether the header file is copied > directly or edited with a bunch of substitutions, and const.h doesn't > get modified by those substitutions, I suppose it could go in > linux-headers itself. No, it can't, because linux-headers/ only goes on the include path when on a Linux host and on a CPU architecture with KVM support, whereas include/standard-headers/ headers are available and used on all host OSes/architectures. Because include/standard-headers/linux/ethtool.h will end up with a line #include "standard-headers/linux/const.h" we need to provide a const.h in that location so that the #include pulls in the file correctly. thanks -- PMM
Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On 1/6/21 2:03 PM, Peter Xu wrote: On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote: Kernel commit a85cbe6159ff ("uapi: move constants from to ") breaks our script because of the unrecognized include. Let's add that to our processing. Signed-off-by: Eric Farman --- scripts/update-linux-headers.sh | 5 - 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh index 9efbaf2f84..fa6f2b6272 100755 --- a/scripts/update-linux-headers.sh +++ b/scripts/update-linux-headers.sh @@ -41,6 +41,7 @@ cp_portable() { -e 'pvrdma_verbs' \ -e 'drm.h' \ -e 'limits' \ + -e 'linux/const' \ -e 'linux/kernel' \ -e 'linux/sysinfo' \ -e 'asm-generic/kvm_para' \ @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \ "$tmpdir/include/linux/input.h" \ "$tmpdir/include/linux/input-event-codes.h" \ "$tmpdir/include/linux/pci_regs.h" \ - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \ + "$tmpdir/include/linux/ethtool.h" \ + "$tmpdir/include/linux/const.h" \ + "$tmpdir/include/linux/kernel.h" \ "$tmpdir/include/linux/vhost_types.h" \ "$tmpdir/include/linux/sysinfo.h"; do cp_portable "$i" "$output/include/standard-headers/linux" -- 2.17.1 So I think I came to the same change when trying to update the headers. :) Reviewed-by: Peter Xu Thank you! :) Could I ask why the const.h is installed into include/standard-headers/linux rather than linux-headers/linux? When I was working on my version I failed to figure out the difference. Considering the main difference is whether the header file is copied directly or edited with a bunch of substitutions, and const.h doesn't get modified by those substitutions, I suppose it could go in linux-headers itself. But I opted to just keep it near its friends (ethtool.h and kernel.h both include const.h, and end up including if_ether.h, sysinfo.h, and types.h) in include/standard-headers. One answer is ethtool.h is there which included const.h, but I guess that's not the real one. Thanks,
Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On 1/4/21 9:20 PM, Eric Farman wrote: > Kernel commit a85cbe6159ff ("uapi: move constants from > to ") breaks our script > because of the unrecognized include. Let's add that to > our processing. > > Signed-off-by: Eric Farman > --- > scripts/update-linux-headers.sh | 5 - > 1 file changed, 4 insertions(+), 1 deletion(-) Reviewed-by: Philippe Mathieu-Daudé
Re: [PATCH v3 1/3] update-linux-headers: Include const.h
On Mon, Jan 04, 2021 at 09:20:55PM +0100, Eric Farman wrote: > Kernel commit a85cbe6159ff ("uapi: move constants from > to ") breaks our script > because of the unrecognized include. Let's add that to > our processing. > > Signed-off-by: Eric Farman > --- > scripts/update-linux-headers.sh | 5 - > 1 file changed, 4 insertions(+), 1 deletion(-) > > diff --git a/scripts/update-linux-headers.sh b/scripts/update-linux-headers.sh > index 9efbaf2f84..fa6f2b6272 100755 > --- a/scripts/update-linux-headers.sh > +++ b/scripts/update-linux-headers.sh > @@ -41,6 +41,7 @@ cp_portable() { > -e 'pvrdma_verbs' \ > -e 'drm.h' \ > -e 'limits' \ > + -e 'linux/const' \ > -e 'linux/kernel' \ > -e 'linux/sysinfo' \ > -e 'asm-generic/kvm_para' \ > @@ -190,7 +191,9 @@ for i in "$tmpdir"/include/linux/*virtio*.h \ > "$tmpdir/include/linux/input.h" \ > "$tmpdir/include/linux/input-event-codes.h" \ > "$tmpdir/include/linux/pci_regs.h" \ > - "$tmpdir/include/linux/ethtool.h" "$tmpdir/include/linux/kernel.h" \ > + "$tmpdir/include/linux/ethtool.h" \ > + "$tmpdir/include/linux/const.h" \ > + "$tmpdir/include/linux/kernel.h" \ > "$tmpdir/include/linux/vhost_types.h" \ > "$tmpdir/include/linux/sysinfo.h"; do > cp_portable "$i" "$output/include/standard-headers/linux" > -- > 2.17.1 So I think I came to the same change when trying to update the headers. :) Reviewed-by: Peter Xu Could I ask why the const.h is installed into include/standard-headers/linux rather than linux-headers/linux? When I was working on my version I failed to figure out the difference. One answer is ethtool.h is there which included const.h, but I guess that's not the real one. Thanks, -- Peter Xu