]>
wirehaze git hosting - ppos.git/blob - ppos/kernel/semaphore.h
1 // PingPongOS - PingPong Operating System
2 // Prof. Carlos A. Maziero, DINF UFPR
3 // Versão 2.0 -- Junho de 2025
5 // ATENÇÃO: ESTE ARQUIVO NÃO DEVE SER ALTERADO;
6 // ALTERAÇÕES SERÃO DESCARTADAS NA CORREÇÃO.
8 #ifndef __PPOS_SEMAPHORE__
9 #define __PPOS_SEMAPHORE__
11 // Estrutura que define um semáforo (struct opaco).
12 // Este struct deve ser redefinido em semaphore.c
15 // inicia o subsistema de semáforos
18 // Cria um novo semáforo, inicializado com value >= 0.
19 // Retorno: ptr para o semáforo ou NULL (erro).
20 struct semaphore_t
*sem_create(int value
);
22 // Requisita acesso a um semáforo
23 // Retorno: NOERROR (0) ou ERROR (<0)
24 int sem_down(struct semaphore_t
*s
);
26 // libera o acesso a um semáforo
27 // Retorno: NOERROR (0) ou ERROR (<0)
28 int sem_up(struct semaphore_t
*s
);
30 // destrói um semáforo, liberando recursos e tarefas bloqueadas
31 // Retorno: NOERROR (0) ou ERROR (<0)
32 int sem_destroy(struct semaphore_t
*s
);
34 // trava um spin-lock (busy wait)
35 void spin_lock(int *lock
);
37 // libera um spin-lock
38 void spin_unlock(int *lock
);