Switch to using evcnt(9) to track interrupt counts.
This commit is contained in:
parent
11823a584d
commit
fe72c084d6
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: scn.c,v 1.58 2002/11/21 00:23:24 simonb Exp $ */
|
||||
/* $NetBSD: scn.c,v 1.59 2002/11/22 13:26:39 simonb Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1996, 1997 Philip L. Budne.
|
||||
|
@ -790,6 +790,7 @@ scnattach(parent, self, aux)
|
|||
u_char delim = ':';
|
||||
enum scntype scntype = SCNUNK;
|
||||
char *duart_type = "Unknown";
|
||||
char *intrname;
|
||||
|
||||
sc = (void *) self;
|
||||
unit = self->dv_unit; /* sc->sc_dev.dv_unit ??? */
|
||||
|
@ -882,8 +883,10 @@ scnattach(parent, self, aux)
|
|||
splx(s);
|
||||
|
||||
/* Arg 0 is special, so we must pass "unit + 1" */
|
||||
intrname = malloc(sizeof("scnXX"), M_DEVBUF, M_NOWAIT);
|
||||
snprintf(intrname, sizeof("scnXX"), "scn%d", unit);
|
||||
intr_establish(scnints[duart], scnintr, (void *) (unit + 1),
|
||||
"scn", IPL_TTY, IPL_ZERO, LOW_LEVEL);
|
||||
intrname, IPL_TTY, IPL_ZERO, LOW_LEVEL);
|
||||
|
||||
printf("%c %s", delim, duart_type);
|
||||
delim = ',';
|
||||
|
@ -892,8 +895,10 @@ scnattach(parent, self, aux)
|
|||
* IPL_ZERO is the right priority for the rx interrupt.
|
||||
* Only splhigh() should disable rxints.
|
||||
*/
|
||||
intrname = malloc(sizeof("scnXXrx"), M_DEVBUF, M_NOWAIT);
|
||||
snprintf(intrname, 8, "scn%drx", unit);
|
||||
intr_establish(rxints[duart], scnrxintr, (void *) (unit + 1),
|
||||
"scnrx", IPL_ZERO, IPL_RTTY, LOW_LEVEL);
|
||||
intrname, IPL_ZERO, IPL_RTTY, LOW_LEVEL);
|
||||
}
|
||||
/* Record unit number, uart */
|
||||
sc->sc_unit = unit;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: intr.h,v 1.1 2002/05/25 04:27:21 simonb Exp $ */
|
||||
/* $NetBSD: intr.h,v 1.2 2002/11/22 13:26:40 simonb Exp $ */
|
||||
|
||||
/*-
|
||||
* Copyright (c) 1990 The Regents of the University of California.
|
||||
|
@ -73,6 +73,8 @@
|
|||
#define SIR_ALLMASK 0xffff0000
|
||||
|
||||
#ifndef _LOCORE
|
||||
#include <sys/device.h>
|
||||
|
||||
/*
|
||||
* Structure of the software interrupt table
|
||||
*/
|
||||
|
@ -81,7 +83,7 @@ struct iv {
|
|||
void *iv_arg;
|
||||
long iv_level;
|
||||
long iv_mask;
|
||||
long iv_cnt;
|
||||
struct evcnt iv_evcnt;
|
||||
char *iv_use;
|
||||
};
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
# $NetBSD: genassym.cf,v 1.9 2002/07/09 23:10:03 simonb Exp $
|
||||
# $NetBSD: genassym.cf,v 1.10 2002/11/22 13:26:40 simonb Exp $
|
||||
|
||||
#
|
||||
# Copyright (c) 1982, 1990 The Regents of the University of California.
|
||||
|
@ -48,6 +48,7 @@ include <sys/user.h>
|
|||
|
||||
include <uvm/uvm_extern.h>
|
||||
|
||||
include <machine/intr.h>
|
||||
include <machine/trap.h>
|
||||
include <machine/pmap.h>
|
||||
include <machine/vmparam.h>
|
||||
|
@ -100,7 +101,9 @@ define REGS_PSR offsetof(struct reg, r_psr)
|
|||
|
||||
define IV_VEC offsetof(struct iv, iv_vec)
|
||||
define IV_ARG offsetof(struct iv, iv_arg)
|
||||
define IV_CNT offsetof(struct iv, iv_cnt)
|
||||
define IV_USE offsetof(struct iv, iv_use)
|
||||
define IV_MASK offsetof(struct iv, iv_mask)
|
||||
define IV_EVCNT offsetof(struct iv, iv_evcnt)
|
||||
define IV_SIZE sizeof(struct iv)
|
||||
|
||||
define EV_COUNT offsetof(struct evcnt, ev_count)
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: intr.c,v 1.25 2002/09/27 15:36:33 provos Exp $ */
|
||||
/* $NetBSD: intr.c,v 1.26 2002/11/22 13:26:41 simonb Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1994 Matthias Pfaller.
|
||||
|
@ -33,6 +33,7 @@
|
|||
#define DEFINE_SPLX
|
||||
#include <sys/param.h>
|
||||
#include <sys/systm.h>
|
||||
#include <sys/device.h>
|
||||
|
||||
#include <uvm/uvm_extern.h>
|
||||
|
||||
|
@ -131,7 +132,7 @@ check_sir(arg)
|
|||
if ((cirpending & mask) != 0) {
|
||||
register int s;
|
||||
uvmexp.softs++;
|
||||
iv->iv_cnt++;
|
||||
iv->iv_evcnt.ev_count++;
|
||||
s = splraise(iv->iv_mask);
|
||||
iv->iv_vec(iv->iv_arg);
|
||||
splx(s);
|
||||
|
@ -159,9 +160,10 @@ intr_establish(intr, vector, arg, use, blevel, rlevel, mode)
|
|||
int rlevel;
|
||||
int mode;
|
||||
{
|
||||
int i;
|
||||
int i, soft;
|
||||
|
||||
di();
|
||||
soft = intr == SOFTINT;
|
||||
if (rlevel < IPL_ZERO || rlevel >= NIPL ||
|
||||
blevel < IPL_ZERO || blevel >= NIPL)
|
||||
panic("Illegal interrupt level for %s in intr_establish", use);
|
||||
|
@ -195,9 +197,10 @@ intr_establish(intr, vector, arg, use, blevel, rlevel, mode)
|
|||
}
|
||||
ivt[intr].iv_vec = vector;
|
||||
ivt[intr].iv_arg = arg;
|
||||
ivt[intr].iv_cnt = 0;
|
||||
ivt[intr].iv_use = use;
|
||||
ivt[intr].iv_level = rlevel;
|
||||
evcnt_attach_dynamic(&ivt[intr].iv_evcnt, EVCNT_TYPE_INTR, NULL,
|
||||
soft ? "soft" : "intr", use);
|
||||
ei();
|
||||
imask[blevel] |= 1 << intr;
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
/* $NetBSD: locore.s,v 1.67 2002/07/11 00:41:50 simonb Exp $ */
|
||||
/* $NetBSD: locore.s,v 1.68 2002/11/22 13:26:41 simonb Exp $ */
|
||||
|
||||
/*
|
||||
* Copyright (c) 1993 Philip A. Nelson.
|
||||
|
@ -1119,7 +1119,8 @@ ASENTRY_NOPROFILE(interrupt)
|
|||
*/
|
||||
addqd 1,_C_LABEL(intrcnt)(pc)[r1:d]
|
||||
addqd 1,_C_LABEL(uvmexp)+V_INTR(pc)
|
||||
addqd 1,_C_LABEL(ivt)+IV_CNT(r0)
|
||||
addqd 1,_C_LABEL(ivt)+(IV_EVCNT+EV_COUNT)(r0)
|
||||
addcd 0,_C_LABEL(ivt)+(IV_EVCNT+EV_COUNT+4)(r0)
|
||||
|
||||
movd _C_LABEL(ivt)+IV_ARG(r0),r1 /* Get argument */
|
||||
cmpqd 0,r1
|
||||
|
@ -1284,46 +1285,10 @@ KENTRY(ram_size, 4)
|
|||
/****************************************************************************/
|
||||
|
||||
/*
|
||||
* vmstat -i uses the following labels and interrupt even increments the
|
||||
* counters. This information is also availiable from ivt[n].iv_use
|
||||
* and ivt[n].iv_cnt in much better form.
|
||||
* XXX: Some bogus symbols to keep vmstat -i happy, for now.
|
||||
*/
|
||||
.text
|
||||
GLOBAL(intrnames)
|
||||
ASMSTR "int 0"
|
||||
ASMSTR "int 1"
|
||||
ASMSTR "int 2"
|
||||
ASMSTR "int 3"
|
||||
ASMSTR "int 4"
|
||||
ASMSTR "int 5"
|
||||
ASMSTR "int 6"
|
||||
ASMSTR "int 7"
|
||||
ASMSTR "int 8"
|
||||
ASMSTR "int 9"
|
||||
ASMSTR "int 10"
|
||||
ASMSTR "int 11"
|
||||
ASMSTR "int 12"
|
||||
ASMSTR "int 13"
|
||||
ASMSTR "int 14"
|
||||
ASMSTR "int 15"
|
||||
GLOBAL(eintrnames)
|
||||
|
||||
.data
|
||||
GLOBAL(intrnames)
|
||||
GLOBAL(eintrnames)
|
||||
GLOBAL(intrcnt)
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
.long 0
|
||||
GLOBAL(eintrcnt)
|
||||
|
|
Loading…
Reference in New Issue