1/* 2 * Copyright (c) Wipro Technologies Ltd, 2005. All Rights Reserved. 3 * Author: Prashant P Yendigeri <prashant.yendigeri@wipro.com> 4 * 5 * This program is free software; you can redistribute it and/or modify it 6 * under the terms of version 2 of the GNU General Public License as 7 * published by the Free Software Foundation. 8 * 9 * This program is distributed in the hope that it would be useful, but 10 * WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 12 * 13 * You should have received a copy of the GNU General Public License along 14 * with this program; if not, write the Free Software Foundation, Inc., 15 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 16 */ 17 18#include <features.h> 19 20#include <stdio.h> 21#include <unistd.h> 22#include <errno.h> 23#include <ucontext.h> 24 25#include "test.h" 26 27char *TCID = "getcontext01"; 28 29#if !defined(__UCLIBC__) 30 31static void setup(void); 32static void cleanup(void); 33 34int TST_TOTAL = 1; 35 36static void test_getcontext(void) 37{ 38 ucontext_t ptr; 39 40 TEST(getcontext(&ptr)); 41 42 if (TEST_RETURN == -1) { 43 if (errno == ENOSYS) 44 tst_resm(TCONF, "getcontext not implemented in libc"); 45 else 46 tst_resm(TFAIL | TTERRNO, "getcontext failed"); 47 } else if (TEST_RETURN == 0) { 48 tst_resm(TPASS, "getcontext passed"); 49 } else { 50 tst_resm(TFAIL, "Unexpected return value %li", TEST_RETURN); 51 } 52} 53 54int main(int ac, char **av) 55{ 56 int lc; 57 58 tst_parse_opts(ac, av, NULL, NULL); 59 60 setup(); 61 62 for (lc = 0; TEST_LOOPING(lc); lc++) { 63 64 tst_count = 0; 65 66 test_getcontext(); 67 } 68 69 cleanup(); 70 tst_exit(); 71} 72 73static void setup(void) 74{ 75 tst_sig(NOFORK, DEF_HANDLER, cleanup); 76 77 TEST_PAUSE; 78} 79 80static void cleanup(void) 81{ 82} 83 84#else /* systems that dont support obsolete getcontext */ 85int main(void) 86{ 87 tst_brkm(TCONF, NULL, "system doesn't have getcontext support"); 88} 89#endif 90