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;
}
|