On Thu, Sep 11, 2008 at 9:24 AM, Subrata Modak
<[EMAIL PROTECTED]> wrote:
> On Thu, 2008-09-11 at 21:47 +0900, Masatake YAMATO wrote:
>> > Finally i tested them and were satisfied with the way it built,
>> > installed and ran on 4 arch i tested. But, i am puzzled by one thing. On
>> > all systems (even on kernel 2.6.26 for i386, ppc64, x86_64) it gave me
>> > the following output:
>> >
>> > # ./testcases/bin/signalfd01
>> > signalfd01    1  CONF  :  System doesn't support execution of the test
>> > # echo $?
>> > 0
>> >
>> > While i found that signalfd.h is existent here:
>> > /usr/include/linux/signalfd.h
>> > (in one of the machines)
>> >
>> > Should we actually find for:
>> > /usr/include/sys/signalfd.h ?
>> >
>> > instead of:
>> > /usr/include/linux/signalfd.h
>> >
>> > Should we actually wait for a higher gcc release for this header file. I
>> > have even the following gcc in one of my test machine:
>> >
>> > # gcc --version
>> > gcc (GCC) 4.1.3 20070929 (prerelease) (Ubuntu 4.1.2-16ubuntu2)
>> >
>> > Anyways, the tests are now part of LTP. I hope i will be able to run the
>> > actual test code soon on some machine. Thanks.
>>
>> In such situation what we should do?
>> I'd like to hear about the basic policy from you?
>
> Hmmm...!! That puts me in a difficult position. So far u personally
> think, i would like things to get tested if the running kernel has the
> support for it, even, if the installed glibc does not have support for
> this. We would then be able to test features in latest kernels even if
> glibc is far away to include it´s support. It will mean putting some
> glibc type code in the test case(s). Not sure what others think on this.
>
> Regards--
> Subrata
>
>> How strongly should we seek the portability of test case?
>>
>> See the patch attached to this mail.
>> If I copy codes from glibc, even on your systems the test case
>> for signalfd can be run. Do you want this kind of effort?
>>
>>
>>
>> Signed-off-by: Masatake YAMATO <[EMAIL PROTECTED]>
>>
>> diff --git a/testcases/kernel/syscalls/signalfd/Makefile 
>> b/testcases/kernel/syscalls/signalfd/Makefile
>> index be34bb1..db37fd4 100644
>> --- a/testcases/kernel/syscalls/signalfd/Makefile
>> +++ b/testcases/kernel/syscalls/signalfd/Makefile
>> @@ -20,7 +20,9 @@ include ../utils/cond.mk
>>
>>
>>  CFLAGS += -I../../../../include \
>> -     $(call check_header,sys/signalfd.h, -DHAS_SIGNALFD_H, ) -Wall
>> +     $(call check_header,sys/signalfd.h, -DHAS_SYS_SIGNALFD_H 
>> -DHAS_SIGNALFD, )     \
>> +     $(call check_header,linux/signalfd.h, -DHAS_LINUX_SIGNALFD_H 
>> -DHAS_SIGNALFD, ) \
>> +     -Wall
>>  LDLIBS += -L../../../../lib -lltp
>>
>>  SRCS    = $(wildcard *.c)
>> diff --git a/testcases/kernel/syscalls/signalfd/signalfd01.c 
>> b/testcases/kernel/syscalls/signalfd/signalfd01.c
>> index da3b258..e9a3b60 100644
>> --- a/testcases/kernel/syscalls/signalfd/signalfd01.c
>> +++ b/testcases/kernel/syscalls/signalfd/signalfd01.c
>> @@ -50,9 +50,31 @@ TCID_DEFINE(signalfd01);
>>  int TST_TOTAL = 1;
>>  extern int Tst_count;
>>
>> -# ifdef HAS_SIGNALFD_H
>> +# ifdef HAS_SIGNALFD
>> +
>> +#ifdef HAS_SYS_SIGNALFD_H
>> +
>>  #include <sys/signalfd.h>
>>
>> +#elif HAS_LINUX_SIGNALFD_H
>> +
>> +#include <linux/types.h>
>> +#include <linux/signalfd.h>
>> +#include "linux_syscall_numbers.h"
>> +
>> +#ifndef __NR_signalfd
>> +#define __NR_signalfd 0
>> +#endif
>> +
>> +int
>> +signalfd(int fd, const sigset_t *mask, int flags)
>> +{
>> +  /* Taken from GLIBC. */
>> +  return (syscall(__NR_signalfd, fd, mask, _NSIG / 8));
>> +}
>> +
>> +#endif
>> +
>>  void cleanup(void);
>>  void setup(void);
>>
>> @@ -315,7 +337,7 @@ cleanup(void)
>>  }
>>
>>
>> -#else  /* !HAS_SIGNALFD_H */
>> +#else  /* !HAS_SIGNALFD */
>>
>>  int
>>  main(int argc, char** argv)
>> @@ -326,4 +348,4 @@ main(int argc, char** argv)
>>  }
>>
>>
>> -#endif /* !HAS_SIGNALFD_H */
>> +#endif /* !HAS_SIGNALFD */

Why not default with whatever's the newest standard, then fallback to
the deprecated version?

FWIW, not all systems have signalfd.h at:

/usr/include/linux/

not should you look for that header there if cross-compilation is
being performed.

The implementer should pass that in the CROSS_CFLAGS, like so make
CROSS_CFLAGS="-I/usr/include/linux"

Some food for thought.

Cheers,
-Garrett

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to