#pragma once
+struct sd_event;
+
+extern int jobs_queue0(
+ void *group,
+ int timeout,
+ void (*callback)(int signum));
+
extern int jobs_queue(
void *group,
int timeout,
void *arg2,
void *arg3);
+extern int jobs_invoke0(
+ int timeout,
+ void (*callback)(int signum));
+
+extern int jobs_invoke(
+ int timeout,
+ void (*callback)(int signum, void* arg),
+ void *arg);
+
+extern int jobs_invoke2(
+ int timeout,
+ void (*callback)(int signum, void* arg1, void *arg2),
+ void *arg1,
+ void *arg2);
+
+extern int jobs_invoke3(
+ int timeout,
+ void (*callback)(int signum, void* arg1, void *arg2, void *arg3),
+ void *arg1,
+ void *arg2,
+ void *arg3);
+
+extern struct sd_event *jobs_get_sd_event();
+
extern int jobs_init(int allowed_count, int start_count, int waiter_count);
+extern int jobs_add_me();
extern void jobs_terminate();
+extern int jobs_enter(int allowed_count, int start_count, int waiter_count, void (*start)());