summaryrefslogtreecommitdiffstats
path: root/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c
diff options
context:
space:
mode:
authorJacob Shin <jacobshin313@gmail.com>2018-12-06 21:48:46 -0500
committerJoel Sherrill <joel@rtems.org>2018-12-06 22:27:55 -0600
commit17c32e5d2afe3426509e7c0639136ffc50770373 (patch)
treed36699e01122d4ec55861f4d5439e1d16708e881 /testsuites/psxtests/psxhdrs/ucontext/swapcontext.c
parentImplement POSIX API Signature Compliance Tests for inttypes.h (diff)
downloadrtems-17c32e5d2afe3426509e7c0639136ffc50770373.tar.bz2
psxhdrs: Add POSIX API Signature Compliance Tests for ucontext.h (GCI 2018)
Diffstat (limited to '')
-rwxr-xr-xtestsuites/psxtests/psxhdrs/ucontext/swapcontext.c53
1 files changed, 53 insertions, 0 deletions
diff --git a/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c b/testsuites/psxtests/psxhdrs/ucontext/swapcontext.c
new file mode 100755
index 0000000000..d86131dead
--- /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;
+}