]> wirehaze git hosting - ppos.git/blob - ppos/kernel/semaphore.h

wirehaze git hosting

add ppos/
[ppos.git] / ppos / kernel / semaphore.h
1 // PingPongOS - PingPong Operating System
2 // Prof. Carlos A. Maziero, DINF UFPR
3 // Versão 2.0 -- Junho de 2025
4
5 // ATENÇÃO: ESTE ARQUIVO NÃO DEVE SER ALTERADO;
6 // ALTERAÇÕES SERÃO DESCARTADAS NA CORREÇÃO.
7
8 #ifndef __PPOS_SEMAPHORE__
9 #define __PPOS_SEMAPHORE__
10
11 // Estrutura que define um semáforo (struct opaco).
12 // Este struct deve ser redefinido em semaphore.c
13 struct semaphore_t;
14
15 // inicia o subsistema de semáforos
16 void sem_init();
17
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);
21
22 // Requisita acesso a um semáforo
23 // Retorno: NOERROR (0) ou ERROR (<0)
24 int sem_down(struct semaphore_t *s);
25
26 // libera o acesso a um semáforo
27 // Retorno: NOERROR (0) ou ERROR (<0)
28 int sem_up(struct semaphore_t *s);
29
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);
33
34 // trava um spin-lock (busy wait)
35 void spin_lock(int *lock);
36
37 // libera um spin-lock
38 void spin_unlock(int *lock);
39
40 #endif