Re: Extending l4sys by reading/writing register values of a preempted thread

Denis Huber <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
Hello Ludwig,

> Why not use ex_regs() on the thread to trigger an exception. That way, the
> attached userland exception handler can introspect the thread's complete
> register set. It can also alter the registers, so that the thread continues to
> run with the modified register set.
>
> Is there anything more you need?

I already tried ex_regs(). The problem with this function is, that it 
does not return all registers, if the thread is in a syscall. It only 
returns the PC and SP registers.

> A thread's userland registers are stored on every entry to the kernel. The
> class in Fiasco is called Entry_frame.
>
> The userland exception handler mentioned above modifies that Entry_frame.

Where does the kernel store the Entry_frame object for each thread? Is 
it the location where Context::regs() points to?

> When the scheduler selects a thread, its userland state (Entry_frame) is
> restored on exit from kernel mode.

Can you point to the function that executes this code?

> Yes, that PC line is the userland program counter. the USP is the userland
> stack pointer. All userland registers are located at the top of kernel stack
> for a particular thread.

> In short mode, press 's' for a list of all tasks. Select the task in question
> and the press 'o' to see the capability space for that task.

> Hope that helps,
>
>
>  - Christian
>

Thanks for your answer.


Kind regards,
Denis
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.