diff --git a/.gitmodules b/.gitmodules index fd1b214..2d8a1b0 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "coroutine"] - path = coro + path = multitasking/coro url = https://github.com/clibs/coro.git diff --git a/multitasking/Makefile b/multitasking/Makefile new file mode 100644 index 0000000..0cdaefd --- /dev/null +++ b/multitasking/Makefile @@ -0,0 +1,19 @@ +CPPFLAGS ?= +CFLAGS ?= +TARGET_ARCH ?= +SOURCES := $(wildcard *.c coro/coro.c) +OBJECTS := $(SOURCES:.c=.o) +DEPENDENCIES := $(if $(filter clean wipe,$(MAKECMDGOALS)),,$(SOURCES:.c=.d)) + +.PHONY: clean wipe +libcomulti.a: libcomulti.a($(OBJECTS)) + +include $(DEPENDENCIES) + +%.d: %.c + gcc $(CPPFLAGS) -MM -MF $@ -MT $*.o -MT $*.pic.o -o $@ $< +clean: REMOVABLE_FILES += $(OBJECTS) $(DEPENDENCIES) libcomulti.a +clean: + $(let f,$(wildcard $(REMOVABLE_FILES)),$(if $(strip $f),$(RM) -- $f)) +wipe: REMOVABLE_FILES += $(SOURCES:.c=.d) +wipe: clean diff --git a/contextring.c b/multitasking/contextring.c similarity index 98% rename from contextring.c rename to multitasking/contextring.c index 262a58d..0c7e755 100644 --- a/contextring.c +++ b/multitasking/contextring.c @@ -1,5 +1,5 @@ #include "contextring.h" -#include "utils.h" +#include "../utils.h" #include void insert(struct coro_context_ring** const cursor, struct coro_context* const ctx, const char* const name) { diff --git a/contextring.h b/multitasking/contextring.h similarity index 100% rename from contextring.h rename to multitasking/contextring.h diff --git a/coro b/multitasking/coro similarity index 100% rename from coro rename to multitasking/coro diff --git a/evloop.c b/multitasking/eventloop.c similarity index 95% rename from evloop.c rename to multitasking/eventloop.c index 9750a9f..734438a 100644 --- a/evloop.c +++ b/multitasking/eventloop.c @@ -1,6 +1,5 @@ -#include "utils.h" -#include "log.h" -#include "evloop.h" +#include "eventloop.h" +#include "../utils.h" #include #include #include diff --git a/evloop.h b/multitasking/eventloop.h similarity index 100% rename from evloop.h rename to multitasking/eventloop.h diff --git a/comultitask.h b/multitasking/sus.h similarity index 96% rename from comultitask.h rename to multitasking/sus.h index da03fe9..9b23316 100644 --- a/comultitask.h +++ b/multitasking/sus.h @@ -2,6 +2,8 @@ #include #include +#include +#include #define sus_registration(Entry, ...) (struct sus_registation_form){\ .name = #Entry,\ diff --git a/comultitask.c b/multitasking/suspendables.c similarity index 95% rename from comultitask.c rename to multitasking/suspendables.c index 95692f7..be10510 100644 --- a/comultitask.c +++ b/multitasking/suspendables.c @@ -1,12 +1,13 @@ -#include "comultitask.h" -#include "contextring.h" +#include "sus.h" #include "coro/coro.h" -#include "utils.h" -#include "evloop.h" +#include "contextring.h" +#include "eventloop.h" +#include "../log.h" #include #include #include #include +#include enum ioset { IOSET_READ, IOSET_WRITE, IOSET_OOB }; @@ -148,7 +149,7 @@ static inline void sus_exit(void) { } __attribute__((noreturn)) -static void starter(struct sus_coroutine_reg* const reg) { +static void starter(struct sus_registation_form* const reg) { LOGDX("%s task started", reg->name); reg->result = reg->entry(reg->args); LOGDX("%s task ended", reg->name); @@ -178,7 +179,7 @@ int sus_ioloop(struct sus_ioloop_args* const args) { return -1; } -int sus_runall(const size_t length, struct sus_coroutine_reg (* const h)[length]) { +int sus_runall(const size_t length, struct sus_registation_form (* const h)[length]) { assert(h); int ret = -1; struct coro_stuff stuff[length] = {};