summaryrefslogtreecommitdiffstats
path: root/include/libtf/fiber.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/libtf/fiber.h')
-rw-r--r--include/libtf/fiber.h19
1 files changed, 14 insertions, 5 deletions
diff --git a/include/libtf/fiber.h b/include/libtf/fiber.h
index 36c2812..c3d87c6 100644
--- a/include/libtf/fiber.h
+++ b/include/libtf/fiber.h
@@ -23,10 +23,10 @@
/* Fiber wakeup reasons */
#define TF_WAKEUP_NONE 0
-#define TF_WAKEUP_IMMEDIATE EAGAIN
-#define TF_WAKEUP_KILL EINTR
-#define TF_WAKEUP_TIMEOUT ETIMEDOUT
-#define TF_WAKEUP_FD EIO
+#define TF_WAKEUP_IMMEDIATE -EAGAIN
+#define TF_WAKEUP_KILL -EINTR
+#define TF_WAKEUP_TIMEOUT -ETIMEDOUT
+#define TF_WAKEUP_FD -EIO
/* Special timeouts for tf_schedule() */
#define TF_NO_TIMEOUT -1
@@ -50,6 +50,11 @@ struct tf_scheduler {
};
+struct tf_main_ctx {
+ int argc;
+ char ** argv;
+};
+
static inline
struct tf_scheduler *tf_get_scheduler(void)
{
@@ -71,7 +76,11 @@ tf_mtime_t tf_mtime(void)
/* Fiber creation */
typedef void (*tf_fiber_proc)(void *fiber);
-int tf_main(tf_fiber_proc fiber_main);
+int tf_main_args(tf_fiber_proc fiber_main, int argc, char **argv);
+static inline int tf_main(tf_fiber_proc fiber_main)
+{
+ return tf_main_args(fiber_main, 0, NULL);
+}
void *tf_fiber_create(tf_fiber_proc fiber_main, int private_size);
void *tf_fiber_get(void *data);