Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
cmake: More cleanups of the sysv contexts
[simgrid.git] / tools / cmake / test_prog / prog_makecontext.c
similarity index 64%
rename from tools/cmake/test_prog/prog_AC_CHECK_MCSC.c
rename to tools/cmake/test_prog/prog_makecontext.c
index ef9e426..a3fffe9 100644 (file)
@@ -1,9 +1,12 @@
-/* Copyright (c) 2010, 2014. The SimGrid Team.
- * All rights reserved.                                                     */
+/* Copyright (c) 2010, 2014, 2016. The SimGrid Team. All rights reserved.   */
 
 /* This program is free software; you can redistribute it and/or modify it
  * under the terms of the license (GNU LGPL) which comes with this package. */
 
+#ifdef __APPLE__
+#define _XOPEN_SOURCE 700
+#endif
+
 #include <stdio.h>
 #include <stdlib.h>
 #include <ucontext.h>
@@ -13,26 +16,20 @@ ucontext_t uc_main;
 
 static void child(void)
 {
+  /* switch back to the main context */
   if (swapcontext(&uc_child, &uc_main) != 0)
     exit(2);
 }
 
 int main(int argc, char *argv[])
 {
-  FILE *fp;
-  void *stack;
-
-  /* the default is that it fails */
-  if ((fp = fopen("conftestval", "w")) == NULL)
-    exit(3);
-  fprintf(fp, "no\n");
-  fclose(fp);
+  void *stack = malloc(64 * 1024);
 
   /* configure a child user-space context */
-  if ((stack = malloc(64 * 1024)) == NULL)
-    exit(4);
+  if (stack == NULL)
+    exit(3);
   if (getcontext(&uc_child) != 0)
-    exit(5);
+    exit(4);
   uc_child.uc_link = NULL;
   uc_child.uc_stack.ss_sp = (char *) stack + (32 * 1024);
   uc_child.uc_stack.ss_size = 32 * 1024;
@@ -41,15 +38,11 @@ int main(int argc, char *argv[])
 
   /* switch into the user context */
   if (swapcontext(&uc_main, &uc_child) != 0)
-    exit(6);
+    exit(5);
 
   /* Fine, child came home */
-  if ((fp = fopen("conftestval", "w")) == NULL)
-    exit(7);
-  fprintf(fp, "yes\n");
-  fclose(fp);
+  printf("yes\n");
 
   /* die successfully */
-  exit(0);
-  return 1;
+  return 0;
 }