summaryrefslogtreecommitdiffstats
path: root/usr.bin/gprof/gprof.h
Commit message (Collapse)AuthorAgeFilesLines
* Check for defined(__i386__) instead of just defined(i386) since the compileralfred2002-05-301-1/+1
| | | | will be updated to only define(__i386__) for ANSI cleanliness.
* Make this build on sparc64.jake2002-03-101-0/+3
|
* Support runtime specification of the history counter type by whateverbde2002-03-061-9/+6
| | | | | | | | | | | | | generated the gmon data. The support is currently limited to what is easy to implement and/or needed: signedess: signed or insigned size: 8, 16, 32 or 64 bits format: a binary integer in gprof's format (gprof is not a cross-tool). High-resolution kernel profiling uses signed 64-bit counters. Normal kernel profiling and user profiling use unsigned 16-bit counters but should use 32-bit ones.
* Fixed some misspellings of 2 as sizeof(UNIT) so that they won't breakbde2002-03-061-1/+7
| | | | | | | | | | | | | | | | | things when sizeof(UNIT) becomes a runtime parameter. The relevant 2 is the one in profil(2)'s scaling of pc's to bucket numbers: bucket = (pc - offset) / 2 * profil_scale / 65536 gprof(1) must duplicate this scaling, bug for bug compatibly, so it must first do an integer division by 2 although this mainly makes scales larger than 65536 useless. sizeof(UNIT) was already wrong in gprof4, but there were no problems because the fake profil scale is a multiple of 2. There are also some rounding bugs in the scaling, but these are only problems if profil(2) is used directly to create unusual (and not useful) scales.
* Moved the definition of the machine-independent macro UNITS_TO_CODEbde2002-02-211-0/+2
| | | | | | | | | | from <number of machines> machine-dependent headers to the one non-header here it is used so that it is easier to fix. This macro just divides the machine-dependent offset OFFSET_OF_CODE by the machine-independent scale factor sizeof(UNIT), as required for bug for bug compatibility with the scaling of pc's in gprof.c. UNIT is the type of a profiling counter, and its size has nothing to do with the correct scale factor except both are usually 2.
* Add -K support to gprof(1), which enables dynamic symbol resolution fromgreen2001-10-301-0/+4
| | | | | | | | | the currently-running kernel (and supercedes an executable file argument given). With this change, properly-compiled KLD modules are now able to be profiled. Obtained from: NAI Labs CBOSS project Funded by: DARPA
* Add ia64 support (stubs, just like i386, alpha)peter2001-10-231-0/+4
|
* Enable gprof on alpha.simokawa1999-07-161-1/+4
| | | | | | * alpha.{c,h} are same as i386.{c,h}. * Force address calculation to be done in long precision(64bit on alpha) rather than double precision(52bit).
* Construct the profile file name from the name of the executable. A programjmz1999-05-231-1/+0
| | | | | | | compiled with -pg and run will generate a file <executable-filename>.gmon, not gmon.out. PR: bin/8426
* Make profiling work for ELF. gprof now autodetects the format ofjdp1998-09-071-10/+6
| | | | | | | | | | | the executable file, so it will work for both a.out and ELF format files. I have split the object format specific code into separate source files. It's cleaner than it was before, but it's still pretty crufty. Don't cheat on your make world for this update. A lot of things have to be rebuilt for it to work, including the compiler and all of the profiled libraries.
* 32-bit counters aren't large enough for 100+MHz clocks. Use 64-bitbde1997-07-131-1/+1
| | | | | counters. `4' in GPROF4 and gprof4 now means 8. gprof4 needs to be recompiled to match the kernel.
* Use err(3).charnier1997-07-101-5/+0
|
* Use a (signed) int32_t counter instead of an `unsigned int' counterbde1996-10-161-1/+1
| | | | | | | | | | for the GPROF4 case. This allows a simpler method to be used for non-statistical profiling (it allows overhead adjustments to be subtracted from one counter without harm if that counter goes negative; otherwise the adjustment would have to be distributed). 32 bit counters were already too small for GPROF4 with a 200MHz clock. int64_t counters should be used.
* Implemented non-statistical kernel profiling. This is based onbde1995-12-291-0/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | looking at a high resolution clock for each of the following events: function call, function return, interrupt entry, interrupt exit, and interesting branches. The differences between the times of these events are added at appropriate places in a ordinary histogram (as if very fast statistical profiling sampled the pc at those places) so that ordinary gprof can be used to analyze the times. gmon.h: Histogram counters need to be 4 bytes for microsecond resolutions. They will need to be larger for the 586 clock. The comments were vax-centric and wrong even on vaxes. Does anyone disagree? gprof4.c: The standard gprof should support counters of all integral sizes and the size of the counter should be in the gmon header. This hack will do until then. (Use gprof4 -u to examine the results of non-statistical profiling.) config/*: Non-statistical profiling is configured with `config -pp'. `config -p' still gives ordinary profiling. kgmon/*: Non-statistical profiling is enabled with `kgmon -B'. `kgmon -b' still enables ordinary profiling (and distables non-statistical profiling) if non-statistical profiling is configured.
* Remove trailing whitespace.rgrimes1995-05-301-1/+1
|
* BSD 4.4 Lite Usr.bin Sourcesrgrimes1994-05-271-0/+347
OpenPOWER on IntegriCloud