diff options
Diffstat (limited to 'src/coro.c')
-rw-r--r-- | src/coro.c | 20 |
1 files changed, 11 insertions, 9 deletions
@@ -6,7 +6,7 @@ extern void _newcoro(coro *co, uintptr (*func)(coro*, uintptr), void *stk); extern uintptr _coroyield(coro *co, uintptr arg); -struct coro +struct coro { void* sp; void* bp; @@ -15,9 +15,10 @@ struct coro }; coro* -coro·New(uintptr stk, uintptr (*func)(coro*, uintptr)) +coro·new(uintptr stk, uintptr (*func)(coro*, uintptr)) { - if (!func) return nil; + if (!func) + return nil; if (stk == 0) stk = 8192; @@ -31,26 +32,27 @@ coro·New(uintptr stk, uintptr (*func)(coro*, uintptr)) } error -coro·Free(coro *co) +coro·free(coro *co) { - enum + enum { - GOOD, NIL, + GOOD, EMPTY, LOST, }; - if (!co) return NIL; - if (!co->bp) return 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) +coro·yield(coro *c, uintptr arg) { return _coroyield(c, arg); } |