summaryrefslogtreecommitdiffstats
path: root/sys/amd64/include/frame.h
diff options
context:
space:
mode:
authoralm <alm@FreeBSD.org>1993-12-03 05:10:08 +0000
committeralm <alm@FreeBSD.org>1993-12-03 05:10:08 +0000
commit2c48c35e86d75ce81452b240cee8586254d83c52 (patch)
tree4060d6912e801000759cb2790a59c27cb2d477c6 /sys/amd64/include/frame.h
parentdb1888bf053844c4661a8e63541981d72c12ce28 (diff)
downloadFreeBSD-src-2c48c35e86d75ce81452b240cee8586254d83c52.zip
FreeBSD-src-2c48c35e86d75ce81452b240cee8586254d83c52.tar.gz
From: Jeffrey Hsu <hsu@soda.berkeley.edu>
The following patch adds the addr argument to signal handlers. The kernel with the patch is no more and no less in compliance or in violation of POSIX and ANSI C than the kernel before the patch. The added functionality this addr argument provides is quite useful. It enables an entire class of algorithms which use mprotect to trace memory references. Beside garbage collectors, I have heard of this technique being applied to debuggers and profilers. The only benchmarking I've performed is using akcl to compile maxima: without the kernel patch, it takes 7 hours to compile maxima, while with stratified garbage collection, it only takes 50 minutes. Basically, I can't think of a reason not to add the addr argument and there is a compelling need for it. If you find the patch acceptable, please let me know so I can send my FreeBSD akcl config files to wfs for inclusion in the core akcl release. The old 386BSD config files there won't work on either NetBSD or FreeBSD.
Diffstat (limited to 'sys/amd64/include/frame.h')
-rw-r--r--sys/amd64/include/frame.h3
1 files changed, 2 insertions, 1 deletions
diff --git a/sys/amd64/include/frame.h b/sys/amd64/include/frame.h
index a591f53..a7455b6 100644
--- a/sys/amd64/include/frame.h
+++ b/sys/amd64/include/frame.h
@@ -34,7 +34,7 @@
* SUCH DAMAGE.
*
* from: @(#)frame.h 5.2 (Berkeley) 1/18/91
- * $Id: frame.h,v 1.3 1993/11/07 17:42:56 wollman Exp $
+ * $Id: frame.h,v 1.4 1993/11/17 23:25:03 wollman Exp $
*/
#ifndef _MACHINE_FRAME_H_
@@ -105,6 +105,7 @@ struct sigframe {
int sf_signum;
int sf_code;
struct sigcontext *sf_scp;
+ char *sf_addr;
sig_t sf_handler;
int sf_eax;
int sf_edx;
OpenPOWER on IntegriCloud