Ticketing spinlocks - How to get to the owner who locked the spinlock?
Arun KS
getarunks at gmail.com
Tue Jan 27 01:12:48 EST 2015
Hello Manty,
On Tue, Jan 27, 2015 at 11:27 AM, manty kuma <mantykuma at gmail.com> wrote:
>
> Hi All,
>
> Currently I am looking into an issue which is holding the printk lock(logbuf_lock)
>
> logbuf_lock = {
> raw_lock = {
> owner = 0,
> next = 4
> }
> }
>
> I read about ticketing spinlocks to understand the above output. I understood that 4 cpu's are waiting for the lock while someone already has it.
>
> I would like to know who has it? Is there a way I can know which process is acquiring a given spinlock? Is the information not stored in it?
>
> I am using crash tool to analyse the dump
crash> raw_spinlock_t
typedef struct raw_spinlock {
arch_spinlock_t raw_lock;
unsigned int magic;
unsigned int owner_cpu;
void *owner;
} raw_spinlock_t;
SIZE: 16
The owner field points to task holding the lock, if locked.
Here is what i have in one of my dumps,
crash> logbuf_lock
logbuf_lock = $6 = {
raw_lock = {
{
slock = 464001960,
tickets = {
owner = 7080,
next = 7080
}
}
},
magic = 3735899821,
owner_cpu = 4294967295,
owner = 0xffffffff
}
since lock is not acquired, it shows 0xFFFFFFFF.
Otherwise point to a task_struct *.
thanks,
Arun
>
>
> Regards,
> Manty
>
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies
>
More information about the Kernelnewbies
mailing list