xref: /csrg-svn/usr.bin/ktrace/subr.c (revision 69074)
144586Smarc /*-
262045Sbostic  * Copyright (c) 1988, 1993
362045Sbostic  *	The Regents of the University of California.  All rights reserved.
444586Smarc  *
544586Smarc  * %sccs.include.redist.c%
644586Smarc  */
744586Smarc 
844586Smarc #ifndef lint
9*69074Sbostic static char sccsid[] = "@(#)subr.c	8.2 (Berkeley) 04/28/95";
1044586Smarc #endif /* not lint */
1144586Smarc 
1245984Sbostic #include <sys/param.h>
1345984Sbostic #include <sys/file.h>
1445984Sbostic #include <sys/user.h>
1545984Sbostic #include <sys/proc.h>
1645984Sbostic #include <sys/time.h>
1745984Sbostic #include <sys/ktrace.h>
18*69074Sbostic 
1945984Sbostic #include <stdio.h>
20*69074Sbostic 
2136507Smarc #include "ktrace.h"
2236507Smarc 
getpoints(s)2344586Smarc getpoints(s)
2436507Smarc 	char *s;
2536507Smarc {
2636507Smarc 	int facs = 0;
2736507Smarc 
2836507Smarc 	while (*s) {
2936507Smarc 		switch(*s) {
3036507Smarc 		case 'c':
3136507Smarc 			facs |= KTRFAC_SYSCALL | KTRFAC_SYSRET;
3236507Smarc 			break;
3336507Smarc 		case 'n':
3436507Smarc 			facs |= KTRFAC_NAMEI;
3536507Smarc 			break;
3644586Smarc 		case 'i':
3736507Smarc 			facs |= KTRFAC_GENIO;
3836507Smarc 			break;
3936507Smarc 		case 's':
4044586Smarc 			facs |= KTRFAC_PSIG;
4136507Smarc 			break;
4253173Smarc 		case 'w':
4353173Smarc 			facs |= KTRFAC_CSW;
4453173Smarc 			break;
4553173Smarc 		case '+':
4653173Smarc 			facs |= DEF_POINTS;
4753173Smarc 			break;
4836507Smarc 		default:
4936507Smarc 			return (-1);
5036507Smarc 		}
5136507Smarc 		s++;
5236507Smarc 	}
5336507Smarc 	return (facs);
5436507Smarc }
5544586Smarc 
5644586Smarc timevaladd(t1, t2)
5744586Smarc 	struct timeval *t1, *t2;
5844586Smarc {
5944586Smarc 	t1->tv_sec += t2->tv_sec;
6044586Smarc 	t1->tv_usec += t2->tv_usec;
6144586Smarc 	timevalfix(t1);
6244586Smarc }
6344586Smarc 
6444586Smarc timevalsub(t1, t2)
6544586Smarc 	struct timeval *t1, *t2;
6644586Smarc {
6744586Smarc 	t1->tv_sec -= t2->tv_sec;
6844586Smarc 	t1->tv_usec -= t2->tv_usec;
6944586Smarc 	timevalfix(t1);
7044586Smarc }
7144586Smarc 
7244586Smarc timevalfix(t1)
7344586Smarc 	struct timeval *t1;
7444586Smarc {
7544586Smarc 	if (t1->tv_usec < 0) {
7644586Smarc 		t1->tv_sec--;
7744586Smarc 		t1->tv_usec += 1000000;
7844586Smarc 	}
7944586Smarc 	if (t1->tv_usec >= 1000000) {
8044586Smarc 		t1->tv_sec++;
8144586Smarc 		t1->tv_usec -= 1000000;
8244586Smarc 	}
8344586Smarc }
84