d6b9e17eb5
- use a more accurate and more efficient method of compensating for overheads. The old method counted too much time against leaf functions. - normally use the Pentium timestamp counter if available. On Pentiums, the times are now accurate to within a couple of cpu clock cycles per function call in the (unlikely) event that there are no cache misses in or caused by the profiling code. - optionally use an arbitrary Pentium event counter if available. - optionally regress to using the i8254 counter. - scaled the i8254 counter by a factor of 128. Now the i8254 counters overflow slightly faster than the TSC counters for a 150MHz Pentium :-) (after about 16 seconds). This is to avoid fractional overheads. files.i386: permon.c temporarily has to be classified as a profiling-routine because a couple of functions in it may be called from profiling code. options.i386: - I586_CTR_GUPROF is currently unused (oops). - I586_PMC_GUPROF should be something like 0x70000 to enable (but not use unless prof_machdep.c is changed) support for Pentium event counters. 7 is a control mode and the counter number 0 is somewhere in the 0000 bits (see perfmon.h for the encoding). profile.h: - added declarations. - cleaned up separation of user mode declarations. prof_machdep.c: Mostly clock-select changes. The default clock can be changed by editing kmem. There should be a sysctl for this. subr_prof.c: - added copyright. - calibrate overheads for the new method. - documented new method. - fixed races and and machine dependencies in start/stop code. mcount.c: Use the new overhead compensation method. gmon.h: - changed GPROF4 counter type from unsigned to int. Oops, this should be machine-dependent and/or int32_t. - reorganized overhead counters. Submitted by: Pentium event counter changes mostly by wollman |
||
---|---|---|
.. | ||
adddi3.c | ||
anddi3.c | ||
ashldi3.c | ||
ashrdi3.c | ||
bcd.c | ||
bcmp.c | ||
cmpdi2.c | ||
divdi3.c | ||
ffs.c | ||
fnmatch.c | ||
index.c | ||
inet_ntoa.c | ||
iordi3.c | ||
locc.c | ||
lshldi3.c | ||
lshrdi3.c | ||
mcount.c | ||
moddi3.c | ||
muldi3.c | ||
negdi2.c | ||
notdi2.c | ||
qdivrem.c | ||
qsort.c | ||
quad.h | ||
random.c | ||
rindex.c | ||
scanc.c | ||
skpc.c | ||
strcat.c | ||
strcmp.c | ||
strcpy.c | ||
strlen.c | ||
strncmp.c | ||
strncpy.c | ||
strsep.c | ||
subdi3.c | ||
ucmpdi2.c | ||
udivdi3.c | ||
umoddi3.c | ||
xordi3.c |