]> rtime.felk.cvut.cz Git - hercules2020/jailhouse-build.git/commitdiff
Current memguard version + updated test
authorMichal Sojka <michal.sojka@cvut.cz>
Mon, 29 Oct 2018 09:28:54 +0000 (10:28 +0100)
committerMichal Sojka <michal.sojka@cvut.cz>
Mon, 29 Oct 2018 09:28:54 +0000 (10:28 +0100)
jailhouse
nv-tegra/kernel/kernel-4.4
test/memguard-test.c

index 8684e3e84efa31049ad07465395d685570b09a04..3b9d2d21ad7a33a2c074ff9f022646016c9d7cb5 160000 (submodule)
--- a/jailhouse
+++ b/jailhouse
@@ -1 +1 @@
-Subproject commit 8684e3e84efa31049ad07465395d685570b09a04
+Subproject commit 3b9d2d21ad7a33a2c074ff9f022646016c9d7cb5
index f74e90edb90286aed5cabe9eeef00cac091358ae..37ef97361d24278e9d52327b53adde448174936d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit f74e90edb90286aed5cabe9eeef00cac091358ae
+Subproject commit 37ef97361d24278e9d52327b53adde448174936d
index d24e43d652731b2caa2f3527465d1e603b5a7339..6b8dd0aa7862ddec0d2e0e979b614aef3f563dea 100644 (file)
@@ -29,10 +29,10 @@ void compute_kernel(int time_ms){
     uint64_t current_us, end_us;
     clock_gettime(CLOCK_MONOTONIC, &ts);
     end_us = ts.tv_sec * 1000000 + ts.tv_nsec / 1000 + time_ms * 1000;
-    do{
-        clock_gettime(CLOCK_MONOTONIC, &ts);
-        current_us = ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
-    }while(current_us < end_us);
+    do {
+       clock_gettime(CLOCK_MONOTONIC, &ts);
+       current_us = ts.tv_sec * 1000000 + ts.tv_nsec / 1000;
+    } while (current_us < end_us);
 }
 
 long memory_kernel(long lines){
@@ -44,7 +44,7 @@ long memory_kernel(long lines){
 
 void random_memory_kernel(long lines) {
     uint32_t index;
-    
+
     for(long i=0; i<lines; i++) {
         index = (uint32_t)rand();
         index = index % RANDOM_ARRAY_SIZE;
@@ -52,69 +52,75 @@ void random_memory_kernel(long lines) {
     }
 }
 
-long prem_memguard_check(unsigned long phase,
+/* Memguard flags */
+#define MGF_PERIODIC  (1 << 0) /* Chooses between periodic or one-shot budget replenishment */
+#define MGF_RET_STATS (1 << 1) /* Return statistics since the last call (cache misses, time, ...?) */
+#define MGF_MASK_INT  (1 << 2) /* Mask (disable) low priority interrupts until next memguard call */
+
+long prem_memguard_check(unsigned long timeout,
                    unsigned long memory_budget,
-                   unsigned long timeout)
+                   unsigned long flags)
 {
-       return syscall(SYS_prem_memguard_check, phase, memory_budget, timeout);
+    return syscall(SYS_prem_memguard_check, timeout, memory_budget, flags);
 }
 
 int main(int argc, char *argv[])
 {
     cpu_set_t set;
-       int cpu = 0;
+    int cpu = 0;
 
-       if (argc > 1)
-               cpu = atoi(argv[1]);
+    if (argc > 1)
+       cpu = atoi(argv[1]);
 
-       /* Ensure that memory phase starts and ends on the same CPU */
-       CPU_ZERO(&set);
-       CPU_SET(cpu, &set);
-       if (sched_setaffinity(getpid(), sizeof(set), &set) < 0)
-               err(1, "sched_setaffinity");
-       printf("Pinned to CPU %d\n", cpu);
+    /* Ensure that memory phase starts and ends on the same CPU */
+    CPU_ZERO(&set);
+    CPU_SET(cpu, &set);
+    if (sched_setaffinity(getpid(), sizeof(set), &set) < 0)
+       err(1, "sched_setaffinity");
+    printf("Pinned to CPU %d\n", cpu);
 
     printf("X1\n");
     fflush(stdout);
-       //prem_memguard_check(950000, 1933440000, 1);
-    prem_memguard_check(950000, 1933440000, 1);
+    //prem_memguard_check(950000, 1933440000, 1);
+    prem_memguard_check(100000, 1000, MGF_PERIODIC);
     compute_kernel(1000);
-    prem_memguard_check(0, 0, 1);
-    
+    //prem_memguard_check(0, 0, 1);
+
     printf("X2\n");
     fflush(stdout);
     //prem_memguard_check(1050000, 2136960000, 1);
-    prem_memguard_check(1050000, 2136960000, 1);
+    prem_memguard_check(1050000, 2136960000, 0);
     compute_kernel(1000);
-    prem_memguard_check(0, 0, 1);
-    
+    //prem_memguard_check(0, 0, 1);
+
     printf("X3\n");
     fflush(stdout);
     //prem_memguard_check(1000000, 500, 1);
-    prem_memguard_check(1000000, 5000000, 1);
+    prem_memguard_check(100000, 500, MGF_PERIODIC);
     memory_kernel(100000000);
-    prem_memguard_check(0, 0, 1);
-    
+    //prem_memguard_check(0, 0, 1);
+
     printf("X4\n");
     fflush(stdout);
     //prem_memguard_check(1000000, 1500, 1);
-    prem_memguard_check(1000000, 15000000, 1);
+    prem_memguard_check(1000000, 15000000, 0);
     memory_kernel(100000000);
-    prem_memguard_check(0, 0, 1);
-    
+    //prem_memguard_check(0, 0, 1);
+
     printf("X5\n");
     fflush(stdout);
     //prem_memguard_check(1000000, 10000, 1);
-    prem_memguard_check(1000000, 100000, 1);
+    prem_memguard_check(1000000, 100000, 0);
     random_memory_kernel(100000000);
-    prem_memguard_check(0, 0, 1);
-    
+    //prem_memguard_check(0, 0, 1);
+
     printf("X6\n");
     fflush(stdout);
     //prem_memguard_check(1000000, 10000000, 1);
-    prem_memguard_check(1000000, 100000000, 1);
+    prem_memguard_check(1000000, 100000000, 0);
     random_memory_kernel(100000000);
-    prem_memguard_check(0, 0, 1);
 
-       return 0;
+    prem_memguard_check(0, 0, 0);
+
+    return 0;
 }