#pragma once #ifndef _TAGLIALEGNA #define _TAGLIALEGNA #include #include #include typedef struct taglia_s { FILE *file; size_t max_files; long max_size; size_t cache_misses; pthread_mutex_t m; // per sincronizzare le scritture al file } taglia_t; // crea una nuova istanza // \param file: file su cui scrivere i dati // \param n: numero di parametri opzionali // parametri opzionali in questo ordine: // max_files, max_size, cache_misses // \return istanza creata, NULL se errore taglia_t *taglia_init(char *file, int n, ...); // elimina un'istanza deallocando e chiudendo le rispettive risorse void taglia_del(taglia_t *taglia); // scrive quello contenuto dentro a buf sul file // \return numero di char scritti, -1 se errore size_t taglia_write(taglia_t *taglia, char *buf); // scrive il contenuto di buf sul file con ora associata size_t taglia_log(taglia_t *taglia, char *buf); // update delle statistiche // \return 0 successo, -1 errore int taglia_update(taglia_t *taglia, queueT *queue, int miss); // print delle statistiche attuali su stream int taglia_stats(taglia_t *taglia, FILE *stream); #endif /* _TAGLIALEGNA */