Skip to content
Extraits de code Groupes Projets
run.h 1,42 ko
Newer Older
  • Learn to ignore specific revisions
  • Laurent Paucot's avatar
    Laurent Paucot a validé
    #ifndef RUN
    #define RUN
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    #include <pthread.h>
    #include <semaphore.h>
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    typedef struct node{
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        unsigned long long value;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        struct node *next;
    }node_t;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    typedef struct queue{
        struct node *tail;
        int size;
    }queue_t;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    struct buffer_rc{
        char *tab[8];
        int size;       
        int len;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        int head;
        int tail;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    };
    
    struct buffer_cw
    {
        queue_t *tab[8];
        int size;       
        int len;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
        int head;
        int tail;
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    };
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    struct buffer_rccw{
        struct buffer_rc *struct1;
        struct buffer_cw *struct2; 
    };
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    pthread_mutex_t mutex1;
    sem_t empty1;
    sem_t full1;
    
    pthread_mutex_t mutex2;
    sem_t empty2;
    sem_t full2;
    
    
    void put_in_buffer_1(char *c);
    char *get_from_buffer_1(void);
    void put_in_buffer_2(struct queue *ptr);
    queue_t *get_from_buffer_2(void);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    int is_div(unsigned long long number, long i);
    int is_prime(unsigned long long number);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void enqueue(queue_t* q, unsigned long long val);
    queue_t* prime_divs(unsigned long long number);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void *reading (void *param);
    void *calculating(void *param);
    void *writing(void *param);
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    void sem_1_initializer(struct buffer_rc *buf);
    void sem_2_initializer (struct buffer_cw *buf);
    
    struct buffer_rc * buff_init_1(FILE *file1);
    struct buffer_cw * buff_init_2(FILE *file2);
    struct buffer_rccw *buff_init_12(struct buffer_rc *ptr1,struct buffer_cw *ptr2);
    
    void thread_create_join(struct buffer_rc *ptr1,struct buffer_cw *ptr2,struct buffer_rccw *ptr3);
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    int run (char *input,char *output);
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    
    
    Laurent Paucot's avatar
    Laurent Paucot a validé
    #endif