On Wed, 18 May 2011 11:42:45 -0400
Jeff Blaine <[email protected]> wrote:

>    0      -> afs_GetDCache
>    0        -> afs_MemGetDSlot
>    0          -> Afs_Lock_ReleaseR
>    0            -> afs_osi_Wakeup
>    0              -> afs_getevent
>    0              <- afs_getevent
>    0            <- afs_osi_Wakeup
>    0          <- Afs_Lock_ReleaseR
>    0        <- afs_MemGetDSlot
>    0        -> afs_osi_Sleep
>    0          -> afs_getevent
>    0          <- afs_getevent

So, waiting on tdc->lock, I think?

Try the same thing with the attached D script; it may say who's holding
it.

-- 
Andrew Deason
[email protected]
#pragma D option flowindent

fbt:afs::entry /pid == $target/ {}
fbt:afs::return /pid == $target/ {}

fbt:afs:afs_GetDCache:entry /pid == $target/ {
	self->traceme = 1;
}
fbt:afs:afs_GetDCache:return /self->traceme/ {
	self->traceme = 0;
}

self unsigned *p;

fbt:afs:afs_osi_Sleep:entry /pid == $target && self->traceme/ {
	self->p = (unsigned*)(arg0 & 0xfffffffffffffff8);
	printf("event %p = %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u\n",
		(void*)arg0
		,self->p[0]
		,self->p[1]
		,self->p[2]
		,self->p[3]
		,self->p[4]
		,self->p[5]
		,self->p[6]
		,self->p[7]
		,self->p[9]
		,self->p[10]
		,self->p[11]
	);
	self->p = 0;
}

Reply via email to