l4-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Basic cap server


From: Matthieu Lemerre
Subject: Basic cap server
Date: Thu, 28 Jul 2005 21:28:56 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (gnu/linux)

Hi everybody,

I wrote a tiny cap server.  I'm not sure we will keep many things of
it at last, but its implemented interfaces should be OK enough to use
it.

Many questions can be raised about its internal design, for instance
who should allocate the container it would use for server objects and
cap boxes.  It can either be the client (but we would have a bootstrap
problem), or the cap server itself, as it's it who accounts every used
ressource of the system, it can easily add the one it uses. (Moreover
it could be very inconvenient if a client could drop memory used by
the cap server).  

Another one is that we should have a way for a server to drop a
reference a client has.  Thus it must have some way to identify a
particular reference to a server object.  This isn't implemented yet.

Finally, we would have to iterate over the server objects and cap
boxes a client has when it dies. 

These are open questions; as we don't know yet all the interfaces the
cap server should respond to, I follow Marcus' advice not to bother
about a clean and efficient implementation for now.

However, the implemented interfaces should be fine, and could be used
as a basis for porting libhurd-cap-server I think.  Marcus, I think
I'll work on this unless you have a better plan.

I added to the patch a file cap/cap-server.h, which contains
definitions which should be general to any server. To avoid conflicts,
I left him in the cap subdirectory.

Also with the patch comes a new dir for the notification server, which
I need to clean up a little, and make it use libhurd-cap-server to be
complete. So for now, it's just a simple thread which does nothing.  I
felt that after wortel, laden, physmem and task, we could stay in the
international so I named it "postier" (french word for postman). I
hope that it's not too ugly for your non-french ears ;)

I also changed wortel so that it loads the 6 other servers.  To avoid
memory overlap, I changed wortel and physmem's linkbases.

The patch adds the 2 new servers, so it's quite big.

Thanks,
Matthieu

Changelogs for postier and cap:

2005-07-28 Matthieu Lemerre <address@hidden>
        
        * Initial check-in. 

Changelog for physmem:

2005-07-28  Matthieu Lemerre  <address@hidden>

        * config.m4: Changed load address to 500000

Changelog for /:

2005-07-28  Matthieu Lemerre  <address@hidden>

        * configure.ac (AC_CONFIG_FILES): Add postier/Makefile and cap/Makefile
        * Makefile.am (SUBDIRS): Add postier and cap.

Changelog for wortel:

2005-07-28  Matthieu Lemerre  <address@hidden>

        * wortel.c (mod_names): Added postier-mod and cap-mod.
        (start_cap, start_postier): New functions.
        (setup_components): Add extra threads to cap.
        (start_elf): Changed assert: cap also has extra threads.
        (serve_bootstrap_requests): Changed boot order to boot cap and postier.
        * wortel-intern.h (wortel_module_type): Added MOD_CAP and
        MOD_POSTIER.
        * config.m4: Change wortel's load address to 0x400000

Attachment: patch
Description: Binary data


reply via email to

[Prev in Thread] Current Thread [Next in Thread]