Replace the last non-optional use of sbrk() in the tree with mmap().
All gmon want's is a region of memory without the overhead of malloc(). Just mapping some pages with mmap is an easy way to accomplish this. Approved by: jhb, cem, emaste Obtained from: CheriBSD (bf33e1e70b368ababde74aa3ac70d108c8a52c69) Sponsored by: DARPA, AFRL Differential Revision: https://reviews.freebsd.org/D5005
This commit is contained in:
parent
f919b7a664
commit
af6f4233fd
@ -37,6 +37,7 @@ __FBSDID("$FreeBSD$");
|
|||||||
#include <sys/param.h>
|
#include <sys/param.h>
|
||||||
#include <sys/time.h>
|
#include <sys/time.h>
|
||||||
#include <sys/gmon.h>
|
#include <sys/gmon.h>
|
||||||
|
#include <sys/mman.h>
|
||||||
#include <sys/sysctl.h>
|
#include <sys/sysctl.h>
|
||||||
|
|
||||||
#include <err.h>
|
#include <err.h>
|
||||||
@ -50,14 +51,6 @@ __FBSDID("$FreeBSD$");
|
|||||||
|
|
||||||
#include "libc_private.h"
|
#include "libc_private.h"
|
||||||
|
|
||||||
#if defined(__i386__) || defined(__sparc64__) || defined(__amd64__) || (defined(__powerpc__) && !defined(__powerpc64__))
|
|
||||||
extern char *minbrk __asm (".minbrk");
|
|
||||||
#elif defined(__powerpc64__)
|
|
||||||
extern char *minbrk __asm ("_minbrk");
|
|
||||||
#else
|
|
||||||
extern char *minbrk __asm ("minbrk");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
struct gmonparam _gmonparam = { GMON_PROF_OFF };
|
struct gmonparam _gmonparam = { GMON_PROF_OFF };
|
||||||
|
|
||||||
static int s_scale;
|
static int s_scale;
|
||||||
@ -94,8 +87,9 @@ monstartup(u_long lowpc, u_long highpc)
|
|||||||
p->tolimit = MAXARCS;
|
p->tolimit = MAXARCS;
|
||||||
p->tossize = p->tolimit * sizeof(struct tostruct);
|
p->tossize = p->tolimit * sizeof(struct tostruct);
|
||||||
|
|
||||||
cp = sbrk(p->kcountsize + p->fromssize + p->tossize);
|
cp = mmap(NULL, p->kcountsize + p->fromssize + p->tossize,
|
||||||
if (cp == (char *)-1) {
|
PROT_READ | PROT_WRITE, MAP_ANON, -1, 0);
|
||||||
|
if (cp == MAP_FAILED) {
|
||||||
ERR("monstartup: out of memory\n");
|
ERR("monstartup: out of memory\n");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -108,7 +102,6 @@ monstartup(u_long lowpc, u_long highpc)
|
|||||||
cp += p->kcountsize;
|
cp += p->kcountsize;
|
||||||
p->froms = (u_short *)cp;
|
p->froms = (u_short *)cp;
|
||||||
|
|
||||||
minbrk = sbrk(0);
|
|
||||||
p->tos[0].link = 0;
|
p->tos[0].link = 0;
|
||||||
|
|
||||||
o = p->highpc - p->lowpc;
|
o = p->highpc - p->lowpc;
|
||||||
|
Loading…
Reference in New Issue
Block a user