On Tue, Aug 03, 2004 at 06:03:53PM +0200, Philippe Gerum wrote:
> > .shutdown     = not really used atm?

> Can be used by skins to intercept any shutdown request kicked by the
> nucleus itself or some other skin, and perform some housekeeping chores
> before linking to xnpod_shutdown() themselves (provides for a simple
> daisy chain mechanism).

I understand the concept of daisy chaining the shutdown (it's documented
:), but I can find no call of nkpod->svctable.shutdown in the nucleus.
(I've made a fulltest search of 'shutdown' over fusion, but found only
things like 'pod.svctable.shutdown = &pse51_shutdown;')

> > .settime      = not really used atm?


> Same as above for changing the nucleus's idea of time. e.g. your skin
> might be interested in knowing of internal calls changing the current
> time using the nucleus API, and not the skin one.

Same as above, I've found no call of svctable.sttime in the nucleus :)


> > .faulthandler = if a trap is rised by the cpu, and a xnthread is active
> Yes, but a thread is not necessarily active at that moment. The handler
> should take care of identifying the faulting context.

Hmm - After winding though about 4-5 layers[1]....this function calls
the svctable.faulthandler, only if a xnthread is active.

int xnpod_trap_fault (void *fltinfo)

{
    if (nkpod == NULL || xnpod_idle_p())
        return 0;

    return nkpod->svctable.faulthandler(fltinfo);
}


> > .unload       = if another pod should be loaded, the current is ased to
> >                 shutdown (used by fusion)
> Yes. This one has been designed to allow skins to pop out the fusion
> skin since it is loaded by default, before installing themselves. Some
> may simply recycle it and install over it, like the new native API does.

this is a nice feature :)


> > What about the .shutdown and .settime handlers, are they
> > going to be used in the future, or even deleted?
> Nope. Look at the pSOS skin for instance.

okay they are used, but they have no effect, cause ne nucleus never
calls them. My new question is: Will the nucleus call in the future the
svctable.settime .shutdown handlers?


regards - Marc


[1] From there fault to the handling.....

1)
rthal catches all HW faults from adeos:
adeos_catch_event(trapnr,&rthal_trap_fault);

2)
rthal_trap_fault calls rthal_trap_handler if in RT-mode
note: rthal_trap_handler is a functionpointer

3)
rthal_trap_handler is set by rthal_set_trap_handler

4)
during xnarch_init():
rthal_set_trap_handler(&xnarch_trap_fault);

5)
in xnarch_trap_fault():
xnpod_trap_fault() is called

6)
xnpod_trap_fault() finally calls the faulthandler defined in the
svctable

note: steps 1, 3, 4 are done during system-setup, not runtime

during faul-runtime its:
adeos -> rthal_trap_fault -> xnarch_trap_fault -> xnpod_trap_fault -> 
svctable.faulthandler

-- 
#!/bin/sh
set - `type $0` 'tr "[a-zA-Z]" "[n-za-mN-ZA-M]"';while [ "$2" != "" ];do \
shift;done; echo 'frq -a -rc '`echo "$0"| $1 `'>$UBZR/.`rpub signature|'`\
echo $1|$1`'`;rpub "Jr ner fvtangher bs obet. Erfvfgnapr vf shgvyr!"'|$1|sh

Reply via email to