Module Name: src Committed By: christos Date: Mon Mar 1 19:52:38 UTC 2010
Modified Files: src/lib/libc/gmon: gmon.c Log Message: - KNF - fix hertz() - fix error and warning messages To generate a diff of this commit: cvs rdiff -u -r1.31 -r1.32 src/lib/libc/gmon/gmon.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/lib/libc/gmon/gmon.c diff -u src/lib/libc/gmon/gmon.c:1.31 src/lib/libc/gmon/gmon.c:1.32 --- src/lib/libc/gmon/gmon.c:1.31 Sun Jan 17 18:09:02 2010 +++ src/lib/libc/gmon/gmon.c Mon Mar 1 14:52:38 2010 @@ -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 @@ /* 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 @@ 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 @@ 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 @@ #endif void -_mcleanup() +_mcleanup(void) { int fd; int fromindex; @@ -390,13 +389,13 @@ * 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 @@ 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 @@ 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 @@ 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 @@ * all the data structures are ready. */ void -moncontrol(mode) - int mode; +moncontrol(int mode) { struct gmonparam *p = &_gmonparam; @@ -514,17 +513,31 @@ * 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; }