Track Program_Counter(PC)/regs of L4Linux Task
Julian Grizzard
grizzard at ece.gatech.edu
Tue Dec 13 21:33:20 CET 2005
Hi Martin,
Thanks for your response. A few clarifications to let you know where I
am coming from:
Martin Pohlack wrote:
> I don't know what kind of cooperation between tasks you assume, but you
> could try to instrument all tasks in the system to give you the required
> information via shared memory, without hacking the kernel.
Actually, I assume no cooperation between tasks. The purpose of the
monitoring task is to test the trustworthyness of the L4Linux task, so I
don't want to trust a possibly untrustworthy L4Linux task to cooperate.
>>-Obtain the PC/regs for the first thread (thread 0) for L4Linux just
>>before the thread executes it's first instruction. It would be nice to
>>make the thread wait for a signal before beginning execution.
>
>
> The registers before the first instruction seem to be useless. IP and
> SP are set via exregs, the rest should be execution defined. You could
> directly get IP and SP from the exregser.
>
>
>>-Obtain the PC/regs for any additional thread created or any thread
>>moved for L4Linux (i.e. from a l4_thread_ex_regs call) just before that
>>thread executes. Again, it would be nice to make that thread wait for a
>>signal before beginning its execution.
>>
>>-Randomly preemptively obtain the PC/regs for all threads of L4Linux.
>
>
> I don't know what you mean by "Randomly preemptively".
>
> You could hack something in into the timeout interrupt handler of fiasco
> and use somewhat random timeouts.
The thinking behind random preemption is to somehow ensure that the
monitoring agent gets a random sample of where the PC is. I was
thinking along the lines of randomly change the timeout interrupt in
fact. I'm not sure how good this would be for performance though; just
a loose idea right now.
>
>
>>-Obtain the PC/regs for all threads of L4Linux on demand.
>
>
> Use exregs, for the IP, SP you can directly get the answer by issueing
> -1, IIRC. This should also explain your 0xffffffff below.
Not completely sure what you mean here. Are you refering to the
l4_thread_ex_regs system call? What do you mean by issueing -1, IIRC?
If so, is it possible to use that from within the fiasco kernel? Or did
you mean do that from with the L4Linux task? Also, I believe that does
explain the 0xffffffff addresses. I must be seeing the 0xffffffff for
IP and SP when a l4_thread_ex_regs is called with those values filled in
for eip/esp.
Thanks!
Julian
More information about the l4-hackers
mailing list