summaryrefslogtreecommitdiff
path: root/helloworld.c
blob: 1416d5a043c92ad7b93a16c7afbceb9afbd5b2e9 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#include "monitor_user.h"
#include <stdio.h>
#include <unistd.h>
#include <string.h>

#define NUM_VARS 2049

int main()
{
    int i = 0;
    int temps[NUM_VARS] = {0};
    watch_arg watch_args[NUM_VARS] = {0};

    cancel_watch();

    for (i = 0; i < NUM_VARS; i++)
    {
        temps[i] = 100;

        watch_args[i] = (watch_arg){
            .task_id = getpid(),
            .ptr = &temps[i],
            .name = "temp",
            .length_byte = sizeof(int),
            .threshold = 150 + i,
            .unsigned_flag = 0,
            .greater_flag = 1,
            .time_ns = 2000 + (i / 33) * 5000, // on hyper-v, 1us will block all system. 2us just fine, maybe 1us is too short for hyper-v
        };
        char name[20];
        snprintf(name, sizeof(name), "temp%d", i);
        // 拷贝字符串
        strncpy(watch_args[i].name, name, (MAX_NAME_LEN + 1));

        start_watch(watch_args[i]);
    }

    while (temps[NUM_VARS - 1] < 205)
    {
        for (i = 0; i < NUM_VARS; i++)
        {
            temps[i]++;
        }
        printf("Value of variable %d: %d", i, temps[0]);
        printf("\n");
        sleep(1);
    }

    cancel_watch();
    return 0;
}