-
Notifications
You must be signed in to change notification settings - Fork 0
scheduler : task.c\h
typedef struct Task {
unsigned long id;
char name[9];
unsigned char priority;
unsigned char exec_cycles;
} Task;typedef unsigned char byte;
unsigned long id = 1;
/* Restituisce 0 se i parametri non sono validi, altrimenti un numero !=0 */
int setTask(Task* t, char* name, byte priority, byte exec_cycles) {
int valid = (priority >= 0 && priority <= 9)
&& (exec_cycles >= 1 && exec_cycles <= 99);
if (valid) {
t->id = id++; //assegnazione e post-incremento
strcpy(t->name, name);
t->priority = priority;
t->exec_cycles = exec_cycles;
}
return valid;
}La dichiarazione della struttura Task e la definizione delle funzioni utili ad interagire con essa sono presenti nel file task.h, l’implementazione di tali operazioni sono presenti in task.c.
Data la massima lunghezza di 8 caratteri, name viene dichiarato di 9 per contenere anche ‘\0’ terminante.
Per ottimizzare lo spazio occupato, i campi priority e exec_cycles sono stati dichiarati come unsigned char, il tipo primitivo di variabile di grandezza minima sfruttabile (unsigned perché i valori accettabili sono esclusivamente positivi, rimangono comunque largamente sufficienti avendo un range [0,255] ).
Per leggibilità del codice unsigned char è stato rinominato byte.
Il campo id viene gestito come auto-incrementante ad ogni task creato attraverso setTask().
Made with ❤️ by Owanesh and MatteoMauro | MIT ©