Poul-Henning Kamp wrote:
> I've started to type in my mental sticky notes, have at it:
| Kernel stack depth warning.
| Write a function which checks the amount of kernel stack used and
| print a warning if it exceeds a sysctl-able limit.
| The inserted calls should compile to nothing unless the right kernel
| options is used.
| Instrument the kernel strategically and examine the result.
If this is just for testing purposes, then you probably want to
look at `-finstrument-functions'; by ensuring that stacks are
all aligned on an 8K or so boundary, you can write small assembly
void __cyg_profile_func_enter (void *this_fn, void *call_site);
void __cyg_profile_func_exit (void *this_fn, void *call_site);
And check the stack pointer against the previous alignment
address (example: stack address mod 8K := current stack depth).
I've used these for non-statistical profiling (e.g. recording
specific arc's in gprof-usable buckets for kernel profiling,
rather than relying on a statistics clock and the current PC),
but the principle should work the same for this purpose.
To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message