diff options
author | Vito Caputo <vcaputo@pengaru.com> | 2018-05-02 13:23:15 -0700 |
---|---|---|
committer | Vito Caputo <vcaputo@pengaru.com> | 2018-05-02 13:23:15 -0700 |
commit | 7fd168d9bf3775380044ea4b71d693f195e8033c (patch) | |
tree | c5b87e1ed288e12661b003fd59c328ee02559f64 /src/pulp.h | |
parent | 2bd219830969c555358301dd7d978f6885477a9d (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.h | 36 |
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 |