OpenSolaris

Printable Version Enter a New Search
Bug ID 6539878
Synopsis sparc brandz syscall wrappers don't collect trapstat data
State 10-Fix Delivered (Fix available in build)
Category:Subcategory kernel:brandz
Keywords
Responsible Engineer Edward Pilatowicz
Reported Against
Duplicate Of
Introduced In solaris_nevada
Commit to Fix snv_64
Fixed In snv_64
Release Fixed solaris_nevada(snv_64) , solaris_10u5(s10u5_01) (Bug ID:2151499)
Related Bugs 6539890
Submit Date 28-March-2007
Last Update Date 14-May-2007
Description
The current sparc brand system call wrappers don't collect trapstat data
when a trap is taken and re-directed back to userland.  the only collect
trapstat data if the system call is forwarded onto the kernel.  since trapstat
data is used for debugging and performance analysis it seems that it should
always be collected when an application generates a trap, regardless of if
that trap results in a system call or a redirection back to the userland
syscall emulation library.
the current SYSCALL macro does two things.  it invokes traptrace (via the TT_TRACE
macro) and then does a syscall (via a few assembly commands).  the fix here
involves first breaking off the part of the SYSCALL macro actually does the
syscall into a new macro, called SYSCALL_NOTT (meaning a syscall with no-traptrace).
Then the SYSCALL macro is modified to use the new macro, and also the brandz callback
wrappers (syscall_wrapper and syscall_wrapper32) are also modified to stop using
the SYSCALL macro and to start using the TT_TRACE macro on first entry and
the new SYSCALL_NOTT macro when defaulting back to the normal syscall path.
this ensures that when the brandz syscall_wrapper* are active, we still collect
traptrace data even if we redirect the system call back to userland.
Work Around
N/A
Comments
N/A