Yamato,
On Wed, 2008-09-10 at 17:28 +0900, Masatake YAMATO wrote:
> > Yamato,
> >
> > Send these series (1-3) as a patch either embedded in the mail, or, as
> > an attachment. But, as Vijay wants it in mail, better embed in mail.
> > What you have done is just pasted the code. Instead, create patches and
> > then paste patch(s) like the following:
>
> Like this?
> What kind of command line do you use to generate this kind of output?
With evolution, i just can do Insert-text file, which actually puts the
text of already generated patch file. Not sure about other mailers.
> Newly added files are included in my patch. I cannot find good option
> in cvs diff for such purpose. All peope moved to git already?
>
>
> Signed-off-by: Masatake YAMATO <[EMAIL PROTECTED]>
This works for me. I can now apply directly by saving your mail message
as a Patch first. I will test this and get back to you soon. Thanks for
writing this and so many tests for LTP.
Regards--
Subrata
> ---
> signalfd/Makefile | 35 +++++
> signalfd/signalfd01.c | 329
> ++++++++++++++++++++++++++++++++++++++++++++++++++
> utils/cond.mk | 88 +++++++++++++
> 3 files changed, 452 insertions(+)
>
> diff --exclude=CVS --exclude='~' --exclude='\.*' --exclude='_*'
> --exclude='*.patch' -rupN ltp/testcases/kernel/syscalls/signalfd/Makefile
> ltp-hacked/testcases/kernel/syscalls/signalfd/Makefile
> --- ltp/testcases/kernel/syscalls/signalfd/Makefile 1970-01-01
> 09:00:00.000000000 +0900
> +++ ltp-hacked/testcases/kernel/syscalls/signalfd/Makefile 2008-09-10
> 14:35:31.000000000 +0900
> @@ -0,0 +1,35 @@
> +#
> +# Copyright (c) International Business Machines Corp., 2001
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> +# the GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +include ../utils/cond.mk
> +
> +
> +CFLAGS += -I../../../../include \
> + $(call check_header,sys/signalfd.h, -DHAS_SIGNALFD_H, ) -Wall
> +LDLIBS += -L../../../../lib -lltp
> +
> +SRCS = $(wildcard *.c)
> +TARGETS = $(patsubst %.c,%,$(SRCS))
> +
> +all: $(TARGETS)
> +
> +install:
> + @set -e; for i in $(TARGETS); do ln -f $$i ../../../bin/$$i ; done
> +
> +clean:
> + rm -f $(TARGETS)
> diff --exclude=CVS --exclude='~' --exclude='\.*' --exclude='_*'
> --exclude='*.patch' -rupN ltp/testcases/kernel/syscalls/signalfd/signalfd01.c
> ltp-hacked/testcases/kernel/syscalls/signalfd/signalfd01.c
> --- ltp/testcases/kernel/syscalls/signalfd/signalfd01.c 1970-01-01
> 09:00:00.000000000 +0900
> +++ ltp-hacked/testcases/kernel/syscalls/signalfd/signalfd01.c
> 2008-09-10 14:35:23.000000000 +0900
> @@ -0,0 +1,329 @@
> +/*
> + *
> + * Copyright (c) Red Hat Inc., 2008
> + *
> + * This program is free software; you can redistribute it and/or modify
> + * it under the terms of the GNU General Public License as published by
> + * the Free Software Foundation; either version 2 of the License, or
> + * (at your option) any later version.
> + *
> + * This program is distributed in the hope that it will be useful,
> + * but WITHOUT ANY WARRANTY; without even the implied warranty of
> + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> + * the GNU General Public License for more details.
> + *
> + * You should have received a copy of the GNU General Public License
> + * along with this program; if not, write to the Free Software
> + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
> + */
> +
> +/*
> + * NAME
> + * signalfd01.c
> + *
> + * DESCRIPTION
> + * Check signalfd can receive signals
> + *
> + * USAGE
> + * signalfd01
> + *
> + * HISTORY
> + * 9/2008 Initial version by Masatake YAMATO <[EMAIL PROTECTED]>
> + *
> + * RESTRICTIONS
> + * None
> + */
> +# define _GNU_SOURCE
> +
> +
> +#include "test.h"
> +#include "usctest.h"
> +
> +#include <errno.h>
> +#include <signal.h>
> +#include <sys/types.h>
> +#include <unistd.h>
> +#include <fcntl.h>
> +
> +
> +TCID_DEFINE(signalfd01);
> +int TST_TOTAL = 1;
> +extern int Tst_count;
> +
> +# ifdef HAS_SIGNALFD_H
> +#include <sys/signalfd.h>
> +
> +void cleanup(void);
> +void setup(void);
> +
> +
> +int
> +do_test1(int ntst, int sig)
> +{
> + int sfd_for_next;
> + int sfd;
> + sigset_t mask;
> + pid_t pid;
> + struct signalfd_siginfo fdsi;
> + ssize_t s;
> +
> + sigemptyset(&mask);
> + sigaddset(&mask, sig);
> + if (sigprocmask(SIG_BLOCK, &mask, NULL) < 0) {
> + tst_brkm(TBROK, cleanup,
> + "sigprocmask() Failed: errno=%d : %s",
> + errno,
> + strerror(errno));
> + }
> +
> + TEST(signalfd(-1, &mask, 0));
> +
> + if ((sfd = TEST_RETURN) == -1) {
> + tst_resm(TFAIL,
> + "signalfd() Failed, errno=%d : %s",
> + TEST_ERRNO, strerror(TEST_ERRNO));
> + sfd_for_next = -1;
> + return sfd_for_next;
> +
> + } else if (!STD_FUNCTIONAL_TEST) {
> + tst_resm(TPASS, "signalfd is created successfully");
> + sfd_for_next = sfd;
> + goto out;
> + }
> +
> +
> + if (fcntl(sfd, F_SETFL, O_NONBLOCK) == -1) {
> + close(sfd);
> + tst_brkm(TBROK, cleanup,
> + "setting signalfd nonblocking mode failed: errno=%d :
> %s",
> + errno,
> + strerror(errno));
> + }
> +
> +
> + pid = getpid();
> + if (kill(pid, sig) == -1) {
> + close(sfd);
> + tst_brkm(TBROK, cleanup,
> + "kill(self, %s) failed: errno=%d : %s",
> + strsignal(sig),
> + errno,
> + strerror(errno));
> + }
> +
> + s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));
> + if ((s > 0) && (s != sizeof(struct signalfd_siginfo))) {
> + tst_resm(TFAIL,
> + "getting incomplete signalfd_siginfo data: "
> + "actual-size=%d, expected-size= %d",
> + s, sizeof(struct signalfd_siginfo));
> + sfd_for_next = -1;
> + close(sfd);
> + goto out;
> + }
> + else if (s < 0) {
> + if (errno == EAGAIN) {
> + tst_resm(TFAIL,
> + "signalfd_siginfo data is not delivered yet");
> + sfd_for_next = -1;
> + close(sfd);
> + goto out;
> + } else {
> + close(sfd);
> + tst_brkm(TBROK, cleanup,
> + "read signalfd_siginfo data failed: errno=%d :
> %s",
> + errno,
> + strerror(errno));
> + }
> + }
> + else if (s == 0) {
> + tst_resm(TFAIL, "got EOF unexpectedly");
> + sfd_for_next = -1;
> + close(sfd);
> + goto out;
> + }
> +
> + if (fdsi.ssi_signo == sig) {
> + tst_resm(TPASS, "got expected signal");
> + sfd_for_next = sfd;
> + goto out;
> + }
> + else {
> + tst_resm(TFAIL, "got unexpected signal: signal=%d : %s",
> + fdsi.ssi_signo,
> + strsignal(fdsi.ssi_signo));
> + sfd_for_next = -1;
> + close(sfd);
> + goto out;
> + }
> +
> +out:
> + return sfd_for_next;
> +}
> +
> +
> +void
> +do_test2(int ntst, int fd, int sig)
> +{
> + int sfd;
> + sigset_t mask;
> + pid_t pid;
> + struct signalfd_siginfo fdsi;
> + ssize_t s;
> +
> +
> + sigemptyset(&mask);
> + sigaddset(&mask, sig);
> + if (sigprocmask(SIG_BLOCK, &mask, NULL) < 0) {
> + close(fd);
> + tst_brkm(TBROK, cleanup,
> + "sigprocmask() Failed: errno=%d : %s",
> + errno,
> + strerror(errno));
> + }
> +
> + TEST(signalfd(fd, &mask, 0));
> +
> + if ((sfd = TEST_RETURN) == -1) {
> + tst_resm(TFAIL,
> + "reassignment the file descriptor by signalfd()
> failed, errno=%d : %s",
> + TEST_ERRNO, strerror(TEST_ERRNO));
> + return;
> + } else if (sfd != fd) {
> + tst_resm(TFAIL,
> + "different fd is returned in reassignment:
> expected-fd=%d, actual-fd=%d",
> + fd, sfd);
> + close(sfd);
> + return;
> +
> + } else if (!STD_FUNCTIONAL_TEST) {
> + tst_resm(TPASS, "signalfd is successfully reassigned");
> + goto out;
> + }
> +
> + pid = getpid();
> + if (kill(pid, sig) == -1) {
> + close(sfd);
> + tst_brkm(TBROK, cleanup,
> + "kill(self, %s) failed: errno=%d : %s",
> + strsignal(sig),
> + errno,
> + strerror(errno));
> + }
> +
> + s = read(sfd, &fdsi, sizeof(struct signalfd_siginfo));
> + if ((s > 0) && (s != sizeof(struct signalfd_siginfo))) {
> + tst_resm(TFAIL,
> + "getting incomplete signalfd_siginfo data: "
> + "actual-size=%d, expected-size= %d",
> + s, sizeof(struct signalfd_siginfo));
> + goto out;
> + }
> + else if (s < 0) {
> + if (errno == EAGAIN) {
> + tst_resm(TFAIL,
> + "signalfd_siginfo data is not delivered yet");
> + goto out;
> + } else {
> + close(sfd);
> + tst_brkm(TBROK, cleanup,
> + "read signalfd_siginfo data failed: errno=%d :
> %s",
> + errno,
> + strerror(errno));
> + }
> + }
> + else if (s == 0) {
> + tst_resm(TFAIL, "got EOF unexpectedly");
> + goto out;
> + }
> +
> + if (fdsi.ssi_signo == sig) {
> + tst_resm(TPASS, "got expected signal");
> + goto out;
> + }
> + else {
> + tst_resm(TFAIL, "got unexpected signal: signal=%d : %s",
> + fdsi.ssi_signo,
> + strsignal(fdsi.ssi_signo));
> + goto out;
> + }
> +out:
> + return;
> +}
> +
> +
> +int
> +main(int argc, char** argv)
> +{
> + int lc;
> + char *msg; /* message returned from parse_opts */
> + int sfd;
> +
> + if((tst_kvercmp(2, 6, 22)) < 0)
> + {
> + tst_resm(TWARN, "This test can only run on kernels that are
> 2.6.22 and higher");
> + exit(0);
> + }
> +
> +
> + if ((msg = parse_opts(argc, argv, NULL, NULL)) != NULL) {
> + tst_brkm(TBROK, cleanup, "OPTION PARSING ERROR - %s", msg);
> + }
> +
> + setup ();
> + for (lc = 0; TEST_LOOPING(lc); lc++) {
> + Tst_count = 0;
> +
> + sfd = do_test1(lc, SIGUSR1);
> + if (sfd < 0)
> + continue;
> +
> + do_test2(lc, sfd, SIGUSR2);
> + close(sfd);
> + }
> +
> + cleanup();
> +
> + return 0;
> +}
> +
> +/*
> + * setup() - performs all the ONE TIME setup for this test.
> + */
> +void
> +setup(void)
> +{
> + /* Pause if that option was specified */
> + TEST_PAUSE;
> +}
> +
> +/*
> + * cleanup() - performs all the ONE TIME cleanup for this test at completion
> + * or premature exit.
> + */
> +void
> +cleanup(void)
> +{
> + /*
> + * print timing stats if that option was specified.
> + * print errno log if that option was specified.
> + */
> + TEST_CLEANUP;
> +
> + /* exit with return code appropriate for results */
> + tst_exit();
> +}
> +
> +
> +#else /* !HAS_SIGNALFD_H */
> +
> +int
> +main(int argc, char** argv)
> +{
> + tst_resm(TCONF,
> + "System doesn't support execution of the test");
> + return 0;
> +}
> +
> +
> +#endif /* !HAS_SIGNALFD_H */
> diff --exclude=CVS --exclude='~' --exclude='\.*' --exclude='_*'
> --exclude='*.patch' -rupN ltp/testcases/kernel/syscalls/utils/cond.mk
> ltp-hacked/testcases/kernel/syscalls/utils/cond.mk
> --- ltp/testcases/kernel/syscalls/utils/cond.mk 1970-01-01
> 09:00:00.000000000 +0900
> +++ ltp-hacked/testcases/kernel/syscalls/utils/cond.mk 2008-09-09
> 18:46:22.000000000 +0900
> @@ -0,0 +1,88 @@
> +# cond.mk --- useful functions to write conditions
> +#
> +# Copyright (c) International Business Machines Corp., 2001
> +#
> +# This program is free software; you can redistribute it and/or modify
> +# it under the terms of the GNU General Public License as published by
> +# the Free Software Foundation; either version 2 of the License, or
> +# (at your option) any later version.
> +#
> +# This program is distributed in the hope that it will be useful,
> +# but WITHOUT ANY WARRANTY; without even the implied warranty of
> +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
> +# the GNU General Public License for more details.
> +#
> +# You should have received a copy of the GNU General Public License
> +# along with this program; if not, write to the Free Software
> +# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
> +#
> +
> +# NAME
> +# check_header: Checking the existence of header file.
> +#
> +# SYNOPSIS
> +# $(call check_header,HEADFILE)
> +# $(call check_header,HEADFILE,STRING_IF_FOUND)
> +# $(call check_header,HEADFILE,STRING_IF_FOUND,STRING_IF_NOT_FOUND)
> +#
> +# DESCRIPTION
> +#
> +# check_header checks whether $(CC) can found HEADFILE or not.
> +#
> +# With the first form, "yes" is returned if it is found.
> +# "no" is returned if it is not found.
> +#
> +# With the second form, STRING_IF_FOUND is returned if it is found.
> +# "no" is returned if it is not found.
> +#
> +# With the second form, STRING_IF_FOUND is returned if it is found.
> +# STRING_IF_NOT_FOUND is returned if it is not found.
> +#
> +# EXAMPLES
> +#
> +# (1) yes or no
> +#
> +# include ../utils/cond.mk
> +#
> +# ifeq ($(call check_header,foo.h),yes)
> +# RULES if foo.h is available.
> +# else
> +# RULES IF foo.h is NOT available.
> +# endif
> +#
> +#
> +# (2) adding CFLAGS# CFLAGS += $(call check_header,foo.h,-DHAS_FOO_H, )
> +#
> +# CFLAGS += $(call check_header,foo.h,-DHAS_FOO_H, )
> +#
> +#
> +# NOTE
> +#
> +# Spaces after `,' are not striped automatically.
> +#
> +# The value for CFLAGS is different in following assignment:
> +#
> +# CFLAGS += $(call check_header,foo.h,-DHAS_FOO_H, )
> +# CFLAGS += $(call check_header,foo.h,-DHAS_FOO_H,)
> +#
> +check_header = $(shell
> \
> + if [ "x$(2)" = "x" ]; then FOUND=yes; else FOUND="$(2)"; fi;
> \
> + if [ "x$(3)" = "x" ]; then NOTFOUND=no; else NOTFOUND="$(3)"; fi;
> \
> + if echo "\#include <$(1)>" | $(CC) -E - > /dev/null 2>&1 ;
> \
> + then echo "$${FOUND}" ;
> \
> + else echo "$${NOTFOUND}" ; fi)
> +
> +
> +#COND_MK_DEBUG=yes
> +ifdef COND_MK_DEBUG
> +all:
> + @echo "-DHAS_STDIO_H == $(call check_header,stdio.h,-DHAS_STDIO_H,)"
> + @echo "\" \" == \"$(call check_header,foo.h,-DHAS_FOO_H, )\""
> + @echo "yes == $(call check_header,stdio.h)"
> + @echo "no == $(call check_header,foo.h)"
> + @echo "YES == $(call check_header,stdio.h,YES)"
> + @echo "no == $(call check_header,foo.h,YES)"
> + @echo "YES == $(call check_header,stdio.h,YES,NO)"
> + @echo "NO == $(call check_header,foo.h,YES,NO)"
> +endif
> +# cond.mk ends here.
-------------------------------------------------------------------------
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
[email protected]
https://lists.sourceforge.net/lists/listinfo/ltp-list