summaryrefslogtreecommitdiff
path: root/testcase/helloworld.c
diff options
context:
space:
mode:
Diffstat (limited to 'testcase/helloworld.c')
-rw-r--r--testcase/helloworld.c51
1 files changed, 51 insertions, 0 deletions
diff --git a/testcase/helloworld.c b/testcase/helloworld.c
new file mode 100644
index 0000000..554b258
--- /dev/null
+++ b/testcase/helloworld.c
@@ -0,0 +1,51 @@
+#include "../user/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;
+} \ No newline at end of file