160727d8bSWarner Losh /*- 2f6a7723dSBenno Rice * Copyright (C) 2002 Benno Rice. 3f6a7723dSBenno Rice * All rights reserved. 4f6a7723dSBenno Rice * 5f6a7723dSBenno Rice * Redistribution and use in source and binary forms, with or without 6f6a7723dSBenno Rice * modification, are permitted provided that the following conditions 7f6a7723dSBenno Rice * are met: 8f6a7723dSBenno Rice * 1. Redistributions of source code must retain the above copyright 9f6a7723dSBenno Rice * notice, this list of conditions and the following disclaimer. 10f6a7723dSBenno Rice * 2. Redistributions in binary form must reproduce the above copyright 11f6a7723dSBenno Rice * notice, this list of conditions and the following disclaimer in the 12f6a7723dSBenno Rice * documentation and/or other materials provided with the distribution. 13f6a7723dSBenno Rice * 14f6a7723dSBenno Rice * THIS SOFTWARE IS PROVIDED BY Benno Rice ``AS IS'' AND ANY EXPRESS OR 15f6a7723dSBenno Rice * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES 16f6a7723dSBenno Rice * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. 17f6a7723dSBenno Rice * IN NO EVENT SHALL TOOLS GMBH BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 18f6a7723dSBenno Rice * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 19f6a7723dSBenno Rice * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 20f6a7723dSBenno Rice * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 21f6a7723dSBenno Rice * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 22f6a7723dSBenno Rice * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 23f6a7723dSBenno Rice * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 24f6a7723dSBenno Rice * 25f6a7723dSBenno Rice * $FreeBSD$ 26f6a7723dSBenno Rice */ 27f6a7723dSBenno Rice 28f6a7723dSBenno Rice #ifndef _MACHINE_INTR_MACHDEP_H_ 29f6a7723dSBenno Rice #define _MACHINE_INTR_MACHDEP_H_ 30f6a7723dSBenno Rice 31f6a7723dSBenno Rice typedef void ih_func_t(void *); 32f6a7723dSBenno Rice 33f6a7723dSBenno Rice struct ithd; 34f6a7723dSBenno Rice 35f6a7723dSBenno Rice struct intr_handler { 36f6a7723dSBenno Rice ih_func_t *ih_func; 37f6a7723dSBenno Rice void *ih_arg; 38f6a7723dSBenno Rice struct ithd *ih_ithd; 39f6a7723dSBenno Rice u_int ih_irq; 40cbab7e25SBenno Rice u_int ih_flags; 4149f397d0SPeter Grehan u_int ih_index; 4249f397d0SPeter Grehan u_long *ih_count; 4349f397d0SPeter Grehan u_long *ih_straycount; 44f6a7723dSBenno Rice }; 45f6a7723dSBenno Rice 460bfbe7b9SPeter Wemm void intr_init(void (*)(void), int, void (*)(uintptr_t), void (*)(uintptr_t)); 47cbab7e25SBenno Rice void intr_setup(u_int, ih_func_t *, void *, u_int); 48f6a7723dSBenno Rice int inthand_add(const char *, u_int, void (*)(void *), void *, int, 49f6a7723dSBenno Rice void **); 50f6a7723dSBenno Rice int inthand_remove(u_int, void *); 51f6a7723dSBenno Rice void intr_handle(u_int); 52f6a7723dSBenno Rice 53f6a7723dSBenno Rice #endif /* _MACHINE_INTR_MACHDEP_H_ */ 54