-/** Many integers are needed to store a pointer
- *
- * This is a bit paranoid about sizeof(smx_ctx_sysv_t) not being a multiple
- * of sizeof(int), but it doesn't harm. */
-#define CTX_ADDR_LEN \
- (sizeof(void*) / sizeof(int) + \
- !!(sizeof(void*) % sizeof(int)))
-
-/** A better makecontext
- *
- * Makecontext expects integer arguments, we the context
- * variable is decomposed into a serie of integers and
- * each integer is passed as argument to makecontext. */
-static void simgrid_makecontext(ucontext_t* ucp, void (*func)(int first, ...), void* arg)
-{
- int ctx_addr[CTX_ADDR_LEN];
- memcpy(ctx_addr, &arg, sizeof(void*));
- switch (CTX_ADDR_LEN) {
- case 1:
- makecontext(ucp, (void (*)())func, 1, ctx_addr[0]);
- break;
- case 2:
- makecontext(ucp, (void (*)()) func, 2, ctx_addr[0], ctx_addr[1]);
- break;
- default:
- xbt_die("Ucontexts are not supported on this arch yet (addr len = %zu/%zu = %zu)", sizeof(void*), sizeof(int), CTX_ADDR_LEN);
- }
-}
-