8const int MSG_SIZE = 100;
24 for (
int i = 0; i < NMESG; i++) {
31 snprintf(ptr->corpo, MSG_SIZE,
"Messaggio numero %d", i);
37 printf(
"fine scrittore %lu\n", a);
45 for (
int i = 0; i < 2 * NMESG; i++) {
49 printf(
"messaggio %d da %d: %s\n",
50 i, ptr->mittente, ptr->corpo);
62 if ( (mailbox_piena =
sem_ini(0)) == 0xFFFFFFFF )
63 fpanic(
"Impossibile creare semaforo mailbox_piena");
64 if ( (mailbox_vuota =
sem_ini(1)) == 0xFFFFFFFF )
65 fpanic(
"Impossibile creare semaforo mailbox_vuota");
66 if ( (terminati =
sem_ini(0)) == 0xFFFFFFFF )
67 fpanic(
"Impossibile creare semaforo terminati");
69 fpanic(
"Impossibile creare processo pms(1)");
71 fpanic(
"Impossibile creare processo pms(2)");
73 fpanic(
"Impossibile creare processo pml");
74 for (
int i = 0; i < 3; i++)
File da includere nei programmi utente.
void main(natl magic, multiboot_info_t *mbi)
void flog(log_sev sev, const char *fmt,...)
void fpanic(const char *fmt,...)
int printf(const char *fmt,...)
int snprintf(char *buf, natl n, const char *fmt,...)
natl sem_ini(int val)
Crea un nuovo semaforo.
void sem_wait(natl sem)
Estrae un gettone da un semaforo.
void sem_signal(natl sem)
Inserisce un gettone in un semaforo.
void delay(natl n)
Sospende il processo corrente.
natl activate_p(void f(natq), natq a, natl prio, natl liv)
Crea un nuovo processo.
void terminate_p()
Termina il processo corrente.