Track Program_Counter(PC)/regs of L4Linux Task

Julian Grizzard grizzard at ece.gatech.edu
Sat Dec 17 03:44:01 CET 2005


Adam Lackorzynski wrote:
</snip>
cool

>>Additional threads >= 5, one for each IRQ (virtual not implemented yet)
> 
> 
> virtual not implemented yet?

apparently not, but for my setup this hasn't really been a problem:

/*
 * _virt functions are empty for now.
 */
unsigned int l4lx_irq_dev_startup_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
        return 0;
}
void l4lx_irq_dev_shutdown_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
}
void l4lx_irq_dev_ack_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
}
void l4lx_irq_dev_end_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
}
void l4lx_irq_dev_enable_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
}
void l4lx_irq_dev_disable_virt(unsigned int irq)
{
        printk("%s(%d) unimplemented\n", __func__, irq);
}


> 
> 
>>   the entry functions for these threads are
>>   irq_dev_thread --- the main handler
>>   l4lx_irq_dev_startup_hw  --- gets irq_dev_thread started
>>   l4lx_irq_dev_shutdown_hw
>>   l4lx_irq_dev_enable_hw
>>   l4lx_irq_dev_disable_hw
>>   l4lx_irq_dev_ack_hw
>>   l4lx_irq_dev_end_hw
>>   l4lx_irq_dev_startup_virt
>>   l4lx_irq_dev_shutdown_virt
>>   l4lx_irq_dev_enable_virt
>>   l4lx_irq_dev_disable_virt
>>   l4lx_irq_dev_ack_virt
>>   l4lx_irq_dev_end_virt
> 
> 
> Not only irq threads but also all other threads that may be allocated by
> stubs etc.
okay, so I think I found the easiest solution to my question, which is
to grep through the L4Linux source for l4lx_thread_create.  I assume
that all L4 threads in L4Linux are created through that API except
threads 0 and 1 which you explained are created by the L4Env startup.


> 
> 
>>Anything wrong with that description?  What does thread 1 do?  I can't
>>seem to track it down.
> 
> 
> All l4env apps have thread0 (region manager thread) and thread1
> (semaphore), real work starts in thread2.
gotcha

> 
> 
>>Also, which thread is responsible for handling
>>system calls?
> 
> 
> thread3, it actually runs the Linux kernel.
> 
> 
>>Is that what thread 1 does maybe?  Which L4Linux function
>>does the system call handler function start?
> 
> 
> Maybe you mean l4x_user_dispatcher()?
ah, yes.  that looks like the important function that I was thinking
should exist somewhere.

excellent, Thanks!

Julian




More information about the l4-hackers mailing list