Userapi, Reflection
Matthew Dillon
dillon at apollo.backplane.com
Mon Nov 3 16:11:23 PST 2003
:All,
:
: I have been contemplating how the useapi portion of the project will work
:(for those not farmiliar please see
:http://www.dragonflybsd.org/Goals/userapi.cgi). What I think would be quite
:impressive would be a process that uses reflection (java and c#). Reflection
:is an api that allows for the creation of types, functions, and classes at run
:time. Please see http://java.sun.com/docs/books/tutorial/reflect/index.html
:for information how java does this.
: The idea for userapi would be to use reflection to create callable
:prototypes for systemcalls at run time. Say we have our special user level
:process that handles system calls. It is invoked by the kernel like init. It
:will have a configuration file, containing prototypes for every system call it
:knows how to handle. If linux changes a prototype for one of their system
:calls, the configuration file could be modified accordingly. On a SIGHUP the
:process would re-read the configuration file, and modify the prototypes
:accordingly. The idea is that you could modify, add, and delete system calls
:at runtime, without ever rebooting the os or modifying any code at all.
: This is just a thought I had. It is possible that it is infeasible, but I
:thought I would throw the idea out there and see what other might think of it.
:
:Regards,
:Galen Sampson
Well, I guess the question is: What type of run-time entity would
use these prototypes? I can see adding and removing support for
particular system calls in libc.so dynamically, but the programs that
link into libc would have no visibility into the changes after the
fact. That is, you would still have to either restart an application
or start an application dependant on a new system call after having
loaded the configuration for the system call. This doesn't seem much
different then reinstalling libc on a live system. Applications are
still going to hardwire their understanding of a particular syscall's
API.
-Matt
Matthew Dillon
<dillon at xxxxxxxxxxxxx>
More information about the Kernel
mailing list