syscall/sysmsg overview
Matthew Dillon
dillon at apollo.backplane.com
Fri Jun 23 09:50:23 PDT 2006
:I've been digging around in the code here:
:
:/usr/src/share/examples/kld/syscall/module
:
:trying to learn more about the new syscall messaging infrastructure.
:I realize the code is old and outdated. I have read the information
:available at www.dragonflybsd.org with regard to the new sysmsg work.
:I don't quite understand how a sysmsg is constructed or where exactly.
:...
:call. Any pointers to places in the code I can read to learn more
:would also be helpful. I've looked at /sys/i386/i386/trap.c and the
:sys{msg,union,proto}.h header files.
:
:Also any information with regard to adding syscalls via KLD would be a
:boon as well. I have a hacked up version of the example that passes
:data from userland to the kernel and back again but I feel this isn't
:quite right.
:
:Joe
Heh. I just ripped most of it out. The structural infrastructure is
still there, but it's no longer 'messaged'.
Basically just look at any existing system call. For example,
sys_utimes() in kern/vfs_syscalls.c.
Any pointers supplies by userland, for example a pointer to a timeval,
must be copied into kernel space before the kernel can safely access
it. You also need to avoid declaring large structures or buffers
on the kernel stack, so for example you would have to malloc() that
1024 byte buffer in your example.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list