1*44586Smarc /*- 2*44586Smarc * Copyright (c) 1988 The Regents of the University of California. 3*44586Smarc * All rights reserved. 4*44586Smarc * 5*44586Smarc * %sccs.include.redist.c% 6*44586Smarc */ 7*44586Smarc 8*44586Smarc #ifndef lint 9*44586Smarc static char sccsid[] = "@(#)subr.c 1.2 (Berkeley) 06/29/90"; 10*44586Smarc #endif /* not lint */ 11*44586Smarc 1236507Smarc #include "ktrace.h" 13*44586Smarc #include <sys/time.h> 1436507Smarc 15*44586Smarc getpoints(s) 1636507Smarc char *s; 1736507Smarc { 1836507Smarc int facs = 0; 1936507Smarc 2036507Smarc while (*s) { 2136507Smarc switch(*s) { 2236507Smarc case 'c': 2336507Smarc facs |= KTRFAC_SYSCALL | KTRFAC_SYSRET; 2436507Smarc break; 2536507Smarc case 'n': 2636507Smarc facs |= KTRFAC_NAMEI; 2736507Smarc break; 28*44586Smarc case 'i': 2936507Smarc facs |= KTRFAC_GENIO; 3036507Smarc break; 3136507Smarc case 's': 32*44586Smarc facs |= KTRFAC_PSIG; 3336507Smarc break; 3436507Smarc default: 3536507Smarc return (-1); 3636507Smarc } 3736507Smarc s++; 3836507Smarc } 3936507Smarc return (facs); 4036507Smarc } 41*44586Smarc 42*44586Smarc timevaladd(t1, t2) 43*44586Smarc struct timeval *t1, *t2; 44*44586Smarc { 45*44586Smarc 46*44586Smarc t1->tv_sec += t2->tv_sec; 47*44586Smarc t1->tv_usec += t2->tv_usec; 48*44586Smarc timevalfix(t1); 49*44586Smarc } 50*44586Smarc 51*44586Smarc timevalsub(t1, t2) 52*44586Smarc struct timeval *t1, *t2; 53*44586Smarc { 54*44586Smarc 55*44586Smarc t1->tv_sec -= t2->tv_sec; 56*44586Smarc t1->tv_usec -= t2->tv_usec; 57*44586Smarc timevalfix(t1); 58*44586Smarc } 59*44586Smarc 60*44586Smarc timevalfix(t1) 61*44586Smarc struct timeval *t1; 62*44586Smarc { 63*44586Smarc 64*44586Smarc if (t1->tv_usec < 0) { 65*44586Smarc t1->tv_sec--; 66*44586Smarc t1->tv_usec += 1000000; 67*44586Smarc } 68*44586Smarc if (t1->tv_usec >= 1000000) { 69*44586Smarc t1->tv_sec++; 70*44586Smarc t1->tv_usec -= 1000000; 71*44586Smarc } 72*44586Smarc } 73