Paravirtualization project - GSOC 2013
Philipp Eppelt
philipp.eppelt at mailbox.tu-dresden.de
Sat Apr 6 22:23:50 UTC 2013
Hi,
thanks for the source, Gedare. I built the tool chain and the example
code and thanks to the great Manual(!), it's working.
Now, I have a question regarding the design.
You have chosen to use syscalls to provides functionality to the
partition application (e.g. console writes). From my understanding, one
aspect of the project is to provide a defined interface to run RTEMS on
various other hypervisors. Why did you choose syscalls to provide this
interface?
From my experience there are two other ways to achieve this functionality.
The first is pretty close, but with a different compile process.
There is one header file with function definitions. These functions have
to be implemented in the host and made available in form of a library,
which is used while linking RTEMS.
The second way is used in L4Linux and I did it the same way in L4RTEMS.
Inside the guest system, host functionality is wrapped with a
L4_EXTERNAL_FUNC(..) macro. This macro adds the function to special
sections in the binary, which are defined in the linkcmds file.
Therefore no undefined references occur.
While compiling the wrapper code in L4 the mentioned sections in the
RTEMS binary are scanned and the function addresses get fixed.
This is a very abbreviated explanation. So for further reading I
recommend these files on github [0].
Both ways look like a better portable approach to me, but I assume they
are not as efficient as yours. Mainly, because there will be at least on
more function call to get into the kernel.
I am sure, there is a lot I missed. So what other reasons led you to
your decision?
Regards,
Philipp
[0]
* L4_EXTERNAL_FUNC'tions.
https://github.com/phipse/L4RTEMS/blob/master/c/src/lib/libbsp/l4vcpu/pc386/startup/handler.c
* Section magic:
https://github.com/phipse/L4RTEMS/blob/master/c/src/lib/libbsp/l4vcpu/pc386/startup/l4lib.h
* Resolver the sections:
https://github.com/phipse/L4RTEMS/blob/master/l4/pkg/RTEMS_wrapper/server/src/res.c
* Grab function names; Line 20:
https://github.com/phipse/L4RTEMS/blob/master/l4/pkg/RTEMS_wrapper/server/src/Makefile
On 04/03/2013 10:32 PM, Gedare Bloom wrote:
> The code is here: https://github.com/jolkaczad/rtems
>
> There is a lot to do, although I don't know how what is reasonable in
> the scope of a GSOC project. I think somehow last year's project was
> too ambitious and did not meet all its goals.
>
> On Wed, Apr 3, 2013 at 4:20 PM, Philipp Eppelt
> <philipp.eppelt at mailbox.tu-dresden.de> wrote:
>> Hi,
>>
>> I am interested in the paravirtualization project[0] for this years round of
>> the Google Summer of Code. Unfortunately, I am unable to find results of the
>> mentioned gsoc2011 project. I guess it's the hypervisor project, but I am
>> not allowed to view the proposal, neither have I found any related source
>> code.
>>
>> So is there anything left from the project to build upon?
>>
>> Regards,
>> Philipp
>>
>>
>> [0] http://www.rtems.org/wiki/index.php/RTEMS_Paravirtualization
>> _______________________________________________
>> rtems-users mailing list
>> rtems-users at rtems.org
>> http://www.rtems.org/mailman/listinfo/rtems-users
More information about the users
mailing list