kern_softint.c revision 1.2 1 /* $NetBSD: kern_softint.c,v 1.2 2007/10/08 15:51:03 ad Exp $ */
2
3 /*-
4 * Copyright (c) 2007 The NetBSD Foundation, Inc.
5 * All rights reserved.
6 *
7 * This code is derived from software contributed to The NetBSD Foundation
8 * by Andrew Doran.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * 1. Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * 2. Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the distribution.
18 * 3. All advertising materials mentioning features or use of this software
19 * must display the following acknowledgement:
20 * This product includes software developed by the NetBSD
21 * Foundation, Inc. and its contributors.
22 * 4. Neither the name of The NetBSD Foundation nor the names of its
23 * contributors may be used to endorse or promote products derived
24 * from this software without specific prior written permission.
25 *
26 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
27 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
28 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
30 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
31 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
32 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
33 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
34 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
35 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
36 * POSSIBILITY OF SUCH DAMAGE.
37 */
38
39 /*
40 * Stub for code to be merged from the vmlocking CVS branch.
41 */
42
43 #include <sys/cdefs.h>
44 __KERNEL_RCSID(0, "$NetBSD: kern_softint.c,v 1.2 2007/10/08 15:51:03 ad Exp $");
45
46 #include <sys/param.h>
47 #include <sys/intr.h>
48
49 /*
50 * softint_init:
51 *
52 * Initialize per-CPU data structures. Called from mi_cpu_attach().
53 */
54 void
55 softint_init(struct cpu_info *ci)
56 {
57
58 /* nothing yet */
59 }
60
61 /*
62 * softint_establish:
63 *
64 * Register a software interrupt handler.
65 */
66 void *
67 softint_establish(u_int flags, void (*func)(void *), void *arg)
68 {
69 u_int level;
70
71 level = (flags & SOFTINT_LVLMASK);
72 KASSERT(level < SOFTINT_COUNT);
73
74 switch (level) {
75 case SOFTINT_CLOCK:
76 level = IPL_SOFTCLOCK;
77 break;
78 case SOFTINT_NET:
79 case SOFTINT_BIO:
80 level = IPL_SOFTNET;
81 break;
82 case SOFTINT_SERIAL:
83 #ifdef IPL_SOFTSERIAL
84 level = IPL_SOFTSERIAL;
85 #else
86 level = IPL_SOFTNET;
87 #endif
88 break;
89 default:
90 panic("softint_establish");
91 }
92
93 return softintr_establish(level, func, arg);
94 }
95
96 /*
97 * softint_disestablish:
98 *
99 * Unregister a software interrupt handler.
100 */
101 void
102 softint_disestablish(void *arg)
103 {
104
105 softintr_disestablish(arg);
106 }
107
108 /*
109 * softint_schedule:
110 *
111 * Trigger a software interrupt. Must be called from a hardware
112 * interrupt handler, or with preemption disabled (since we are
113 * using the value of curcpu()).
114 */
115 void
116 softint_schedule(void *arg)
117 {
118
119 softintr_schedule(arg);
120 }
121
122 /*
123 * softint_block:
124 *
125 * Update statistics when the soft interrupt blocks.
126 */
127 void
128 softint_block(lwp_t *l)
129 {
130
131 /* nothing yet */
132 }
133