Re: [arc-linux-dev] Re: UAPI for new arches (was Re: [GIT PULL] User API Disintegrate: Preparatory patches)
From: Vineet Gupta <hidden>
Date: 2012-11-12 10:58:17
Also in:
lkml
On Friday 09 November 2012 04:49 AM, David Howells wrote:
Vineet Gupta [off-list ref] wrote:quoted
While I'd done some of the prep work in my code such as splitting __KERNEL__ && __ASSEMBLY__ into two separate lines, majority of orig headers didn't have #ifdef __KERNEL__ guard despite the code not being meant for user-space ABI. Is that fundamental to UAPI split scriptingYes. My scripts work purely along __KERNEL__ lines. If there are no __KERNEL__ markers and the header is marked for export, it is simply moved.
Understood.
quoted
because it seems to be causing setup.h to be in uapi despite seemingly being kernel internal only.Check also include/uapi/asm-generic/Kbuild.asm. That exports setup.h, whether you think it should be exported or not.
Correct. And if there's nothing to export in there the script will not generate the empty uapi sibling.
quoted
Per you email from last week, When I ran the disintergrate-one.pl script myself I saw a whole bunch of empty UAPI files being generated with references in orig header. I'm not sure what I'm doing wrong.Can you give an example of such a header?
tlb.h - despite having __KERNEL__ guard in orig file. Here's how I did it. 1. In my orig tree, I created arch/arc/include/uapi/asm/Kbuild, with following 2 lines # UAPI Header export list include include/uapi/asm-generic/Kbuild.asm 2. ./disintegrate-one.pl arch/arc/include/asm/tlb.h arch/arc/include/uapi/asm/tlb.h This generates a empty uapi/asm/tlb.h, a reference to it in asm/tlb.h and is also exported from Kbuild.asm - all 3 of which are wrong. But now that I think about it - I was wrong to call this script for all/any arch headers. It should be done only for the ones in include/uapi/asm-generic/Kbuild.asm or any specific ones that arch wants to export (cachectl.h for our case).
quoted
For any ABI changes to headers per review of the new port on list (e.g. don't export pt_regs) would mean moving the code manually from uapi to orig header - right. And if the file becomes empty just nuke it completely.You can't necessarily remove a UAPI header completely. Userspace may depend on its existence, even if it gets no content from there.quoted
How do you reckon we go about fixing these. I don't want to bother you multiple times hence it would be best if I could reproduce this at my end.The best advice I can give you without more specific examples is to compare what's in your arch's headers to those of, say, hexagon or arm64. Those are recent additions and should be pretty clean as to what they contain. David