From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from sfi-mx-4.v28.ch3.sourceforge.com ([172.29.28.124] helo=mx.sourceforge.net) by 235xhf1.ch3.sourceforge.com with esmtp (Exim 4.69) (envelope-from ) id 1MGIIb-0007hZ-SJ for ltp-list@lists.sourceforge.net; Mon, 15 Jun 2009 19:56:57 +0000 Received: from [32.97.110.153] (helo=e35.co.us.ibm.com) by 1b2kzd1.ch3.sourceforge.com with esmtps (TLSv1:AES256-SHA:256) (Exim 4.69) id 1MGHg5-0002G8-H8 for ltp-list@lists.sourceforge.net; Mon, 15 Jun 2009 19:17:10 +0000 From: Subrata Modak In-Reply-To: <20090612132102.32046.21700.sendpatchset@subratamodak.linux.ibm.com> References: <20090612132102.32046.21700.sendpatchset@subratamodak.linux.ibm.com> Date: Tue, 16 Jun 2009 00:45:37 +0530 Message-Id: <1245093337.4871.37.camel@subratamodak.linux.ibm.com> Mime-Version: 1.0 Subject: Re: [LTP] [PATCH] Add eventfd2_03 test for eventfd2() syscall [Earlier Subject: (testing)improve support for semaphore-like behavior] Reply-To: subrata@linux.vnet.ibm.com List-Id: Linux Test Project General Discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ltp-list-bounces@lists.sourceforge.net To: Davide Libenzi Cc: ltp-list , Michael Kerrisk , Ulrich Drepper On Fri, 2009-06-12 at 18:51 +0530, Subrata Modak wrote: > >On Thu, 2009-06-11 at 19:50 -0700, Davide Libenzi wrote: > >On Fri, 12 Jun 2009, Subrata Modak wrote: > > > > > Hi Davide, > > > > > > Your had introduced an improvement to support for semaphore-like > > > behavior in eventfd for linux-2.6.30. And also have a small test program > > > envisaged through: > > > http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=bcd0b235bf3808dec5115c381cd55568f63b85f0, > > > http://www.xmailserver.org/eventfd-sem.c, > > > > > > Would you be willing to share this test program for inclusion in Linux > > > Test Project (http://ltp.sourceforge.net/) under GPLv2 ? If affirmative, > > > can you confirm by replying to this mail with your consent/Sign-off. > > > > Sure, it's all yours ;) Thanks David. Regards-- Subrata > > So, here it goes. The following patch integrates this to LTP. > > Signed-off-by: Subrata Modak > Original-author-and-copyright-holder: Davide Libenzi > To: Davide Libenzi > Cc: Michael Kerrisk > Cc: Ulrich Drepper > Cc: ltp-list > --- > > --- ltp-full-20090531.orig/runtest/syscalls 2009-06-12 17:03:15.000000000 +0530 > +++ ltp-full-20090531/runtest/syscalls 2009-06-12 18:13:49.000000000 +0530 > @@ -126,6 +126,7 @@ eventfd01 eventfd01 > > eventfd2_01 eventfd2_01 > eventfd2_02 eventfd2_02 > +eventfd2_03 eventfd2_03 > > execl01 execl01 > execle01 execle01 > --- ltp-full-20090531.orig/testcases/kernel/syscalls/eventfd2/eventfd2_03.c 1970-01-01 05:30:00.000000000 +0530 > +++ ltp-full-20090531/testcases/kernel/syscalls/eventfd2/eventfd2_03.c 2009-06-12 18:17:49.000000000 +0530 > @@ -0,0 +1,135 @@ > +/* > + * eventfd-sem by Davide Libenzi (Simple test for eventfd sempahore) > + * Copyright (C) 2009 Davide Libenzi > + * > + * 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 > + * > + * Davide Libenzi > + * Reference: http://git.kernel.org/?p=linux/kernel/git/torvalds/linux-2.6.git;a=commitdiff;h=bcd0b235bf3808dec5115c381cd55568f63b85f0 > + * Reference: http://www.xmailserver.org/eventfd-sem.c > + * eventfd: testing improved support for semaphore-like behavior in linux-2.6.30 > + * > + */ > + > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > +#include > + > +char *TCID = "eventfd2_02"; /* test program identifier*/ > + > +#ifndef EFD_SEMLIKE > +#define EFD_SEMLIKE (1 << 0) > +#endif > + > +#ifndef __NR_eventfd2 > +#if defined(__x86_64__) > +#define __NR_eventfd2 290 > +#elif defined(__i386__) > +#define __NR_eventfd2 328 > +#else > +#error Cannot detect your architecture! > +#endif > +#endif > + > + > +static int eventfd2(int count, int flags) { > + return syscall(__NR_eventfd2, count, flags); > +} > + > +static void xsem_wait(int fd) { > + u_int64_t cntr; > + > + if (read(fd, &cntr, sizeof(cntr)) != sizeof(cntr)) { > + perror("reading eventfd"); > + exit(1); > + } > + fprintf(stdout, "[%u] wait completed on %d: count=%llu\n", > + getpid(), fd, cntr); > +} > + > +static void xsem_post(int fd, int count) { > + u_int64_t cntr = count; > + > + if (write(fd, &cntr, sizeof(cntr)) != sizeof(cntr)) { > + perror("writing eventfd"); > + exit(1); > + } > +} > + > +static void sem_player(int fd1, int fd2) { > + fprintf(stdout, "[%u] posting 1 on %d\n", getpid(), fd1); > + xsem_post(fd1, 1); > + > + fprintf(stdout, "[%u] waiting on %d\n", getpid(), fd2); > + xsem_wait(fd2); > + > + fprintf(stdout, "[%u] posting 1 on %d\n", getpid(), fd1); > + xsem_post(fd1, 1); > + > + fprintf(stdout, "[%u] waiting on %d\n", getpid(), fd2); > + xsem_wait(fd2); > + > + fprintf(stdout, "[%u] posting 5 on %d\n", getpid(), fd1); > + xsem_post(fd1, 5); > + > + fprintf(stdout, "[%u] waiting 5 times on %d\n", getpid(), fd2); > + xsem_wait(fd2); > + xsem_wait(fd2); > + xsem_wait(fd2); > + xsem_wait(fd2); > + xsem_wait(fd2); > +} > + > +static void usage(char const *prg) { > + fprintf(stderr, "use: %s [-h]\n", prg); > +} > + > +int main (int argc, char **argv) { > + int c, fd1, fd2, status; > + pid_t cpid_poster, cpid_waiter; > + > + while ((c = getopt(argc, argv, "h")) != -1) { > + switch (c) { > + default: > + usage(argv[0]); > + return 1; > + } > + } > + if ((fd1 = eventfd2(0, EFD_SEMLIKE)) == -1 || > + (fd2 = eventfd2(0, EFD_SEMLIKE)) == -1) { > + perror("eventfd2"); > + return 1; > + } > + if ((cpid_poster = fork()) == 0) { > + sem_player(fd1, fd2); > + exit(0); > + } > + if ((cpid_waiter = fork()) == 0) { > + sem_player(fd2, fd1); > + exit(0); > + } > + waitpid(cpid_poster, &status, 0); > + waitpid(cpid_waiter, &status, 0); > + > + return 0; > +} > + > + > > --- > Regards-- > Subrata > > > > > - Davide > > > > ------------------------------------------------------------------------------ Crystal Reports - New Free Runtime and 30 Day Trial Check out the new simplified licensing option that enables unlimited royalty-free distribution of the report engine for externally facing server and web deployment. http://p.sf.net/sfu/businessobjects _______________________________________________ Ltp-list mailing list Ltp-list@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/ltp-list