diff options
author | phk <phk@FreeBSD.org> | 2002-03-26 22:07:38 +0000 |
---|---|---|
committer | phk <phk@FreeBSD.org> | 2002-03-26 22:07:38 +0000 |
commit | aeded841430797cf6f57896a1b74eaa00e0dd056 (patch) | |
tree | 2cbb86114a6ff641c38d48b296c167e13e603724 /sys/geom/geom_int.h | |
parent | 166310e873655f8ead69d0f7898911ed39fc34ea (diff) | |
download | FreeBSD-src-aeded841430797cf6f57896a1b74eaa00e0dd056.zip FreeBSD-src-aeded841430797cf6f57896a1b74eaa00e0dd056.tar.gz |
Eliminate some thread pointers which do not make sense anymore.
Split private parts of geom.h into geom_int.h. The latter should
never be included in class implemtations.
Diffstat (limited to 'sys/geom/geom_int.h')
-rw-r--r-- | sys/geom/geom_int.h | 87 |
1 files changed, 87 insertions, 0 deletions
diff --git a/sys/geom/geom_int.h b/sys/geom/geom_int.h new file mode 100644 index 0000000..6ea6769 --- /dev/null +++ b/sys/geom/geom_int.h @@ -0,0 +1,87 @@ +/*- + * Copyright (c) 2002 Poul-Henning Kamp + * Copyright (c) 2002 Networks Associates Technology, Inc. + * All rights reserved. + * + * This software was developed for the FreeBSD Project by Poul-Henning Kamp + * and NAI Labs, the Security Research Division of Network Associates, Inc. + * under DARPA/SPAWAR contract N66001-01-C-8035 ("CBOSS"), as part of the + * DARPA CHATS research program. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * 3. The names of the authors may not be used to endorse or promote + * products derived from this software without specific prior written + * permission. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +LIST_HEAD(class_list_head, g_class); +TAILQ_HEAD(g_tailq_head, g_geom); +TAILQ_HEAD(event_tailq_head, g_event); + +extern struct g_tailq_head geoms; +extern struct event_tailq_head events; +extern int g_debugflags; + +/* + * Various internal actions are tracked by tagging g_event[s] onto + * an internal eventqueue. + */ +enum g_events { + EV_NEW_CLASS, /* class */ + EV_NEW_PROVIDER, /* provider */ + EV_SPOILED, /* provider, consumer */ + EV_LAST +}; + +struct g_event { + enum g_events event; + TAILQ_ENTRY(g_event) events; + struct g_class *class; + struct g_geom *geom; + struct g_provider *provider; + struct g_consumer *consumer; +}; + +/* geom_dump.c */ +struct sbuf * g_conf(void); +struct sbuf * g_conf_specific(struct g_class *mp, struct g_geom *gp, struct g_provider *pp, struct g_consumer *cp); +struct sbuf * g_confdot(void); + + +/* geom_event.c */ +void g_event_init(void); +void g_post_event(enum g_events ev, struct g_class *mp, struct g_geom *gp, struct g_provider *pp, struct g_consumer *cp); +void g_run_events(void); + +/* geom_subr.c */ +extern struct class_list_head g_classs; +extern char *g_wait_event, *g_wait_sim, *g_wait_up, *g_wait_down; + +/* geom_io.c */ +void g_io_init(void); +void g_io_schedule_down(struct thread *tp); +void g_io_schedule_up(struct thread *tp); + +/* geom_kern.c / geom_kernsim.c */ +void g_init(void); |