From 60ce7fba21a6d37c0acbe152039fbc3d0e692bf0 Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Sun, 19 Apr 2020 09:23:31 -0700 Subject: chore: reorganized structure to allow for more parallel projects --- src/coro.c | 65 -------------------------------------------------------------- 1 file changed, 65 deletions(-) delete mode 100644 src/coro.c (limited to 'src/coro.c') diff --git a/src/coro.c b/src/coro.c deleted file mode 100644 index af0a359..0000000 --- a/src/coro.c +++ /dev/null @@ -1,65 +0,0 @@ -#include - -// ----------------------------------------------------------------------- -// Assembly routines - -extern void _newcoro(coro *co, uintptr (*func)(coro*, uintptr), void *stk); -extern uintptr _coroyield(coro *co, uintptr arg); - -// ----------------------------------------------------------------------- -// Globals - -// static thread_local coro *CONTEXT; - -// ----------------------------------------------------------------------- -// C interface - -/* Co-routine context */ -struct coro -{ - void* sp; - void* bp; - uintptr size; - void* user; -}; - -coro* -coro·new(uintptr stk, uintptr (*func)(coro*, uintptr)) -{ - if (!func) return nil; - if (stk == 0) stk = 8192; - - byte *block = malloc(stk); - coro *co = (coro*)&block[stk - sizeof(coro)]; - co->bp = block; - co->size = stk; - - _newcoro(co, func, co); - return co; -} - -error -coro·free(coro *co) -{ - enum - { - NIL, - GOOD, - EMPTY, - LOST, - }; - - if (!co) return NIL; - if (!co->bp) return LOST; - if (co->size == 0) return EMPTY; - - free(co->bp); - - return GOOD; -} - -uintptr -coro·yield(coro *c, uintptr arg) -{ - return _coroyield(c, arg); -} -- cgit v1.2.1