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

[MiNT] analysing syscall.spp



Hi!

I had a look at syscall.spp to understand what's going on there and how the
trap handlers can be improved (currently I'm concentrating on the GEMDOS but
(X)BIOS will follow)

At the moment the following things are done (- for GEMDOS, * for GEMDOS and
(X)BIOS):

- checking for reentrance (flag in_kernel)
- saving context
- copy parameters
- enter gemdos (kernel)
* flush Bconout buffer if neccessary
* do the call
* mark if trace is pending
* task switching if neccessary, otherwise signal handling if neccessary
* leave kernel
* restore context

Now the question is:
What of the above is nesccessary for which call?
This means:
Which GEMDOS calls are already reentrant?
Which (GEMDOS) calls need saving of the context?
Which GEMDOS calls need the enter_gemdos call?
When is flushing of the Bconout buffer neccessary?

Especially the saving/restoring of the context seems to be expensive and
should only be done if neccessary

Can anyone answer one of this questions? (at least for some functions)

Bye

                Joerg