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

wirehaze git hosting

add ppos/
[ppos.git] / ppos / kernel / task.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_TASK__
9 #define __PPOS_TASK__
10
11 #include "tcb.h"
12
13 // inicializa o subsistema de tarefas
14 void task_init();
15
16 // cria uma nova tarefa: "name" é o nome da tarefa, "entry"
17 // é a função que ela irá executar e "arg" aponta para o valor
18 // recebido por "entry" ao iniciar (pode ser NULL).
19 // retorno: ptr para o descritor da tarefa ou NULL se houver erro
20 struct task_t *task_create(char *name, void (*entry)(void *),
21 void *arg);
22
23 // destroi uma tarefa e libera seus recursos;
24 // somente deve atuar sobre tarefas terminadas.
25 // Retorno: NOERROR (0) ou ERROR (<0)
26 int task_destroy(struct task_t *task);
27
28 // transfere a cpu da tarefa atual para outra tarefa;
29 // se task == NULL, transfere para a tarefa que a criou.
30 // ignora sem erro se "task" já tiver terminado.
31 // Retorno: NOERROR (0) ou ERROR (<0)
32 int task_switch(struct task_t *task);
33
34 // informa o ID de uma tarefa (ou da tarefa atual se NULL)
35 int task_id(struct task_t *task);
36
37 // informa o nome de uma tarefa (ou da tarefa atual se NULL)
38 char *task_name(struct task_t *task);
39
40 #endif