Page MenuHomeFreeBSD

D31897.diff
No OneTemporary

D31897.diff

diff --git a/sys/kern/kern_exec.c b/sys/kern/kern_exec.c
--- a/sys/kern/kern_exec.c
+++ b/sys/kern/kern_exec.c
@@ -119,6 +119,7 @@
static int sysctl_kern_ps_strings(SYSCTL_HANDLER_ARGS);
static int sysctl_kern_usrstack(SYSCTL_HANDLER_ARGS);
+static int sysctl_kern_stacktop(SYSCTL_HANDLER_ARGS);
static int sysctl_kern_stackprot(SYSCTL_HANDLER_ARGS);
static int do_execve(struct thread *td, struct image_args *args,
struct mac *mac_p, struct vmspace *oldvmspace);
@@ -133,6 +134,10 @@
CTLFLAG_CAPRD|CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_usrstack, "LU",
"Top of process stack");
+SYSCTL_PROC(_kern, KERN_STACKTOP, stacktop, CTLTYPE_ULONG | CTLFLAG_RD |
+ CTLFLAG_CAPRD | CTLFLAG_MPSAFE, NULL, 0, sysctl_kern_stacktop, "LU",
+ "Top of process stack with stack gap.");
+
SYSCTL_PROC(_kern, OID_AUTO, stackprot, CTLTYPE_INT|CTLFLAG_RD|CTLFLAG_MPSAFE,
NULL, 0, sysctl_kern_stackprot, "I",
"Stack memory permissions");
@@ -191,7 +196,31 @@
#endif
error = SYSCTL_OUT(req, &p->p_sysent->sv_usrstack,
sizeof(p->p_sysent->sv_usrstack));
- return error;
+ return (error);
+}
+
+static int
+sysctl_kern_stacktop(SYSCTL_HANDLER_ARGS)
+{
+ vm_offset_t stacktop;
+ struct proc *p;
+ int error;
+
+ p = curproc;
+#ifdef SCTL_MASK32
+ if (req->flags & SCTL_MASK32) {
+ unsigned int val;
+
+ val = (unsigned int)(p->p_sysent->sv_usrstack -
+ p->p_vmspace->vm_stkgap);
+ error = SYSCTL_OUT(req, &val, sizeof(val));
+ } else
+#endif
+ {
+ stacktop = p->p_sysent->sv_usrstack - p->p_vmspace->vm_stkgap;
+ error = SYSCTL_OUT(req, &stacktop, sizeof(stacktop));
+ }
+ return (error);
}
static int
diff --git a/sys/sys/sysctl.h b/sys/sys/sysctl.h
--- a/sys/sys/sysctl.h
+++ b/sys/sys/sysctl.h
@@ -976,6 +976,7 @@
#define KERN_HOSTUUID 36 /* string: host UUID identifier */
#define KERN_ARND 37 /* int: from arc4rand() */
#define KERN_MAXPHYS 38 /* int: MAXPHYS value */
+#define KERN_STACKTOP 39 /* int: USRSTACK - stack gap */
/*
* KERN_PROC subtypes
*/

File Metadata

Mime Type
text/plain
Expires
Wed, Sep 25, 8:42 AM (21 h, 18 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
12748217
Default Alt Text
D31897.diff (1 KB)

Event Timeline