diff --git a/Final Code/fonctions.h b/Final Code/fonctions.h new file mode 100644 index 0000000000000000000000000000000000000000..f70773b78d072f758b5a6ddf6969a0335ce05120 --- /dev/null +++ b/Final Code/fonctions.h @@ -0,0 +1,59 @@ +#ifndef fonctions_h +#define fonctions_h + +typedef struct node { + uint64_t 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; + sem_t free; + sem_t full; + pthread_mutex_t mutex; + bool can_stop; +} buffer1; + +typedef struct buffer2 { + list_lst *prime_numbers; + 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, uint64_t value); +void put_node_lst(list_lst *my_list, list_t *put_list); + +uint64_t get_node_t(list_t *my_list); +list_t *get_node_lst(list_lst *my_list); + +void clear_list_t(list_t *my_list); + +list_t *prime_list(uint64_t value); + +int count_lines(char *filename); + +buffer1 *init_buffer_1(int nthreads); +buffer2 *init_buffer_2(int nthreads); + +#endif //fonctions_h \ No newline at end of file