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;
 }

Reply via email to