Add helper to run a function as a routine kmsg
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Jul 2018 00:57:05 +0000 (20:57 -0400)
committerBarret Rhoden <brho@cs.berkeley.edu>
Fri, 20 Jul 2018 14:25:54 +0000 (10:25 -0400)
commit324dd8b894f90da8199121d1ee523a8066faa9ba
treeb6d019ef8fd76715e542f763ae078f057851d792
parent1e467e30c44ad56e0c63bd95afe104d71cd434c1
Add helper to run a function as a routine kmsg

I often want to just create a kernel message that runs a particular
function that already exists.  This helper (and its associated magic)
will do that for you.

The one slightly nasty thing is that we pass the function pointer as the
first argument.  Kernel messages run functions of type amr_t, and those
functions first argument is the source of the message.  That means we
can't just pass an arbitrary function and run it.  We used to have to
make trampoline functions - now we have a generic trampoline.

If we ever drop the message source, then we could just cast the argument
'f' to an amr_t.

Gotta love the macros.

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