- KNF
- fix hertz() - fix error and warning messages
This commit is contained in:
parent
4146a232bf
commit
4fc887422c
@ -1,4 +1,4 @@
|
||||
/* $NetBSD: gmon.c,v 1.31 2010/01/17 23:09:02 wiz Exp $ */
|
||||
/* $NetBSD: gmon.c,v 1.32 2010/03/01 19:52:38 christos Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 2003, 2004 Wasabi Systems, Inc.
|
||||
@ -69,7 +69,7 @@
|
||||
#if 0
|
||||
static char sccsid[] = "@(#)gmon.c 8.1 (Berkeley) 6/4/93";
|
||||
#else
|
||||
__RCSID("$NetBSD: gmon.c,v 1.31 2010/01/17 23:09:02 wiz Exp $");
|
||||
__RCSID("$NetBSD: gmon.c,v 1.32 2010/03/01 19:52:38 christos Exp $");
|
||||
#endif
|
||||
#endif
|
||||
|
||||
@ -104,24 +104,21 @@ static u_int s_scale;
|
||||
/* see profil(2) where this is describe (incorrectly) */
|
||||
#define SCALE_1_TO_1 0x10000L
|
||||
|
||||
#define ERR(s) write(STDERR_FILENO, s, sizeof(s))
|
||||
|
||||
void moncontrol __P((int));
|
||||
void monstartup __P((u_long, u_long));
|
||||
void _mcleanup __P((void));
|
||||
static int hertz __P((void));
|
||||
void moncontrol(int);
|
||||
void monstartup(u_long, u_long);
|
||||
void _mcleanup(void);
|
||||
static int hertz(void);
|
||||
|
||||
#ifdef _REENTRANT
|
||||
static void _m_gmon_destructor(void *);
|
||||
struct gmonparam *_m_gmon_alloc(void) __attribute__((__no_instrument_function__));
|
||||
struct gmonparam *_m_gmon_alloc(void)
|
||||
__attribute__((__no_instrument_function__));
|
||||
static void _m_gmon_merge(void);
|
||||
static void _m_gmon_merge_two(struct gmonparam *, struct gmonparam *);
|
||||
#endif
|
||||
|
||||
void
|
||||
monstartup(lowpc, highpc)
|
||||
u_long lowpc;
|
||||
u_long highpc;
|
||||
monstartup(u_long lowpc, u_long highpc)
|
||||
{
|
||||
u_long o;
|
||||
char *cp;
|
||||
@ -146,11 +143,11 @@ monstartup(lowpc, highpc)
|
||||
|
||||
cp = sbrk((intptr_t)(p->kcountsize + p->fromssize + p->tossize));
|
||||
if (cp == (char *)-1) {
|
||||
ERR("monstartup: out of memory\n");
|
||||
warnx("%s: out of memory", __func__);
|
||||
return;
|
||||
}
|
||||
#ifdef notdef
|
||||
memset(cp, 0, p->kcountsize + p->fromssize + p->tossize);
|
||||
(void)memset(cp, 0, p->kcountsize + p->fromssize + p->tossize);
|
||||
#endif
|
||||
p->tos = (struct tostruct *)(void *)cp;
|
||||
cp += (size_t)p->tossize;
|
||||
@ -350,10 +347,12 @@ _m_gmon_merge(void)
|
||||
|
||||
mutex_lock(&_gmonlock);
|
||||
|
||||
for (q = _gmonfree; q != NULL; q = (struct gmonparam *)(void *)q->kcount)
|
||||
for (q = _gmonfree; q != NULL;
|
||||
q = (struct gmonparam *)(void *)q->kcount)
|
||||
_m_gmon_merge_two(&_gmonparam, q);
|
||||
|
||||
for (q = _gmoninuse; q != NULL; q = (struct gmonparam *)(void *)q->kcount) {
|
||||
for (q = _gmoninuse; q != NULL;
|
||||
q = (struct gmonparam *)(void *)q->kcount) {
|
||||
q->state = GMON_PROF_OFF;
|
||||
_m_gmon_merge_two(&_gmonparam, q);
|
||||
}
|
||||
@ -363,7 +362,7 @@ _m_gmon_merge(void)
|
||||
#endif
|
||||
|
||||
void
|
||||
_mcleanup()
|
||||
_mcleanup(void)
|
||||
{
|
||||
int fd;
|
||||
int fromindex;
|
||||
@ -390,13 +389,13 @@ _mcleanup()
|
||||
* our real one.
|
||||
*/
|
||||
if (issetugid() && (geteuid() != getuid() || getegid() != getgid())) {
|
||||
warnx("mcount: Profiling of set{u,g}id binaries is not"
|
||||
" allowed");
|
||||
warnx("%s: Profiling of set{u,g}id binaries is not"
|
||||
" allowed", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
if (p->state == GMON_PROF_ERROR)
|
||||
ERR("_mcleanup: tos overflow\n");
|
||||
warnx("%s: tos overflow", __func__);
|
||||
|
||||
size = sizeof(clockinfo);
|
||||
mib[0] = CTL_KERN;
|
||||
@ -422,8 +421,9 @@ _mcleanup()
|
||||
return;
|
||||
|
||||
if (snprintf(buf, sizeof buf, "%s/%d.%s",
|
||||
profdir, getpid(), getprogname()) >= (int)(sizeof buf)) {
|
||||
warnx("_mcleanup: internal buffer overflow, PROFDIR too long");
|
||||
profdir, getpid(), getprogname()) >= (int)(sizeof buf)) {
|
||||
warnx("%s: internal buffer overflow, PROFDIR too long",
|
||||
__func__);
|
||||
return;
|
||||
}
|
||||
|
||||
@ -434,13 +434,13 @@ _mcleanup()
|
||||
|
||||
fd = open(proffile , O_CREAT|O_TRUNC|O_WRONLY, 0666);
|
||||
if (fd < 0) {
|
||||
warn("mcount: Cannot open `%s'", proffile);
|
||||
warn("%s: Cannot open `%s'", __func__, proffile);
|
||||
return;
|
||||
}
|
||||
#ifdef DEBUG
|
||||
logfd = open("gmon.log", O_CREAT|O_TRUNC|O_WRONLY, 0664);
|
||||
if (logfd < 0) {
|
||||
warn("mcount: Cannot open `gmon.log'");
|
||||
warn("%s: Cannot open `%s'", __func__, "gmon.log");
|
||||
return;
|
||||
}
|
||||
len = snprintf(buf2, sizeof buf2, "[mcleanup1] kcount %p ssiz %lu\n",
|
||||
@ -477,12 +477,12 @@ _mcleanup()
|
||||
rawarc.raw_frompc = frompc;
|
||||
rawarc.raw_selfpc = p->tos[toindex].selfpc;
|
||||
rawarc.raw_count = p->tos[toindex].count;
|
||||
write(fd, &rawarc, sizeof rawarc);
|
||||
(void)write(fd, &rawarc, sizeof rawarc);
|
||||
}
|
||||
}
|
||||
close(fd);
|
||||
(void)close(fd);
|
||||
#ifdef DEBUG
|
||||
close(logfd);
|
||||
(void)close(logfd);
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -492,8 +492,7 @@ _mcleanup()
|
||||
* all the data structures are ready.
|
||||
*/
|
||||
void
|
||||
moncontrol(mode)
|
||||
int mode;
|
||||
moncontrol(int mode)
|
||||
{
|
||||
struct gmonparam *p = &_gmonparam;
|
||||
|
||||
@ -514,17 +513,31 @@ moncontrol(mode)
|
||||
* if something goes wrong, we return 0, an impossible hertz.
|
||||
*/
|
||||
static int
|
||||
hertz()
|
||||
hertz(void)
|
||||
{
|
||||
struct itimerval tim;
|
||||
|
||||
tim.it_interval.tv_sec = 0;
|
||||
tim.it_interval.tv_usec = 1;
|
||||
tim.it_value.tv_sec = 0;
|
||||
tim.it_value.tv_usec = 0;
|
||||
setitimer(ITIMER_REAL, &tim, 0);
|
||||
setitimer(ITIMER_REAL, 0, &tim);
|
||||
if (tim.it_interval.tv_usec < 2)
|
||||
return(0);
|
||||
return (int)(1000000 / tim.it_interval.tv_usec);
|
||||
struct itimerspec tim;
|
||||
timer_t t;
|
||||
int rv = 0;
|
||||
|
||||
tim.it_interval.tv_sec = 0;
|
||||
tim.it_interval.tv_nsec = 1;
|
||||
tim.it_value.tv_sec = 0;
|
||||
tim.it_value.tv_nsec = 0;
|
||||
|
||||
if (timer_create(CLOCK_REALTIME, NULL, &t) == -1)
|
||||
return 0;
|
||||
|
||||
if (timer_settime(t, 0, &tim, NULL) == -1)
|
||||
goto out;
|
||||
|
||||
if (timer_gettime(t, &tim) == -1)
|
||||
goto out;
|
||||
|
||||
if (tim.it_interval.tv_nsec < 2)
|
||||
goto out;
|
||||
|
||||
rv = (int)(1000000000LL / tim.it_interval.tv_nsec);
|
||||
out:
|
||||
(void)timer_delete(t);
|
||||
return rv;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user