From 49b1faa9c128b9beb8f517bed5cccfc5cb3b0ef0 Mon Sep 17 00:00:00 2001 From: sinanmohd Date: Fri, 21 Jun 2024 09:46:41 +0530 Subject: queue: merge matching derivations in queue --- include/jobs.h | 3 +++ include/queue.h | 4 +++- 2 files changed, 6 insertions(+), 1 deletion(-) (limited to 'include') diff --git a/include/jobs.h b/include/jobs.h index 85d606b..623eaea 100644 --- a/include/jobs.h +++ b/include/jobs.h @@ -1,4 +1,5 @@ #include +#include #include #ifndef JOBS_H @@ -9,6 +10,7 @@ struct output { struct job { char *name, *drv_path; + bool transitive; size_t outputs_size, outputs_filled; struct output **outputs; @@ -33,6 +35,7 @@ int job_read(FILE *stream, struct job **jobs); int jobs_init(FILE **stream); void job_free(struct job *j); +int job_parents_list_insert(struct job *job, struct job *parent); #define JOBS_H #endif diff --git a/include/queue.h b/include/queue.h index 6608ec4..c454339 100644 --- a/include/queue.h +++ b/include/queue.h @@ -1,4 +1,5 @@ #include +#include #include #include @@ -13,6 +14,7 @@ typedef enum { struct queue { struct job_clist jobs; + struct hsearch_data *htab; sem_t sem; queue_state_t state; pthread_mutex_t mutex; @@ -27,7 +29,7 @@ struct queue_thread { 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); -int queue_pop(struct queue *queue, struct job **job); +int queue_pop(struct queue *queue, struct job **job, struct hsearch_data *htab); #define QUEUE_H #endif -- cgit v1.2.3