1 /* $NetBSD: libkmod.h,v 1.1 2009/06/20 04:12:55 agc Exp $ */
4 * Copyright (c) 2008 The NetBSD Foundation, Inc.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
10 * 1. Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
12 * 2. Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
17 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
18 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
19 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
20 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
26 * POSSIBILITY OF SUCH DAMAGE.
29 #define LIBKMOD_H_ 20090619
31 #include <sys/module.h>
35 /* this struct describes the loaded modules in the kernel */
36 typedef struct kernel_t
{
37 size_t size
; /* size of iovec array */
38 size_t c
; /* counter during "read" operations */
39 struct iovec iov
; /* iovecs from the modctl operation */
42 /* this struct describes a module */
43 typedef struct kmod_t
{
44 char *name
; /* module name */
45 char *class; /* module class */
46 char *source
; /* source of module loading */
47 int refcnt
; /* reference count */
48 unsigned size
; /* size of binary module */
49 char *required
; /* any pre-reqs module has */
52 /* low level open, read, write ops */
53 int openkmod(kernel_t
*);
54 int readkmod(kernel_t
*, kmod_t
*);
55 void freekmod(kmod_t
*);
56 int closekmod(kernel_t
*);
58 /* high-level kmod operations */
59 int kmodstat(const char *, FILE *);
60 int kmodload(const char *);
61 int kmodunload(const char *);