1*997c4cdcSkamil /* $NetBSD: prog_ops.h,v 1.3 2019/08/18 04:10:22 kamil Exp $ */ 2f9740adaSpooka 3f9740adaSpooka /* 4f9740adaSpooka * Copyright (c) 2010 The NetBSD Foundation, Inc. 5f9740adaSpooka * All rights reserved. 6f9740adaSpooka * 7f9740adaSpooka * Redistribution and use in source and binary forms, with or without 8f9740adaSpooka * modification, are permitted provided that the following conditions 9f9740adaSpooka * are met: 10f9740adaSpooka * 1. Redistributions of source code must retain the above copyright 11f9740adaSpooka * notice, this list of conditions and the following disclaimer. 12f9740adaSpooka * 2. Redistributions in binary form must reproduce the above copyright 13f9740adaSpooka * notice, this list of conditions and the following disclaimer in the 14f9740adaSpooka * documentation and/or other materials provided with the distribution. 15f9740adaSpooka * 16f9740adaSpooka * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 17f9740adaSpooka * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 18f9740adaSpooka * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 19f9740adaSpooka * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 20f9740adaSpooka * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21f9740adaSpooka * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22f9740adaSpooka * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23f9740adaSpooka * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24f9740adaSpooka * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25f9740adaSpooka * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26f9740adaSpooka * POSSIBILITY OF SUCH DAMAGE. 27f9740adaSpooka */ 28f9740adaSpooka 29f9740adaSpooka #ifndef _PROG_OPS_H_ 30f9740adaSpooka #define _PROG_OPS_H_ 31f9740adaSpooka 32f9740adaSpooka #include <sys/types.h> 33f9740adaSpooka 3467a4f392Spooka #ifndef CRUNCHOPS 35*997c4cdcSkamil struct sysctlnode; 36*997c4cdcSkamil 37f9740adaSpooka struct prog_ops { 38f9740adaSpooka int (*op_init)(void); 39f9740adaSpooka 40f9740adaSpooka int (*op_sysctl)(const int *, u_int, void *, size_t *, 41f9740adaSpooka const void *, size_t); 42*997c4cdcSkamil 43*997c4cdcSkamil /* Indirection needed for sanitizers. */ 44*997c4cdcSkamil 45*997c4cdcSkamil int (*op_sysctlbyname)(const char *, void *, size_t *, 46*997c4cdcSkamil const void *, size_t); 47*997c4cdcSkamil 48*997c4cdcSkamil int (*op_sysctlgetmibinfo)(const char *, int *, u_int *, char *, 49*997c4cdcSkamil size_t *, struct sysctlnode **, int); 50f9740adaSpooka }; 51f9740adaSpooka extern const struct prog_ops prog_ops; 52f9740adaSpooka 53f9740adaSpooka #define prog_init prog_ops.op_init 54f9740adaSpooka #define prog_sysctl prog_ops.op_sysctl 55*997c4cdcSkamil #define prog_sysctlbyname prog_ops.op_sysctlbyname 56*997c4cdcSkamil #define prog_sysctlgetmibinfo prog_ops.op_sysctlgetmibinfo 5767a4f392Spooka #else 5867a4f392Spooka #define prog_init ((int (*)(void))NULL) 5967a4f392Spooka #define prog_sysctl sysctl 60*997c4cdcSkamil #define prog_sysctlbyname sysctlbyname 61*997c4cdcSkamil #define prog_sysctlgetmibinfo sysctlgetmibinfo 6267a4f392Spooka #endif 63f9740adaSpooka 64f9740adaSpooka #endif /* _PROG_OPS_H_ */ 65