Expand PMF_FN_* macros.
[netbsd-mini2440.git] / external / bsd / iscsi / dist / src / initiator / libkmod.h
blob04ce3415d0caaf86ca5c88f0b8b6bfd291fe96e3
1 /* $NetBSD: libkmod.h,v 1.1 2009/06/20 04:12:55 agc Exp $ */
3 /*-
4 * Copyright (c) 2008 The NetBSD Foundation, Inc.
5 * All rights reserved.
7 * Redistribution and use in source and binary forms, with or without
8 * modification, are permitted provided that the following conditions
9 * are met:
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.
28 #ifndef LIBKMOD_H_
29 #define LIBKMOD_H_ 20090619
31 #include <sys/module.h>
33 #include <stdio.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 */
40 } kernel_t;
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 */
50 } kmod_t;
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 *);
63 #endif