Re: Question about dec_lock_cnt method in Context class

Adam Lackorzynski <[email protected]>
Newsgroups gmane.comp.micro-kernel.l4.devel
Message-ID <[email protected]>
On Mon Sep 08, 2014 at 11:54:32 -0400, Yuxin Ren wrote:
> Unfortunately this modification does not help.
> I have a question about the switch_lock code.
> 
> PRIVATE inline
> bool NO_INSTRUMENT
> Switch_lock::set_lock_owner(Context *o)
> {
>   bool have_no_locks = o->_lock_cnt < 1;
> 
>   if (have_no_locks)
>     {
>       assert_kdb (current_cpu() == o->home_cpu());
>       for (;;)
>         {
>           if (EXPECT_FALSE(access_once(&o->_running_under_lock)))
>             continue;
>           if (EXPECT_TRUE(mp_cas(&o->_running_under_lock, Mword(false),
> Mword(true))))
>             break;
>         }
>     }
>     ...
> }
> 
> In which case, the variable "_running_under_lock"  is set to true but the
> lock_cnt is 0?
> Now in my test, the kernel goes into this dead loop.

Do you know when it was set to true? Maybe that would help finding out
why it is stuck there?



Adam
-- 
Adam                 [email protected]
  Lackorzynski         http://os.inf.tu-dresden.de/~adam/
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.