On 04/11, Thomas Gleixner wrote:
>
> On Thu, Apr 11 2024 at 13:44, Mark Brown wrote:
> >
> > Further to my previous mail it's also broken the arm64 selftest builds,
> > they use kselftest.h with nolibc in order to test low level
> > functionality mainly used by libc implementations and nolibc doesn't
> > implement uname():
> >
> > In file included from za-fork.c:12:
> > ../../kselftest.h:433:17: error: variable has incomplete type 'struct 
> > utsname'
> >         struct utsname info;
> >                        ^
> > ../../kselftest.h:433:9: note: forward declaration of 'struct utsname'
> >         struct utsname info;
> >                ^
> > ../../kselftest.h:435:6: error: call to undeclared function 'uname'; ISO 
> > C99 and later do not support implicit function declarations 
> > [-Wimplicit-function-declaration]
> >         if (uname(&info) || sscanf(info.release, "%u.%u.", &major, &minor) 
> > != 2)
> >             ^
> > ../../kselftest.h:435:22: error: call to undeclared function 'sscanf'; ISO 
> > C99 and later do not support implicit function declarations 
> > [-Wimplicit-function-declaration]
> >         if (uname(&info) || sscanf(info.release, "%u.%u.", &major, &minor) 
> > != 2)
>
> Grrr. Let me stare at this.

Damn ;)

Can't we just turn ksft_min_kernel_version() into

        static inline int ksft_min_kernel_version(unsigned int min_major,
                                                  unsigned int min_minor)
        {
        #ifdef NOLIBC
                return -1;
        #else
                unsigned int major, minor;
                struct utsname info;

                if (uname(&info) || sscanf(info.release, "%u.%u.", &major, 
&minor) != 2)
                       ksft_exit_fail_msg("Can't parse kernel version\n");

                return major > min_major || (major == min_major && minor >= 
min_minor);
        #endif
        }

?

Not sure what should check_timer_distribution() do in this case, to me
ksft_test_result_fail() is fine.

Oleg.


Reply via email to