diff options
Diffstat (limited to 'coroutine/ucontext')
| -rw-r--r-- | coroutine/ucontext/Context.c | 5 | ||||
| -rw-r--r-- | coroutine/ucontext/Context.h | 11 |
2 files changed, 13 insertions, 3 deletions
diff --git a/coroutine/ucontext/Context.c b/coroutine/ucontext/Context.c index eec4ef3956..5d728d554d 100644 --- a/coroutine/ucontext/Context.c +++ b/coroutine/ucontext/Context.c @@ -2,7 +2,7 @@ * This file is part of the "Coroutine" project and released under the MIT License. * * Created by Samuel Williams on 24/6/2019. - * Copyright, 2019, by Samuel Williams. All rights reserved. + * Copyright, 2019, by Samuel Williams. */ /* According to Solaris' ucontext.h, makecontext, etc. are removed in SUSv4. @@ -11,11 +11,12 @@ #if defined(__sun) && !defined(__EXTENSIONS__) #define __EXTENSIONS__ #endif + #include "Context.h" void coroutine_trampoline(void * _start, void * _context) { - coroutine_start start = _start; + coroutine_start start = (coroutine_start)_start; struct coroutine_context * context = _context; start(context->from, context); diff --git a/coroutine/ucontext/Context.h b/coroutine/ucontext/Context.h index 6cf16c8604..d338d8de60 100644 --- a/coroutine/ucontext/Context.h +++ b/coroutine/ucontext/Context.h @@ -1,8 +1,11 @@ +#ifndef COROUTINE_UCONTEXT_CONTEXT_H +#define COROUTINE_UCONTEXT_CONTEXT_H 1 + /* * This file is part of the "Coroutine" project and released under the MIT License. * * Created by Samuel Williams on 24/6/2019. - * Copyright, 2019, by Samuel Williams. All rights reserved. + * Copyright, 2019, by Samuel Williams. */ #pragma once @@ -13,14 +16,18 @@ #define COROUTINE __attribute__((noreturn)) void +#ifdef HAVE_STDINT_H +#include <stdint.h> #if INTPTR_MAX <= INT32_MAX #define COROUTINE_LIMITED_ADDRESS_SPACE #endif +#endif struct coroutine_context { ucontext_t state; struct coroutine_context * from; + void *argument; }; typedef COROUTINE(* coroutine_start)(struct coroutine_context *from, struct coroutine_context *self); @@ -68,3 +75,5 @@ static inline void coroutine_destroy(struct coroutine_context * context) context->state.uc_stack.ss_size = 0; context->from = NULL; } + +#endif /* COROUTINE_UCONTEXT_CONTEXT_H */ |
