strace: Use the kpage allocator for traces
authorBarret Rhoden <brho@cs.berkeley.edu>
Thu, 9 Feb 2017 17:09:00 +0000 (12:09 -0500)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 9 Feb 2017 17:31:44 +0000 (12:31 -0500)
We're allocating 4096 from kmalloc, which is actually a two-page
allocation (due to the tag).  We might as well just grab a single page,
and call it a day.

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

index 9f068d7..658174a 100644 (file)
@@ -193,7 +193,7 @@ static void systrace_start_trace(struct kthread *kthread, struct syscall *sysc)
                return;
        /* TODO: consider a block_alloc and qpass, though note that we actually
         * write the same trace in twice (entry and exit). */
-       trace = kmalloc(SYSTR_BUF_SZ, MEM_ATOMIC);
+       trace = kpages_alloc(SYSTR_BUF_SZ, MEM_ATOMIC);
        if (p->strace) {
                if (!trace) {
                        atomic_inc(&p->strace->nr_drops);
@@ -294,7 +294,7 @@ static void systrace_finish_trace(struct kthread *kthread, long retval)
        }
 
        systrace_output(trace, p->strace, FALSE);
-       kfree(kthread->strace);
+       kpages_free(kthread->strace, SYSTR_BUF_SZ);
        kthread->strace = 0;
 }