Threads and Scheduling
1#ifndef PQ_H_
2#define PQ_H_
3#include "lib.h"
4#include <stdbool.h>
5
6// Nodo que aguanta cada proceso.
7struct Node {
8 Proc proc;
9 struct Node* next;
10};
11// Para crear un struct recursivo no se puede hacer un typedef. Aqui esta el
12// typedef.
13typedef struct Node Node;
14
15// Funcion helper para insertar un proceso en la lista y respetar el orden de
16// tiempo de procesos.
17Node* n_insert(Proc proc, Node* node);
18
19// La estructura para priority queue.
20typedef struct {
21 Node* head;
22} PQ;
23
24// Inicializar el prio queue.
25PQ pq_init();
26
27// La funcion para borrar el prio queue.
28void pq_deinit(PQ* pq);
29
30// La funcion para insertar en el prio queue.
31void pq_insert(PQ* pq, Proc proc);
32
33// la funcion para borrar el primer elemento del prio queue.
34void pq_delete(PQ* pq);
35
36// La funcion para accesar el tope del prio queue.
37Proc pq_access(PQ pq);
38
39// La funcion para imprimir el prio queue.
40void pq_print(PQ pq);
41
42// La funcion para verificar si el prio queue esta vacio.
43bool pq_empty(PQ pq);
44
45#endif // PQ_H_