The implementation of CPU reservation server

Sean sean0920 at gmail.com
Mon Jun 1 14:03:49 CEST 2009


*Dear   Udo

Thanks for your reply.
*

On Mon, Jun 1, 2009 at 2:32 AM, Udo A. Steinberg <udo at hypervisor.org> wrote:

> On Mon, 1 Jun 2009 01:57:46 +0800 Sean (S) wrote:
>
> S> Function l4_rt_generic() is implemented by inline assembly, and it seems
> S> to call the system call "thread_schedule".
>
> Indeed.
>
> S>      Because these functions only appears in ARCH-x86 directory, do they
> S> support on ARM architecture?
>
> Currently these functions are available on x86 only.
>
> S>      If not, how can I implement similar behaviors of these functions?
> S>      Where can I find the document about the L4 system call API ? I
> can't
> S> really understand the behavior of these functions.
>
>
> The API is described in my diploma thesis, see
> http://os.inf.tu-dresden.de/papers_ps/steinberg-diplom.pdf
>
> You would have to extend the kernel ABI (e.g., which parameters are passed
> in which registers) for ARM to be able to use these extensions. Note that
> the real-time scheduling code in Fiasco is quite dated. No one has used or
> maintained it in the last 5 years.
>
> S> 2. When system contains three user threads, I want to control Fiasco
> S> scheduler not to schedule one thread in these three threads during one
> S> time interval. How can I implement it?
> S>     The simplest way seems to control this thread into un-running state.
> S> How can I achieve this by a supervisal server?
>
> I suggest you read the aforementioned PDF document first. It describes how
> you can control thread execution with periods, deadlines and release times.

*
I got confused here.
I already go through your diploma thesis. This thesis describes the design
issues and implementation detail of the Periodic Mode support for Fiasco. If
I don't want to control thread execution with periods, deadlines and etc. ,
how can I implement the functionality I mentioned?

My goal is that

In the system, there are several user threads. During a time interval, some
particular user threads will not be scheduled even though these threads are
in ready state.

How can I implement it? Does any exist function/API support it?
I already have several directions below. I hope anyone give me some
suggestions.
1. Directly change the state of these threads to non-ready by system call
thread_ex_regs_sc.
    But there are some problems because the thread_ex_regs_sc can be called
by the thread in same address space. And I'm not sure the thread states
maintained by Fiasco and whether I can change the state directly.

2. Modify the Fiasco scheduler. Before choosing the thread to schedule, the
Fiasco scheduler checks a list contained un-scheduled threads IDs.
    But the maintenance of this list is a problem. Maybe I need to add a new
system call for this.

Thanks a lot for your reading!

Best Regards,
Sean*


>
>
> Cheers,
>
>        - Udo
>
> _______________________________________________
> l4-hackers mailing list
> l4-hackers at os.inf.tu-dresden.de
> http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://os.inf.tu-dresden.de/pipermail/l4-hackers/attachments/20090601/d1b5dceb/attachment.html>


More information about the l4-hackers mailing list