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

This commit is contained in:
Jacob Shin
2018-12-06 22:27:55 -06:00
committed by Joel Sherrill
parent bf763d3eee
commit 17c32e5d2a
5 changed files with 197 additions and 1 deletions
+5 -1
View File
@@ -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)
+38
View File
@@ -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);
}
+55
View File
@@ -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;
}
+46
View File
@@ -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;
}
+53
View File
@@ -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;
}