Deleted Added
full compact
kern_tc.c (1817) kern_tc.c (2112)
1/*-
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.

--- 22 unchanged lines hidden (view full) ---

31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
1/*-
2 * Copyright (c) 1982, 1986, 1991, 1993
3 * The Regents of the University of California. All rights reserved.
4 * (c) UNIX System Laboratories, Inc.
5 * All or some portions of this file are derived from material licensed
6 * to the University of California by American Telephone and Telegraph
7 * Co. or Unix System Laboratories, Inc. and are reproduced herein with
8 * the permission of UNIX System Laboratories, Inc.

--- 22 unchanged lines hidden (view full) ---

31 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
32 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
33 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
34 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
35 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
36 * SUCH DAMAGE.
37 *
38 * @(#)kern_clock.c 8.5 (Berkeley) 1/21/94
39 * $Id$
39 * $Id: kern_clock.c,v 1.3 1994/08/02 07:41:54 davidg Exp $
40 */
41
42#include <sys/param.h>
43#include <sys/systm.h>
44#include <sys/dkstat.h>
45#include <sys/callout.h>
46#include <sys/kernel.h>
47#include <sys/proc.h>
48#include <sys/resourcevar.h>
49
50#include <machine/cpu.h>
51
52#ifdef GPROF
53#include <sys/gmon.h>
54#endif
55
40 */
41
42#include <sys/param.h>
43#include <sys/systm.h>
44#include <sys/dkstat.h>
45#include <sys/callout.h>
46#include <sys/kernel.h>
47#include <sys/proc.h>
48#include <sys/resourcevar.h>
49
50#include <machine/cpu.h>
51
52#ifdef GPROF
53#include <sys/gmon.h>
54#endif
55
56/* Does anybody else really care about these? */
57struct callout *callfree, *callout, calltodo;
58int ncallout;
59
60/* Some of these don't belong here, but it's easiest to concentrate them. */
61long cp_time[CPUSTATES];
62long dk_seek[DK_NDRIVE];
63long dk_time[DK_NDRIVE];
64long dk_wds[DK_NDRIVE];
65long dk_wpms[DK_NDRIVE];
66long dk_xfer[DK_NDRIVE];
67
68int dk_busy;
69int dk_ndrive = DK_NDRIVE;
70
71long tk_cancc;
72long tk_nin;
73long tk_nout;
74long tk_rawcc;
75
56/*
57 * Clock handling routines.
58 *
59 * This code is written to operate with two timers that run independently of
60 * each other. The main clock, running hz times per second, is used to keep
61 * track of real time. The second timer handles kernel and user profiling,
62 * and does resource use estimation. If the second timer is programmable,
63 * it is randomized to avoid aliasing between the two clocks. For example,

--- 188 unchanged lines hidden (view full) ---

252 *
253 * See AT&T BCI Driver Reference Manual for specification. This
254 * implementation differs from that one in that no identification
255 * value is returned from timeout, rather, the original arguments
256 * to timeout are used to identify entries for untimeout.
257 */
258void
259timeout(ftn, arg, ticks)
76/*
77 * Clock handling routines.
78 *
79 * This code is written to operate with two timers that run independently of
80 * each other. The main clock, running hz times per second, is used to keep
81 * track of real time. The second timer handles kernel and user profiling,
82 * and does resource use estimation. If the second timer is programmable,
83 * it is randomized to avoid aliasing between the two clocks. For example,

--- 188 unchanged lines hidden (view full) ---

272 *
273 * See AT&T BCI Driver Reference Manual for specification. This
274 * implementation differs from that one in that no identification
275 * value is returned from timeout, rather, the original arguments
276 * to timeout are used to identify entries for untimeout.
277 */
278void
279timeout(ftn, arg, ticks)
260 void (*ftn) __P((void *));
280 timeout_t ftn;
261 void *arg;
262 register int ticks;
263{
264 register struct callout *new, *p, *t;
265 register int s;
266
267 if (ticks <= 0)
268 ticks = 1;

--- 28 unchanged lines hidden (view full) ---

297 /* Insert the new entry into the queue. */
298 p->c_next = new;
299 new->c_next = t;
300 splx(s);
301}
302
303void
304untimeout(ftn, arg)
281 void *arg;
282 register int ticks;
283{
284 register struct callout *new, *p, *t;
285 register int s;
286
287 if (ticks <= 0)
288 ticks = 1;

--- 28 unchanged lines hidden (view full) ---

317 /* Insert the new entry into the queue. */
318 p->c_next = new;
319 new->c_next = t;
320 splx(s);
321}
322
323void
324untimeout(ftn, arg)
305 void (*ftn) __P((void *));
325 timeout_t ftn;
306 void *arg;
307{
308 register struct callout *p, *t;
309 register int s;
310
311 s = splhigh();
312 for (p = &calltodo; (t = p->c_next) != NULL; p = t)
313 if (t->c_func == ftn && t->c_arg == arg) {

--- 81 unchanged lines hidden (view full) ---

395 s = splstatclock();
396 psdiv = pscnt = 1;
397 setstatclockrate(stathz);
398 splx(s);
399 }
400 }
401}
402
326 void *arg;
327{
328 register struct callout *p, *t;
329 register int s;
330
331 s = splhigh();
332 for (p = &calltodo; (t = p->c_next) != NULL; p = t)
333 if (t->c_func == ftn && t->c_arg == arg) {

--- 81 unchanged lines hidden (view full) ---

415 s = splstatclock();
416 psdiv = pscnt = 1;
417 setstatclockrate(stathz);
418 splx(s);
419 }
420 }
421}
422
403int dk_ndrive = DK_NDRIVE;
404
405/*
406 * Statistics clock. Grab profile sample, and if divider reaches 0,
407 * do process and kernel statistics.
408 */
409void
410statclock(frame)
411 register struct clockframe *frame;
412{

--- 118 unchanged lines hidden ---
423/*
424 * Statistics clock. Grab profile sample, and if divider reaches 0,
425 * do process and kernel statistics.
426 */
427void
428statclock(frame)
429 register struct clockframe *frame;
430{

--- 118 unchanged lines hidden ---