[rtems commit] psxhdrs: Add POSIX API Signature Compliance Tests for ucontext.h (GCI 2018)

Joel Sherrill joel at rtems.org
Fri Dec 7 04:28:22 UTC 2018


Module:    rtems
Branch:    master
Commit:    17c32e5d2afe3426509e7c0639136ffc50770373
Changeset: http://git.rtems.org/rtems/commit/?id=17c32e5d2afe3426509e7c0639136ffc50770373

Author:    Jacob Shin <jacobshin313 at gmail.com>
Date:      Thu Dec  6 21:48:46 2018 -0500

psxhdrs: Add POSIX API Signature Compliance Tests for ucontext.h (GCI 2018)

---

 testsuites/psxtests/Makefile.am                    |  6 ++-
 testsuites/psxtests/psxhdrs/ucontext/getcontext.c  | 38 +++++++++++++++
 testsuites/psxtests/psxhdrs/ucontext/makecontext.c | 55 ++++++++++++++++++++++
 testsuites/psxtests/psxhdrs/ucontext/setcontext.c  | 46 ++++++++++++++++++
 testsuites/psxtests/psxhdrs/ucontext/swapcontext.c | 53 +++++++++++++++++++++
 5 files changed, 197 insertions(+), 1 deletion(-)

diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am
index f5359d8..20f5bf9 100644
--- a/testsuites/psxtests/Makefile.am
+++ b/testsuites/psxtests/Makefile.am
@@ -1600,6 +1600,7 @@ lib_a_SOURCES = psxhdrs/devctl/posix_devctl.c \
 ## lib_a_SOURCES += psxhdrs/fenv/fesetexceptflag.c See ticket #2971
 ## lib_a_SOURCES += psxhdrs/fenv/fesetround.c      See ticket #2971
 ## lib_a_SOURCES += psxhdrs/fenv/fetestexcept.c    See ticket #2971
+## lib_a_SOURCES += psxhdrs/fmtmsg/fmtmsg.c        See ticket #3639
 ## lib_a_SOURCES += psxhdrs/ftw/ftw.c              See ticket #2970
 ## lib_a_SOURCES += psxhdrs/math/y0l.c             See ticket #3638
 ## lib_a_SOURCES += psxhdrs/math/y1l.c             See ticket #3638
@@ -1607,7 +1608,10 @@ lib_a_SOURCES = psxhdrs/devctl/posix_devctl.c \
 ## lib_a_SOURCES += psxhdrs/ftw/nftw.c             See ticket #2970
 ## lib_a_SOURCES += psxhdrs/stdio/getdelim.c	   See ticket #3633
 ## lib_a_SOURCES += psxhdrs/stdio/getline.c        See ticket #3633
-## lib_a_SOURCES += psxhdrs/fmtmsg/fmtmsg.c        See ticket #3639
+## lib_a_SOURCES += psxhdrs/ucontext/getcontext.c  See ticket #3632
+## lib_a_SOURCES += psxhdrs/ucontext/makecontext.c See ticket #3632
+## lib_a_SOURCES += psxhdrs/ucontext/setcontext.c  See ticket #3632
+## lib_a_SOURCES += psxhdrs/ucontext/swapcontext.c See ticket #3632
 endif
 
 rtems_tests_PROGRAMS = $(psx_tests)
diff --git a/testsuites/psxtests/psxhdrs/ucontext/getcontext.c b/testsuites/psxtests/psxhdrs/ucontext/getcontext.c
new file mode 100755
index 0000000..0c50bbc
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/ucontext/getcontext.c
@@ -0,0 +1,38 @@
+/**
+ *  @file
+ *  @brief getcontext() API Conformance Test
+ */
+
+/*
+ *  COPYRIGHT (c) 2018.
+ *  Jacob Shin
+ *
+ *  Permission to use, copy, modify, and/or distribute this software
+ *  for any purpose with or without fee is hereby granted.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
+ *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+ *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <ucontext.h>
+
+int test( void );
+
+int test( void )
+{
+  int return_value;
+  ucontext_t context;
+  ucontext_t *ucp = &context;
+
+  return_value = getcontext(ucp);
+  return (return_value != -1);
+}
\ No newline at end of file
diff --git a/testsuites/psxtests/psxhdrs/ucontext/makecontext.c b/testsuites/psxtests/psxhdrs/ucontext/makecontext.c
new file mode 100755
index 0000000..1b5ffc7
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/ucontext/makecontext.c
@@ -0,0 +1,55 @@
+/**
+ *  @file
+ *  @brief makecontext() API Conformance Test
+ */
+
+/*
+ *  COPYRIGHT (c) 2018.
+ *  Jacob Shin
+ *
+ *  Permission to use, copy, modify, and/or distribute this software
+ *  for any purpose with or without fee is hereby granted.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
+ *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+ *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define STACK_SIZE (1<<15) // 32KiB
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <ucontext.h>
+#include <stdlib.h>
+
+int test( void );
+void func( void );
+
+int test( void )
+{
+  ucontext_t context;
+  context.uc_stack.ss_sp = (char *) malloc(STACK_SIZE);
+  context.uc_stack.ss_size = STACK_SIZE;
+  context.uc_link = 0;
+  context.uc_stack.ss_flags = 0;
+  ucontext_t *ucp = &context;
+  getcontext(ucp);
+
+  makecontext(ucp, (void *)func, 0);
+
+  setcontext(ucp);
+  abort();
+  return 0;
+}
+
+void func( void )
+{
+	return;
+}
\ No newline at end of file
diff --git a/testsuites/psxtests/psxhdrs/ucontext/setcontext.c b/testsuites/psxtests/psxhdrs/ucontext/setcontext.c
new file mode 100755
index 0000000..5ffd135
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/ucontext/setcontext.c
@@ -0,0 +1,46 @@
+/**
+ *  @file
+ *  @brief setcontext() API Conformance Test
+ */
+
+/*
+ *  COPYRIGHT (c) 2018.
+ *  Jacob Shin
+ *
+ *  Permission to use, copy, modify, and/or distribute this software
+ *  for any purpose with or without fee is hereby granted.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
+ *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+ *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define _XOPEN_SOURCE_EXTENDED 1
+#include <ucontext.h>
+
+int return_value = 0;
+ucontext_t context;
+ucontext_t *ucp = &context;
+
+int test( void );
+void func( void );
+
+int test( void )
+{
+  getcontext(ucp);
+  return (return_value != -1);
+}
+
+void func( void )
+{
+    setcontext(ucp);
+    return_value = 1;
+}
\ No newline at end of file
diff --git a/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c b/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c
new file mode 100755
index 0000000..d86131d
--- /dev/null
+++ b/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c
@@ -0,0 +1,53 @@
+/**
+ *  @file
+ *  @brief swapcontext() API Conformance Test
+ */
+
+/*
+ *  COPYRIGHT (c) 2018.
+ *  Jacob Shin
+ *
+ *  Permission to use, copy, modify, and/or distribute this software
+ *  for any purpose with or without fee is hereby granted.
+ *
+ *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL
+ *  WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED
+ *  WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR
+ *  BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES
+ *  OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
+ *  WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
+ *  ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#define STACK_SIZE (1<<15) // 3
+
+#include <ucontext.h>
+#include <stdlib.h>
+
+int test( void );
+void func( void );
+
+int test( void )
+{
+  ucontext_t context;
+  context.uc_stack.ss_sp = (char *) malloc(STACK_SIZE);
+  context.uc_stack.ss_size = STACK_SIZE;
+  context.uc_link = 0;
+  context.uc_stack.ss_flags = 0;
+  ucontext_t *ucp = &context;
+  ucontext_t context2;
+  ucontext_t *ucp2 = &context2;
+  getcontext(ucp);
+  makecontext(ucp,(void*)func, 0);
+  swapcontext(ucp2, ucp);
+  return 0;
+}
+
+void func( void )
+{
+	return;
+}




More information about the vc mailing list