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 27 char *TCID = "getcontext01"; 28 29 #if !defined(__UCLIBC__) 30 31 static void setup(void); 32 static void cleanup(void); 33 34 int TST_TOTAL = 1; 35 36 static 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 54 int 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 73 static void setup(void) 74 { 75 tst_sig(NOFORK, DEF_HANDLER, cleanup); 76 77 TEST_PAUSE; 78 } 79 80 static void cleanup(void) 81 { 82 } 83 84 #else /* systems that dont support obsolete getcontext */ 85 int main(void) 86 { 87 tst_brkm(TCONF, NULL, "system doesn't have getcontext support"); 88 } 89 #endif 90