diff --git a/Code_With_Threads/fonctions.h b/Code_With_Threads/fonctions.h new file mode 100644 index 0000000000000000000000000000000000000000..a232aef69e590f44af8fbcfaca71745c3a1a6ab4 --- /dev/null +++ b/Code_With_Threads/fonctions.h @@ -0,0 +1,66 @@ +#ifndef fonctions_h +#define fonctions_h + +typedef struct node { + int value; + struct node *next; +} node_t; + +typedef struct list { + node_t *first; + node_t *last; + int length; +} list_t; + +typedef struct node2 { + list_t *diviseurs; + struct node2 *next; +} node_lst; + +typedef struct list2 { + node_lst *first; + node_lst *last; + int length; +} list_lst; + +typedef struct buffer1 { + list_t *numbers; + int in_buffer; + sem_t free; + sem_t full; + pthread_mutex_t mutex; + bool can_stop; +} buffer1; + +typedef struct buffer2 { + list_lst *prime_numbers; + int in_buffer; + sem_t free; + sem_t full; + pthread_mutex_t mutex; +} buffer2; + +void init_list_t(list_t *my_list); +void init_list_lst(list_lst *my_list); +void put_node_t(list_t *my_list, int value); +void put_node_lst(list_lst *my_list, list_t *put_list); +int get_node_t(list_t *my_list); +list_t *get_node_lst(list_lst *my_list); +int get_at_index(list_t *my_list, int index); + +//void clear_node_t(node_t *t); +//void clear_list_t(list_t *my_list); +//void clear_node_lst(node_lst *n); +//void clear_list_lst(list_lst *my_list); + +void clear_list_t(list_t *my_list); +void clear_list_lst(list_lst *my_list); + +list_t *prime_list(int value); + +buffer1 *init_buffer_1(int nthreads); +buffer2 *init_buffer_2(int nthreads); + +int count_lines(char *filename); + +#endif //fonctions_h \ No newline at end of file