Remove SYS_cache_buster (XCC)
authorBarret Rhoden <brho@cs.berkeley.edu>
Tue, 16 Aug 2016 17:59:56 +0000 (13:59 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Tue, 29 Nov 2016 16:27:40 +0000 (11:27 -0500)
"You're killing me, Buster."

Reinstall your kernel headers.

Signed-off-by: Barret Rhoden <brho@cs.berkeley.edu>
kern/include/ros/bits/syscall.h
kern/src/syscall.c

index 36a8db6..6ee93d8 100644 (file)
 #define SYS_fd2path                            149
 
 /* Syscalls we plan to remove someday */
-#define SYS_cache_buster        200
-
-/* For Buster Measurement Flags */
-#define BUSTER_SHARED                  0x0001
-#define BUSTER_STRIDED                 0x0002
-#define BUSTER_LOCKED                  0x0004
-#define BUSTER_PRINT_TICKS             0x0008
-#define BUSTER_JUST_LOCKS              0x0010 // unimplemented
+/* was SYS_cache_buster        200 */
 
 // for system calls that pass filenames
 #define MAX_PATH_LEN 256
index 8758f2c..e75c1b2 100644 (file)
@@ -525,79 +525,6 @@ static int sys_nanosleep(struct proc *p,
        return 0;
 }
 
-// Writes 'val' to 'num_writes' entries of the well-known array in the kernel
-// address space.  It's just #defined to be some random 4MB chunk (which ought
-// to be boot_alloced or something).  Meant to grab exclusive access to cache
-// lines, to simulate doing something useful.
-static int sys_cache_buster(struct proc *p, uint32_t num_writes,
-                             uint32_t num_pages, uint32_t flags)
-{
-       #define BUSTER_ADDR             0xd0000000L  // around 512 MB deep
-       #define MAX_WRITES              1048576*8
-       #define MAX_PAGES               32
-       #define INSERT_ADDR     (UINFO + 2*PGSIZE) // should be free for these tests
-       uint32_t* buster = (uint32_t*)BUSTER_ADDR;
-       static spinlock_t buster_lock = SPINLOCK_INITIALIZER;
-       uint64_t ticks = -1;
-       page_t* a_page[MAX_PAGES];
-
-       /* Strided Accesses or Not (adjust to step by cachelines) */
-       uint32_t stride = 1;
-       if (flags & BUSTER_STRIDED) {
-               stride = 16;
-               num_writes *= 16;
-       }
-
-       /* Shared Accesses or Not (adjust to use per-core regions)
-        * Careful, since this gives 8MB to each core, starting around 512MB.
-        * Also, doesn't separate memory for core 0 if it's an async call.
-        */
-       if (!(flags & BUSTER_SHARED))
-               buster = (uint32_t*)(BUSTER_ADDR + core_id() * 0x00800000);
-
-       /* Start the timer, if we're asked to print this info*/
-       if (flags & BUSTER_PRINT_TICKS)
-               ticks = start_timing();
-
-       /* Allocate num_pages (up to MAX_PAGES), to simulate doing some more
-        * realistic work.  Note we don't write to these pages, even if we pick
-        * unshared.  Mostly due to the inconvenience of having to match up the
-        * number of pages with the number of writes.  And it's unnecessary.
-        */
-       if (num_pages) {
-               spin_lock(&buster_lock);
-               for (int i = 0; i < MIN(num_pages, MAX_PAGES); i++) {
-                       upage_alloc(p, &a_page[i],1);
-                       page_insert(p->env_pgdir, a_page[i], (void*)INSERT_ADDR + PGSIZE*i,
-                                   PTE_USER_RW);
-               }
-               spin_unlock(&buster_lock);
-       }
-
-       if (flags & BUSTER_LOCKED)
-               spin_lock(&buster_lock);
-       for (int i = 0; i < MIN(num_writes, MAX_WRITES); i=i+stride)
-               buster[i] = 0xdeadbeef;
-       if (flags & BUSTER_LOCKED)
-               spin_unlock(&buster_lock);
-
-       if (num_pages) {
-               spin_lock(&buster_lock);
-               for (int i = 0; i < MIN(num_pages, MAX_PAGES); i++) {
-                       page_remove(p->env_pgdir, (void*)(INSERT_ADDR + PGSIZE * i));
-                       page_decref(a_page[i]);
-               }
-               spin_unlock(&buster_lock);
-       }
-
-       /* Print info */
-       if (flags & BUSTER_PRINT_TICKS) {
-               ticks = stop_timing(ticks);
-               printk("%llu,", ticks);
-       }
-       return 0;
-}
-
 static int sys_cache_invalidate(void)
 {
        #ifdef CONFIG_X86
@@ -2522,7 +2449,6 @@ static intreg_t sys_tap_fds(struct proc *p, struct fd_tap_req *tap_reqs,
 const struct sys_table_entry syscall_table[] = {
        [SYS_null] = {(syscall_t)sys_null, "null"},
        [SYS_block] = {(syscall_t)sys_block, "block"},
-       [SYS_cache_buster] = {(syscall_t)sys_cache_buster, "buster"},
        [SYS_cache_invalidate] = {(syscall_t)sys_cache_invalidate, "wbinv"},
        [SYS_reboot] = {(syscall_t)reboot, "reboot!"},
        [SYS_getpcoreid] = {(syscall_t)sys_getpcoreid, "getpcoreid"},