Re: [RFC PATCH v1 1/9] selftest: sync: basic tests for sw_sync framework

From: Emil Velikov
Date: Mon Mar 28 2016 - 09:48:41 EST

On 28 March 2016 at 13:20, Emilio LÃpez <emilio.lopez@xxxxxxxxxxxxxxx> wrote:
> Hi,
> El 28/03/16 a las 08:56, Emil Velikov escribiÃ:
>> Hi Emilio,
>> On 9 March 2016 at 15:28, Emilio LÃpez <emilio.lopez@xxxxxxxxxxxxxxx>
>> wrote:
>>> These tests are based on the libsync test suite from Android.
>>> This commit lays the ground for future tests, as well as includes
>>> tests for a variety of basic allocation commands.
>>> Signed-off-by: Gustavo Padovan <gustavo.padovan@xxxxxxxxxxxxxxx>
>>> Signed-off-by: Emilio LÃpez <emilio.lopez@xxxxxxxxxxxxxxx>
>>> ---
>>> tools/testing/selftests/sync/sync.h | 119 ++++++++++++++++++
>> Admittedly I know nothing about the kernel selftests although copying
>> the UAPI header, seems to defeat the purpose of this exercise.
>> Shouldn't one reuse the existing header ? It would even cause issues
>> as the interface gets updated (iirc Gustavo changed the ioctl numbers
>> and/or header name with latter series).
> The problem is that one cannot use the system header without having built
> and installed the kernel first, which is rather problematic for eg.
> crosscompiling or virtualization. I discussed this with Gustavo and we
> agreed that the best way forward would be to copy the interfaces, as
> suggested by kernelnewbies' wiki[0]:
In the case of using a system header one can just `make
headers_install' without building the kernel, as mentioned in the very
same page ;-) Although I wasn't thinking that one should be using the
header already available in tree. After all this series is not
supposed to land before Gustavo's work, is it ?

>From a quick skim though the selftests, I cannot see cases where UAPI
headers are copied/duplicated.

> """
> The correct way to address this problem is to isolate the specific
> interfaces that you need, e.g. a single header file that is patched in a new
> kernel providing the ioctl numbers for a character device used by your
> program. In your own program, add a copy of that source file, with a notice
> that it should be kept in sync with new kernel versions.
> """
My understanding of the article is that it refers to building user
space programs that do _not_ live in the same tree as the kernel. Am I
missing something ?