diff options
Diffstat (limited to 'include')
-rw-r--r-- | include/jobs.h | 5 | ||||
-rw-r--r-- | include/queue.h | 19 |
2 files changed, 23 insertions, 1 deletions
diff --git a/include/jobs.h b/include/jobs.h index 41bfa57..be95c57 100644 --- a/include/jobs.h +++ b/include/jobs.h @@ -8,15 +8,18 @@ struct output { }; LIST_HEAD(job_dlist, job); +CIRCLEQ_HEAD(job_clist, job); struct job { char *name, *drv_path; struct output_dlist outputs; struct job_dlist deps; + /* TODO: replace dlist with clist jobs.c */ LIST_ENTRY(job) dlist; + CIRCLEQ_ENTRY(job) clist; }; int jobs_init(FILE **stream); int job_new(struct job **j, char *name, char *drv_path); void job_free(struct job *j); -int jobs_read(FILE *stream, struct job *jobs); +int job_read(FILE *stream, struct job **jobs); diff --git a/include/queue.h b/include/queue.h new file mode 100644 index 0000000..ca11614 --- /dev/null +++ b/include/queue.h @@ -0,0 +1,19 @@ +#include <pthread.h> +#include <sys/queue.h> + +#include "jobs.h" + +struct queue { + struct job_clist jobs; + pthread_mutex_t mutex; +}; + +struct queue_thread { + pthread_t tid; + struct queue *queue; + FILE *stream; +}; + +int queue_thread_new(struct queue_thread **queue_thread, FILE *stream); +void queue_thread_free(struct queue_thread *queue_thread); +void *queue_thread_entry(void *queue_thread); |