#ifndef FILE_H #define FILE_H #include /* exit, malloc */ #include /* perror */ struct processus { float t_exec; /* Le temps d'exécution */ float t_ajoute; /* Le temps auquel le processus est ajouté à la file d'attente */ }; struct node { struct processus *content; struct node *next,*prev; }; /* La file d'attente est une <> On peut penser à l'implémenter comme un liste circulaire. */ struct file { struct node *first, *last; int no; }; #define NEW(ptr,type) \ {\ if(((ptr) =malloc(sizeof(type))) == NULL)\ {\ perror("malloc"); \ exit(EXIT_FAILURE); \ } \ } \ #define FORALLIN(ptr,f)\ for(ptr=f->first;ptr;ptr=ptr->next)\ /* Produit une nouvelle file vide */ extern struct file * new_file(void); /* Ajoute à la queue un processus */ extern void file_enqueue (struct file *f, struct processus *p); /* Cherche dans f le plus petit processus selon la fonction int compare(...,...) qui suit les mêmes conventions que strcmp etc. Enlève ce processus de la file. */ extern struct processus * file_pop_how( struct file *f, int (*compare)(struct processus * p1, struct processus * p2) ); /* Comme file_pop_how, suaf que proc n'est pas enleve de la file */ extern struct processus * file_peek_how( struct file *f, int (*compare)(struct processus * p1, struct processus * p2) ); /* La file est vide ? */ extern int file_is_empty(struct file * f); #endif /* FILE_H */