]> wirehaze git hosting - ppos.git/blob - ppos/test/pingpong-contab-stress.c

wirehaze git hosting

tasks implementation (ongoing)
[ppos.git] / ppos / test / pingpong-contab-stress.c
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 // Teste da contabilização com muitas tarefas (stress)
9
10 #include <assert.h>
11 #include "lib/libc.h"
12 #include "ppos.h"
13
14 #define WORKLOAD 5000
15 #define NUMTASKS 512
16
17 static struct task_t *task[NUMTASKS];
18
19 // simula um processamento pesado
20 int hardwork(int n)
21 {
22 int soma = 0;
23
24 for (int i = 0; i < n; i++)
25 for (int j = 0; j < n; j++)
26 soma += j;
27 return (soma);
28 }
29
30 // corpo das tarefas
31 void body()
32 {
33 for (int i = 0; i < 3; i++)
34 hardwork(WORKLOAD);
35 task_exit(0);
36 }
37
38 // corpo da tarefa principal
39 void user_main(void *arg)
40 {
41 printf("user: inicio\n");
42
43 // cria tarefas
44 printf("Creating %d tasks\n", NUMTASKS);
45 for (int i = 0; i < NUMTASKS; i++)
46 {
47 task[i] = task_create(NULL, body, NULL);
48 assert(task[i]);
49 }
50
51 printf("user: fim\n");
52
53 task_exit(0);
54 }