summaryrefslogtreecommitdiffstats
path: root/sys/geom
diff options
context:
space:
mode:
authorphk <phk@FreeBSD.org>2003-03-23 10:07:44 +0000
committerphk <phk@FreeBSD.org>2003-03-23 10:07:44 +0000
commit3413b5f1fec2bbab466324edbc3dcf7358462771 (patch)
tree0ad2f00193454b6f92237001141b6918e2f227c2 /sys/geom
parent325bd5acd228c8fbdfbc746aee5a4b45dd82526a (diff)
downloadFreeBSD-src-3413b5f1fec2bbab466324edbc3dcf7358462771.zip
FreeBSD-src-3413b5f1fec2bbab466324edbc3dcf7358462771.tar.gz
Start leaking the AOM api into the tree.
Diffstat (limited to 'sys/geom')
-rw-r--r--sys/geom/geom_ctl.h86
-rw-r--r--sys/geom/geom_ext.h63
2 files changed, 149 insertions, 0 deletions
diff --git a/sys/geom/geom_ctl.h b/sys/geom/geom_ctl.h
new file mode 100644
index 0000000..240a48a
--- /dev/null
+++ b/sys/geom/geom_ctl.h
@@ -0,0 +1,86 @@
+/*-
+ * Copyright (c) 2003 Poul-Henning Kamp
+ * All rights reserved.
+ *
+ * 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$
+ */
+
+#ifndef _GEOM_GEOM_CTL_H_
+#define _GEOM_GEOM_CTL_H_
+
+/*
+ * Version number. Used to check consistency between kernel and libgeom.
+ */
+#define GEOM_CTL_VERSION 1
+
+/*
+ * Primitives.
+ */
+enum geom_ctl_request {
+ GEOM_INVALID_REQUEST = 0,
+ GEOM_CREATE_GEOM,
+ GEOM_NEW_GEOM,
+ GEOM_ATTACH,
+ GEOM_DETACH,
+ GEOM_CREATE_PROVIDER,
+ GEOM_DESTROY_PROVIDER,
+ GEOM_INSERT_GEOM,
+ GEOM_ELIMINATE_GEOM,
+ GEOM_WRITE_META,
+ GEOM_READ_META
+};
+
+#ifdef GEOM_CTL_TABLE
+struct geom_ctl_req_table {
+ int class;
+ int geom;
+ int provider;
+ int consumer;
+ int params;
+ int meta;
+ char *name;
+ enum geom_ctl_request request;
+} gcrt[] = {
+/* Cl Ge Pr Co Pa Me Name Request */
+ { 1, 1, 1, 0, 1, 0, "create geom", GEOM_CREATE_GEOM },
+ { 1, 1, 0, 0, 1, 0, "new geom", GEOM_NEW_GEOM },
+ { 0, 1, 1, 0, 1, 0, "attach", GEOM_ATTACH },
+ { 0, 1, 1, 0, 1, 0, "detach", GEOM_DETACH },
+ { 0, 1, 0, 0, 1, 0, "create provider", GEOM_CREATE_PROVIDER },
+ { 0, 1, 1, 0, 1, 0, "destroy provider", GEOM_DESTROY_PROVIDER },
+ { 1, 1, 1, 0, 1, 0, "insert geom", GEOM_INSERT_GEOM },
+ { 0, 1, 0, 0, 1, 0, "eliminate geom", GEOM_ELIMINATE_GEOM },
+ { 0, 1, 0, 0, 1, 1, "write meta", GEOM_WRITE_META },
+ { 0, 1, 0, 0, 1, 1, "read meta", GEOM_READ_META },
+
+ /* Terminator entry */
+ { 1, 1, 1, 1, 1, 1, "*INVALID*", GEOM_INVALID_REQUEST }
+};
+
+#endif /* GEOM_CTL_TABLE */
+
+#endif /* _GEOM_GEOM_CTL_H_ */
diff --git a/sys/geom/geom_ext.h b/sys/geom/geom_ext.h
new file mode 100644
index 0000000..15c0d17
--- /dev/null
+++ b/sys/geom/geom_ext.h
@@ -0,0 +1,63 @@
+/*-
+ * Copyright (c) 2003 Poul-Henning Kamp
+ * All rights reserved.
+ *
+ * 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.
+ *
+ * This file defines the interface between libgeom and the geom control device
+ * in the kernel, the interfaces defined herein are to be considered private
+ * and may only be used by libgeom. Applications wishing to interact with
+ * the geom subsystem must use libgeoms published APIs.
+ *
+ * $FreeBSD$
+ */
+
+#ifndef _GEOM_GEOM_EXT_H_
+#define _GEOM_GEOM_EXT_H_
+
+#include <sys/ioccom.h>
+
+struct geom_ctl_req_arg {
+ u_int nlen;
+ char *name;
+ off_t offset;
+ int len;
+ void *value;
+};
+
+struct geom_ctl_req {
+ u_int version;
+ u_int serial;
+ enum geom_ctl_request request;
+ u_int narg;
+ struct geom_ctl_req_arg *arg;
+ u_int lerror;
+ char *error;
+ struct geom_ctl_req_table *reqt;
+};
+
+#define GEOM_CTL _IOW('G', GEOM_CTL_VERSION, struct geom_ctl_req)
+
+#endif /* _GEOM_GEOM_EXT_H_ */
OpenPOWER on IntegriCloud