svn commit: trunk/uClibc/test/signal

vapier at uclibc.org vapier at uclibc.org
Wed Feb 15 05:03:51 UTC 2006


Author: vapier
Date: 2006-02-14 21:03:49 -0800 (Tue, 14 Feb 2006)
New Revision: 14039

Log:
grab some more tests from glibc

Added:
   trunk/uClibc/test/signal/tst-raise.c
   trunk/uClibc/test/signal/tst-signal.c
   trunk/uClibc/test/signal/tst-sigset.c
   trunk/uClibc/test/signal/tst-sigsimple.c


Changeset:
Added: trunk/uClibc/test/signal/tst-raise.c
===================================================================
--- trunk/uClibc/test/signal/tst-raise.c	2006-02-15 04:58:43 UTC (rev 14038)
+++ trunk/uClibc/test/signal/tst-raise.c	2006-02-15 05:03:49 UTC (rev 14039)
@@ -0,0 +1,63 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Jakub Jelinek <jakub at redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <string.h>
+#include <error.h>
+#include <signal.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+volatile int count;
+
+void
+sh (int sig)
+{
+  ++count;
+}
+
+int
+main (void)
+{
+  struct sigaction sa;
+  sa.sa_handler = sh;
+  sigemptyset (&sa.sa_mask);
+  sa.sa_flags = 0;
+  if (sigaction (SIGUSR1, &sa, NULL) < 0)
+    {
+      printf ("sigaction failed: %s\n", strerror(errno));
+      exit (1);
+    }
+  if (raise (SIGUSR1) < 0)
+    {
+      printf ("first raise failed: %s\n", strerror(errno));
+      exit (1);
+    }
+  if (raise (SIGUSR1) < 0)
+    {
+      printf ("second raise failed: %s\n", strerror(errno));
+      exit (1);
+    }
+  if (count != 2)
+    {
+      printf ("signal handler not called 2 times\n");
+      exit (1);
+    }
+  exit (0);
+}

Added: trunk/uClibc/test/signal/tst-signal.c
===================================================================
--- trunk/uClibc/test/signal/tst-signal.c	2006-02-15 04:58:43 UTC (rev 14038)
+++ trunk/uClibc/test/signal/tst-signal.c	2006-02-15 05:03:49 UTC (rev 14039)
@@ -0,0 +1,44 @@
+#include <signal.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+int win = 0;
+
+static void
+handler (int sig)
+{
+  printf ("Received signal %d (%s).\n", sig, strsignal(sig));
+  win = 1;
+}
+
+int
+main (void)
+{
+  if (signal (SIGTERM, handler) == SIG_ERR)
+    {
+      perror ("signal: SIGTERM");
+      exit (EXIT_FAILURE);
+    }
+
+  puts ("Set handler.");
+
+  printf ("Sending myself signal %d.\n", SIGTERM);
+  fflush (stdout);
+
+  if (raise (SIGTERM) < 0)
+    {
+      perror ("raise: SIGTERM");
+      exit (EXIT_FAILURE);
+    }
+
+  if (!win)
+    {
+      puts ("Didn't get any signal.  Test FAILED!");
+      exit (EXIT_FAILURE);
+    }
+
+  puts ("Got a signal.  Test succeeded.");
+
+  return EXIT_SUCCESS;
+}

Added: trunk/uClibc/test/signal/tst-sigset.c
===================================================================
--- trunk/uClibc/test/signal/tst-sigset.c	2006-02-15 04:58:43 UTC (rev 14038)
+++ trunk/uClibc/test/signal/tst-sigset.c	2006-02-15 05:03:49 UTC (rev 14039)
@@ -0,0 +1,45 @@
+/* Test sig*set functions.  */
+
+#include <signal.h>
+#include <string.h>
+#include <errno.h>
+#include <stdio.h>
+
+#define TEST_FUNCTION do_test ()
+static int
+do_test (void)
+{
+  int result = 0;
+  int sig = -1;
+
+#define TRY(call)							      \
+  if (call)								      \
+    {									      \
+      printf ("%s (sig = %d): %s\n", #call, sig, strerror(errno));			      \
+      result = 1;							      \
+    }									      \
+  else
+
+
+  sigset_t set;
+  TRY (sigemptyset (&set) != 0);
+
+#ifdef SIGRTMAX
+  int max_sig = SIGRTMAX;
+#else
+  int max_sig = NSIG - 1;
+#endif
+
+  for (sig = 1; sig <= max_sig; ++sig)
+    {
+      TRY (sigismember (&set, sig) != 0);
+      TRY (sigaddset (&set, sig) != 0);
+      TRY (sigismember (&set, sig) == 0);
+      TRY (sigdelset (&set, sig) != 0);
+      TRY (sigismember (&set, sig) != 0);
+    }
+
+  return result;
+}
+
+#include "../test-skeleton.c"

Added: trunk/uClibc/test/signal/tst-sigsimple.c
===================================================================
--- trunk/uClibc/test/signal/tst-sigsimple.c	2006-02-15 04:58:43 UTC (rev 14038)
+++ trunk/uClibc/test/signal/tst-sigsimple.c	2006-02-15 05:03:49 UTC (rev 14039)
@@ -0,0 +1,57 @@
+/* Copyright (C) 2003 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper at redhat.com>, 2003.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library 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
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, write to the Free
+   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+   02111-1307 USA.  */
+
+#include <errno.h>
+#include <signal.h>
+#include <stdio.h>
+#include <string.h>
+
+
+static int
+do_test (void)
+{
+  int result = 0;
+  int e;
+
+#define RUN(test) \
+  errno = 0;								      \
+  e = test;								      \
+  if (e != -1)								      \
+    {									      \
+      printf ("%s returned %d\n", #test, e);				      \
+      result = 1;							      \
+    }									      \
+  else if (errno != EINVAL)						      \
+    {									      \
+      printf ("%s didn't set errno to EINVAL (%s instead)\n",		      \
+	      #test, strerror (errno));					      \
+      result = 1;							      \
+    }
+
+  RUN (sighold (-1));
+  RUN (sighold (_NSIG + 100));
+
+  RUN (sigrelse (-1));
+  RUN (sigrelse (_NSIG + 100));
+
+  return result;
+}
+
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"




More information about the uClibc-cvs mailing list