xref: /csrg-svn/usr.bin/ktrace/subr.c (revision 53173)
144586Smarc /*-
244586Smarc  * Copyright (c) 1988 The Regents of the University of California.
344586Smarc  * All rights reserved.
444586Smarc  *
544586Smarc  * %sccs.include.redist.c%
644586Smarc  */
744586Smarc 
844586Smarc #ifndef lint
9*53173Smarc static char sccsid[] = "@(#)subr.c	5.2 (Berkeley) 04/15/92";
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>
1845984Sbostic #include <stdio.h>
1936507Smarc #include "ktrace.h"
2036507Smarc 
2144586Smarc getpoints(s)
2236507Smarc 	char *s;
2336507Smarc {
2436507Smarc 	int facs = 0;
2536507Smarc 
2636507Smarc 	while (*s) {
2736507Smarc 		switch(*s) {
2836507Smarc 		case 'c':
2936507Smarc 			facs |= KTRFAC_SYSCALL | KTRFAC_SYSRET;
3036507Smarc 			break;
3136507Smarc 		case 'n':
3236507Smarc 			facs |= KTRFAC_NAMEI;
3336507Smarc 			break;
3444586Smarc 		case 'i':
3536507Smarc 			facs |= KTRFAC_GENIO;
3636507Smarc 			break;
3736507Smarc 		case 's':
3844586Smarc 			facs |= KTRFAC_PSIG;
3936507Smarc 			break;
40*53173Smarc 		case 'w':
41*53173Smarc 			facs |= KTRFAC_CSW;
42*53173Smarc 			break;
43*53173Smarc 		case '+':
44*53173Smarc 			facs |= DEF_POINTS;
45*53173Smarc 			break;
4636507Smarc 		default:
4736507Smarc 			return (-1);
4836507Smarc 		}
4936507Smarc 		s++;
5036507Smarc 	}
5136507Smarc 	return (facs);
5236507Smarc }
5344586Smarc 
5444586Smarc timevaladd(t1, t2)
5544586Smarc 	struct timeval *t1, *t2;
5644586Smarc {
5744586Smarc 	t1->tv_sec += t2->tv_sec;
5844586Smarc 	t1->tv_usec += t2->tv_usec;
5944586Smarc 	timevalfix(t1);
6044586Smarc }
6144586Smarc 
6244586Smarc timevalsub(t1, t2)
6344586Smarc 	struct timeval *t1, *t2;
6444586Smarc {
6544586Smarc 	t1->tv_sec -= t2->tv_sec;
6644586Smarc 	t1->tv_usec -= t2->tv_usec;
6744586Smarc 	timevalfix(t1);
6844586Smarc }
6944586Smarc 
7044586Smarc timevalfix(t1)
7144586Smarc 	struct timeval *t1;
7244586Smarc {
7344586Smarc 	if (t1->tv_usec < 0) {
7444586Smarc 		t1->tv_sec--;
7544586Smarc 		t1->tv_usec += 1000000;
7644586Smarc 	}
7744586Smarc 	if (t1->tv_usec >= 1000000) {
7844586Smarc 		t1->tv_sec++;
7944586Smarc 		t1->tv_usec -= 1000000;
8044586Smarc 	}
8144586Smarc }
82