diff options
author | Jacob Shin <jacobshin313@gmail.com> | 2018-12-06 21:48:46 -0500 |
---|---|---|
committer | Joel Sherrill <joel@rtems.org> | 2018-12-06 22:27:55 -0600 |
commit | 17c32e5d2afe3426509e7c0639136ffc50770373 (patch) | |
tree | d36699e01122d4ec55861f4d5439e1d16708e881 /testsuites/psxtests | |
parent | Implement POSIX API Signature Compliance Tests for inttypes.h (diff) | |
download | rtems-17c32e5d2afe3426509e7c0639136ffc50770373.tar.bz2 |
psxhdrs: Add POSIX API Signature Compliance Tests for ucontext.h (GCI 2018)
Diffstat (limited to 'testsuites/psxtests')
-rw-r--r-- | testsuites/psxtests/Makefile.am | 6 | ||||
-rwxr-xr-x | testsuites/psxtests/psxhdrs/ucontext/getcontext.c | 38 | ||||
-rwxr-xr-x | testsuites/psxtests/psxhdrs/ucontext/makecontext.c | 55 | ||||
-rwxr-xr-x | testsuites/psxtests/psxhdrs/ucontext/setcontext.c | 46 | ||||
-rwxr-xr-x | testsuites/psxtests/psxhdrs/ucontext/swapcontext.c | 53 |
5 files changed, 197 insertions, 1 deletions
diff --git a/testsuites/psxtests/Makefile.am b/testsuites/psxtests/Makefile.am index f5359d8b19..20f5bf9922 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 0000000000..0c50bbc785 --- /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 0000000000..1b5ffc766d --- /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 0000000000..5ffd135afe --- /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 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; +} |