summaryrefslogtreecommitdiff
path: root/src/pulp.h
diff options
context:
space:
mode:
authorVito Caputo <vcaputo@pengaru.com>2018-05-02 13:23:15 -0700
committerVito Caputo <vcaputo@pengaru.com>2018-05-02 13:23:15 -0700
commit7fd168d9bf3775380044ea4b71d693f195e8033c (patch)
treec5b87e1ed288e12661b003fd59c328ee02559f64 /src/pulp.h
parent2bd219830969c555358301dd7d978f6885477a9d (diff)
*: initial commit of libpulp
libpulp is a very basic cooperatively-scheduled userspace threading library. It refers to the userspace threads as fibers, and uses my other little library libthunk to bind the functions and their calling environment into tidy little structures having a uniform calling convention. At this time there's no build system or anything of the sort, it's early days and I'll probably be submoduling this into another project for direct inclusion and compilation.
Diffstat (limited to 'src/pulp.h')
-rw-r--r--src/pulp.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/pulp.h b/src/pulp.h
new file mode 100644
index 0000000..fb270f0
--- /dev/null
+++ b/src/pulp.h
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) 2018 Vito Caputo - <vcaputo@pengaru.com>
+ *
+ * This program is free software: you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 3 as published
+ * by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef _PULP_H
+#define _PULP_H
+
+#include <stdint.h>
+#include <thunk.h>
+
+typedef struct pulp_fiber_t pulp_fiber_t;
+typedef struct pulp_t pulp_t;
+typedef uint64_t pulp_usec_t;
+
+pulp_t * pulp_new(void);
+void pulp_free(pulp_t *pulp);
+int pulp_tick(pulp_t *pulp, unsigned *next_tick_delay_us);
+void pulp_run(pulp_t *pulp);
+pulp_fiber_t * pulp_fiber_new(pulp_t *pulp, unsigned delay_ms, thunk_t *thunk);
+void pulp_msleep(pulp_t *pulp, unsigned milliseconds);
+void pulp_sleep(pulp_t *pulp, unsigned seconds);
+pulp_usec_t pulp_now(pulp_t *pulp);
+
+#endif
© All Rights Reserved