|
From: <sv...@va...> - 2005-09-24 12:45:17
|
Author: sewardj
Date: 2005-09-24 13:45:15 +0100 (Sat, 24 Sep 2005)
New Revision: 4745
Log:
(non-functional change) Add debugLogging for translation cache discard
requests.
Modified:
branches/ASPACEM/coregrind/m_redir.c
branches/ASPACEM/coregrind/m_scheduler/scheduler.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c
branches/ASPACEM/coregrind/m_syswrap/syswrap-linux.c
branches/ASPACEM/coregrind/m_transtab.c
branches/ASPACEM/coregrind/pub_core_transtab.h
Modified: branches/ASPACEM/coregrind/m_redir.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_redir.c 2005-09-24 12:43:57 UTC (rev 474=
4)
+++ branches/ASPACEM/coregrind/m_redir.c 2005-09-24 12:45:15 UTC (rev 474=
5)
@@ -152,7 +152,8 @@
TRACE_REDIR("Discarding translation due to redirect of already =
loaded function" );
TRACE_REDIR(" %s:%s(%p) -> %p)", redir->from_lib, redir->from=
_sym,
redir->from_addr, redir->to_=
addr );
- VG_(discard_translations)((Addr64)redir->from_addr, 1);
+ VG_(discard_translations)((Addr64)redir->from_addr, 1,=20
+ "add_redir_to_resolved_list");
}
=20
r =3D VG_(SkipList_Find_Exact)(&sk_resolved_redirs, &redir->from_a=
ddr);
Modified: branches/ASPACEM/coregrind/m_scheduler/scheduler.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_scheduler/scheduler.c 2005-09-24 12:43:5=
7 UTC (rev 4744)
+++ branches/ASPACEM/coregrind/m_scheduler/scheduler.c 2005-09-24 12:45:1=
5 UTC (rev 4745)
@@ -782,7 +782,8 @@
case VEX_TRC_JMP_TINVAL:
VG_(discard_translations)(
(Addr64)VG_(threads)[tid].arch.vex.guest_TISTART,
- VG_(threads)[tid].arch.vex.guest_TILEN
+ VG_(threads)[tid].arch.vex.guest_TILEN,
+ "scheduler(VEX_TRC_JMP_TINVAL)"
);
if (0)
VG_(printf)("dump translations done.\n");
@@ -1050,7 +1051,9 @@
" addr %p, len %d\n",
(void*)arg[1], arg[2] );
=20
- VG_(discard_translations)( arg[1], arg[2] );
+ VG_(discard_translations)(=20
+ arg[1], arg[2], "scheduler(VG_USERREQ__DISCARD_TRANSLATIONS)=
"=20
+ );
=20
SET_CLREQ_RETVAL( tid, 0 ); /* return value is meaningless =
*/
break;
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-24 12:=
43:57 UTC (rev 4744)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-generic.c 2005-09-24 12:=
45:15 UTC (rev 4745)
@@ -162,7 +162,8 @@
VG_TRACK( new_mem_mmap, a, len, rr, ww, xx );
=20
if (d)
- VG_(discard_translations)( (Addr64)a, (ULong)len );
+ VG_(discard_translations)( (Addr64)a, (ULong)len,
+ "ML_(notify_aspacem_and_tool_of_mmap)" =
);
}
=20
/* Expand (or shrink) an existing mapping, potentially moving it at
@@ -303,8 +304,8 @@
old_seg->hasR, old_seg->hasW, old_seg->hasX );
VG_TRACK(die_mem_munmap, old_addr, old_len);
if (d) {
- VG_(discard_translations)( old_addr, old_len );
- VG_(discard_translations)( new_addr, new_len );
+ VG_(discard_translations)( old_addr, old_len, "do_remap(1)" =
);
+ VG_(discard_translations)( new_addr, new_len, "do_remap(2)" =
);
}
return VG_(mk_SysRes_Success)( new_addr );
}
@@ -333,7 +334,7 @@
old_seg->hasR,=20
old_seg->hasW, old_seg->hasX );
if (d)=20
- VG_(discard_translations)( needA, needL );
+ VG_(discard_translations)( needA, needL, "do_remap(3)" );
return VG_(mk_SysRes_Success)( old_addr );
}
}
@@ -354,8 +355,8 @@
old_seg->hasR, old_seg->hasW, old_seg->hasX );
VG_TRACK(die_mem_munmap, old_addr, old_len);
if (d) {
- VG_(discard_translations)( old_addr, old_len );
- VG_(discard_translations)( advised, new_len );
+ VG_(discard_translations)( old_addr, old_len, "do_remap(4)" =
);
+ VG_(discard_translations)( advised, new_len, "do_remap(5)" )=
;
}
return VG_(mk_SysRes_Success)( advised );
}
@@ -381,7 +382,7 @@
VG_TRACK( new_mem_mmap, needA, needL,=20
old_seg->hasR, old_seg->hasW, old_seg->hasX )=
;
if (d)
- VG_(discard_translations)( needA, needL );
+ VG_(discard_translations)( needA, needL, "do_remap(6)" );
return VG_(mk_SysRes_Success)( old_addr );
}
/*NOTREACHED*/ vg_assert(0);
@@ -393,7 +394,8 @@
return sres;
VG_TRACK( die_mem_munmap, old_addr+new_len, old_len-new_len );
if (d)
- VG_(discard_translations)( old_addr+new_len, old_len-new_len );
+ VG_(discard_translations)( old_addr+new_len, old_len-new_len,=20
+ "do_remap(7)" );
return VG_(mk_SysRes_Success)( old_addr );
}
/*NOTREACHED*/ vg_assert(0);
@@ -942,7 +944,10 @@
if (newbrk >=3D VG_(brk_base) && newbrk < VG_(brk_limit)) {
/* shrinking the data segment. Be lazy and don't munmap the
excess area. */
- VG_(discard_translations)( newbrk, VG_(brk_limit) - newbrk );
+ NSegment* seg =3D VG_(am_find_nsegment)(newbrk);
+ if (seg && seg->hasT)
+ VG_(discard_translations)( newbrk, VG_(brk_limit) - newbrk,=20
+ "do_brk(shrink)" );
VG_(brk_limit) =3D newbrk;
return newbrk;
}
@@ -1673,7 +1678,8 @@
VG_TRACK( new_mem_mmap, res, segmentSize, True, True, False );
if (d)
VG_(discard_translations)( (Addr64)res,=20
- (ULong)VG_PGROUNDUP(segmentSize) );
+ (ULong)VG_PGROUNDUP(segmentSize),
+ "ML_(generic_POST_sys_shmat)" );
}
}
=20
@@ -1698,7 +1704,8 @@
VG_TRACK( die_mem_munmap, s->start, s->end+1 - s->start );
if (d)
VG_(discard_translations)( (Addr64)(s->start),
- (ULong)(s->end+1 - s->start) );
+ (ULong)(s->end+1 - s->start),
+ "ML_(generic_POST_sys_shmdt)" );
}
}
/* ------ */
@@ -4868,7 +4875,8 @@
VG_TRACK( change_mem_mprotect, a, len, rr, ww, xx );
VG_(di_notify_mprotect)( a, len, prot );
if (d)
- VG_(discard_translations)( (Addr64)a, (ULong)len );
+ VG_(discard_translations)( (Addr64)a, (ULong)len,=20
+ "POST(sys_mprotect)" );
}
=20
PRE(sys_munmap)
@@ -4892,7 +4900,8 @@
VG_TRACK( die_mem_munmap, a, len );
VG_(di_notify_munmap)( a, len );
if (d)
- VG_(discard_translations)( (Addr64)a, (ULong)len );
+ VG_(discard_translations)( (Addr64)a, (ULong)len,
+ "POST(sys_munmap)" );
}
=20
PRE(sys_mincore)
Modified: branches/ASPACEM/coregrind/m_syswrap/syswrap-linux.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_syswrap/syswrap-linux.c 2005-09-24 12:43=
:57 UTC (rev 4744)
+++ branches/ASPACEM/coregrind/m_syswrap/syswrap-linux.c 2005-09-24 12:45=
:15 UTC (rev 4745)
@@ -726,7 +726,8 @@
Bool d =3D VG_(am_notify_munmap)( ARG1, size );
VG_TRACK( die_mem_munmap, ARG1, size );
if (d)
- VG_(discard_translations)( (Addr64)ARG1, (ULong)size );
+ VG_(discard_translations)( (Addr64)ARG1, (ULong)size,=20
+ "PRE(sys_io_destroy)" );
} =20
} =20
=20
Modified: branches/ASPACEM/coregrind/m_transtab.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/m_transtab.c 2005-09-24 12:43:57 UTC (rev =
4744)
+++ branches/ASPACEM/coregrind/m_transtab.c 2005-09-24 12:45:15 UTC (rev =
4745)
@@ -581,13 +581,18 @@
}
=20
=20
-void VG_(discard_translations) ( Addr64 guest_start, ULong range )
+void VG_(discard_translations) ( Addr64 guest_start, ULong range,
+ HChar* who )
{
Int sno, i;
Bool anyDeleted =3D False;
=20
vg_assert(init_done);
=20
+ VG_(debugLog)(1, "transtab",
+ "discard_translations(0x%llx, %lld) req by %s\n",
+ guest_start, range, who );
+
for (sno =3D 0; sno < N_SECTORS; sno++) {
if (sectors[sno].tc =3D=3D NULL)
continue;
@@ -659,6 +664,16 @@
N_SECTORS * N_TTES_PER_SECTOR_USABLE,=20
SECTOR_TT_LIMIT_PERCENT );
}
+
+ VG_(debugLog)(2, "transtab",
+ "cache: %d sectors of %d bytes each =3D %d total\n",=20
+ N_SECTORS, 8 * tc_sector_szQ,
+ N_SECTORS * 8 * tc_sector_szQ );
+ VG_(debugLog)(2, "transtab",
+ "table: %d total entries, max occupancy %d (%d%%)\n",
+ N_SECTORS * N_TTES_PER_SECTOR,
+ N_SECTORS * N_TTES_PER_SECTOR_USABLE,=20
+ SECTOR_TT_LIMIT_PERCENT );
}
=20
=20
Modified: branches/ASPACEM/coregrind/pub_core_transtab.h
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- branches/ASPACEM/coregrind/pub_core_transtab.h 2005-09-24 12:43:57 UT=
C (rev 4744)
+++ branches/ASPACEM/coregrind/pub_core_transtab.h 2005-09-24 12:45:15 UT=
C (rev 4745)
@@ -56,7 +56,8 @@
Addr64 guest_addr,=20
Bool upd_cache );
=20
-extern void VG_(discard_translations) ( Addr64 start, ULong range );
+extern void VG_(discard_translations) ( Addr64 start, ULong range,
+ HChar* who );
=20
extern void VG_(print_tt_tc_stats) ( void );
=20
|