\hypertarget{g__gate_8h_source}{}\doxysection{g\+\_\+gate.\+h}
\label{g__gate_8h_source}\index{geom/gate/g\_gate.h@{geom/gate/g\_gate.h}}
\mbox{\hyperlink{g__gate_8h}{Go to the documentation of this file.}}
\begin{DoxyCode}{0}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00001}00001 \textcolor{comment}{/*-\/}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00002}00002 \textcolor{comment}{ * SPDX-\/License-\/Identifier: BSD-\/2-\/Clause-\/FreeBSD}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00003}00003 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00004}00004 \textcolor{comment}{ * Copyright (c) 2004-\/2009 Pawel Jakub Dawidek <pjd@FreeBSD.org>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00005}00005 \textcolor{comment}{ * All rights reserved.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00006}00006 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00007}00007 \textcolor{comment}{ * Redistribution and use in source and binary forms, with or without}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00008}00008 \textcolor{comment}{ * modification, are permitted provided that the following conditions}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00009}00009 \textcolor{comment}{ * are met:}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00010}00010 \textcolor{comment}{ * 1. Redistributions of source code must retain the above copyright}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00011}00011 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00012}00012 \textcolor{comment}{ * 2. Redistributions in binary form must reproduce the above copyright}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00013}00013 \textcolor{comment}{ *    notice, this list of conditions and the following disclaimer in the}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00014}00014 \textcolor{comment}{ *    documentation and/or other materials provided with the distribution.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00015}00015 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00016}00016 \textcolor{comment}{ * THIS SOFTWARE IS PROVIDED BY THE AUTHORS AND CONTRIBUTORS ``AS IS'' AND}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00017}00017 \textcolor{comment}{ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00018}00018 \textcolor{comment}{ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00019}00019 \textcolor{comment}{ * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00020}00020 \textcolor{comment}{ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00021}00021 \textcolor{comment}{ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00022}00022 \textcolor{comment}{ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00023}00023 \textcolor{comment}{ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00024}00024 \textcolor{comment}{ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00025}00025 \textcolor{comment}{ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00026}00026 \textcolor{comment}{ * SUCH DAMAGE.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00027}00027 \textcolor{comment}{ *}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00028}00028 \textcolor{comment}{ * \$FreeBSD\$}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00029}00029 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00030}00030 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00031}00031 \textcolor{preprocessor}{\#ifndef \_G\_GATE\_H\_}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00032}00032 \textcolor{preprocessor}{\#define \_G\_GATE\_H\_}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00033}00033 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00034}00034 \textcolor{preprocessor}{\#include <sys/param.h>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00035}00035 \textcolor{preprocessor}{\#include <sys/lock.h>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00036}00036 \textcolor{preprocessor}{\#include <sys/mutex.h>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00037}00037 \textcolor{preprocessor}{\#include <sys/queue.h>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00038}00038 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00039}00039 \textcolor{preprocessor}{\#include <\mbox{\hyperlink{geom_8h}{geom/geom.h}}>}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00040}00040 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00041}\mbox{\hyperlink{g__gate_8h_ae0d1441147d554ef22f75c9de3420246}{00041}} \textcolor{preprocessor}{\#define G\_GATE\_CLASS\_NAME       "{}GATE"{}}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00042}\mbox{\hyperlink{g__gate_8h_a33eb0e46925a86ad7c1541a4ef1a544c}{00042}} \textcolor{preprocessor}{\#define G\_GATE\_PROVIDER\_NAME    "{}ggate"{}}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00043}\mbox{\hyperlink{g__gate_8h_a30a7cfcbc73978c054409a0cd9bc4c3a}{00043}} \textcolor{preprocessor}{\#define G\_GATE\_MOD\_NAME         "{}ggate"{}}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00044}\mbox{\hyperlink{g__gate_8h_a8d44e90241b56894b8dd96fee247ec59}{00044}} \textcolor{preprocessor}{\#define G\_GATE\_CTL\_NAME         "{}ggctl"{}}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00045}00045 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00046}\mbox{\hyperlink{g__gate_8h_aceda59bd309b2cbf0efe2bd4ae4d1273}{00046}} \textcolor{preprocessor}{\#define G\_GATE\_VERSION          3}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00047}00047 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00048}00048 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00049}00049 \textcolor{comment}{ * Maximum number of request that can be stored in}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00050}00050 \textcolor{comment}{ * the queue when there are no workers.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00051}00051 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00052}\mbox{\hyperlink{g__gate_8h_a431e11fe8db539bbe713315f34237e18}{00052}} \textcolor{preprocessor}{\#define G\_GATE\_MAX\_QUEUE\_SIZE   4096}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00053}00053 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00054}\mbox{\hyperlink{g__gate_8h_ad7296b9d5c5843d3df8d9eb6dc654357}{00054}} \textcolor{preprocessor}{\#define G\_GATE\_FLAG\_READONLY    0x0001}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00055}\mbox{\hyperlink{g__gate_8h_a413c9d978811465989e7bd8affcdd6a7}{00055}} \textcolor{preprocessor}{\#define G\_GATE\_FLAG\_WRITEONLY   0x0002}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00056}\mbox{\hyperlink{g__gate_8h_a86efdfb48a10788f8fead9dd90b11a40}{00056}} \textcolor{preprocessor}{\#define G\_GATE\_FLAG\_DESTROY     0x1000}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00057}\mbox{\hyperlink{g__gate_8h_ae9f26cfbb0d69218b55c8af9ddd4a156}{00057}} \textcolor{preprocessor}{\#define G\_GATE\_USERFLAGS        (G\_GATE\_FLAG\_READONLY | G\_GATE\_FLAG\_WRITEONLY)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00058}00058 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00059}00059 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00060}00060 \textcolor{comment}{ * Pick unit number automatically in /dev/ggate<unit>.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00061}00061 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00062}\mbox{\hyperlink{g__gate_8h_a9b264239029a216889ede3277ac01a1d}{00062}} \textcolor{preprocessor}{\#define G\_GATE\_UNIT\_AUTO        (-\/1)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00063}00063 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00064}00064 \textcolor{comment}{ * Full provider name is given, so don't use ggate<unit>.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00065}00065 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00066}\mbox{\hyperlink{g__gate_8h_aadc15f8430ef26acb4f8e76244312221}{00066}} \textcolor{preprocessor}{\#define G\_GATE\_NAME\_GIVEN       (-\/2)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00067}00067 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00068}\mbox{\hyperlink{g__gate_8h_ab18bf0e2c7103ca729b3f73c1798746b}{00068}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_CREATE       \_IOWR('m', 0, struct g\_gate\_ctl\_create)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00069}\mbox{\hyperlink{g__gate_8h_a61394cda092fc55ac750215ede8347f9}{00069}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_MODIFY       \_IOWR('m', 1, struct g\_gate\_ctl\_modify)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00070}\mbox{\hyperlink{g__gate_8h_a1e04b142c359d5a1732e9267426f0095}{00070}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_DESTROY      \_IOWR('m', 2, struct g\_gate\_ctl\_destroy)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00071}\mbox{\hyperlink{g__gate_8h_af5a9b3b3f303412e2dcc07fae87e178e}{00071}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_CANCEL       \_IOWR('m', 3, struct g\_gate\_ctl\_cancel)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00072}\mbox{\hyperlink{g__gate_8h_a8c8c2b656ac391021f4770d88e1daf73}{00072}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_START        \_IOWR('m', 4, struct g\_gate\_ctl\_io)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00073}\mbox{\hyperlink{g__gate_8h_a64005b162a13744dcf049159f36c3a6d}{00073}} \textcolor{preprocessor}{\#define G\_GATE\_CMD\_DONE         \_IOWR('m', 5, struct g\_gate\_ctl\_io)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00074}00074 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00075}\mbox{\hyperlink{g__gate_8h_a6d2a3c866e7c36b08d0b83834bb6791d}{00075}} \textcolor{preprocessor}{\#define G\_GATE\_INFOSIZE         2048}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00076}00076 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00077}00077 \textcolor{preprocessor}{\#ifdef \_KERNEL}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00078}00078 \textcolor{comment}{/*}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00079}00079 \textcolor{comment}{ * 'P:' means 'Protected by'.}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00080}00080 \textcolor{comment}{ */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00081}\mbox{\hyperlink{structg__gate__softc}{00081}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__softc}{g\_gate\_softc}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00082}\mbox{\hyperlink{structg__gate__softc_a463d10d3a6f716b4d3a8523124316c0f}{00082}}         \textcolor{keywordtype}{char}                    *\mbox{\hyperlink{structg__gate__softc_a463d10d3a6f716b4d3a8523124316c0f}{sc\_name}};                \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00083}\mbox{\hyperlink{structg__gate__softc_a73063ecc9b79d8a62099e45e6ce8db51}{00083}}         \textcolor{keywordtype}{int}                      \mbox{\hyperlink{structg__gate__softc_a73063ecc9b79d8a62099e45e6ce8db51}{sc\_unit}};                \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00084}\mbox{\hyperlink{structg__gate__softc_ac8ef3ed01c73a4b102d123f36b0f8872}{00084}}         \textcolor{keywordtype}{int}                      \mbox{\hyperlink{structg__gate__softc_ac8ef3ed01c73a4b102d123f36b0f8872}{sc\_ref}};          \textcolor{comment}{/* P: g\_gate\_list\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00085}\mbox{\hyperlink{structg__gate__softc_a6a4e491f493bf7eaf393dd8ca83f79a8}{00085}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__provider}{g\_provider}}     *\mbox{\hyperlink{structg__gate__softc_a6a4e491f493bf7eaf393dd8ca83f79a8}{sc\_provider}};                \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00086}\mbox{\hyperlink{structg__gate__softc_a84c3b69044ec5f9d855c5372fa2740e7}{00086}}         uint32\_t                 \mbox{\hyperlink{structg__gate__softc_a84c3b69044ec5f9d855c5372fa2740e7}{sc\_flags}};              \textcolor{comment}{/* P: sc\_queue\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00087}00087 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00088}\mbox{\hyperlink{structg__gate__softc_a35a04b7e6d55d648c67f74c3d7e3c032}{00088}}         \textcolor{keyword}{struct }bio\_queue\_head    \mbox{\hyperlink{structg__gate__softc_a35a04b7e6d55d648c67f74c3d7e3c032}{sc\_inqueue}};          \textcolor{comment}{/* P: sc\_queue\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00089}\mbox{\hyperlink{structg__gate__softc_ac184b57ea659df095b256cec55255763}{00089}}         \textcolor{keyword}{struct }bio\_queue\_head    \mbox{\hyperlink{structg__gate__softc_ac184b57ea659df095b256cec55255763}{sc\_outqueue}};                \textcolor{comment}{/* P: sc\_queue\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00090}\mbox{\hyperlink{structg__gate__softc_a37af4dfc3b501929eb576f819e4e3385}{00090}}         \textcolor{keyword}{struct }mtx               \mbox{\hyperlink{structg__gate__softc_a37af4dfc3b501929eb576f819e4e3385}{sc\_queue\_mtx}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00091}\mbox{\hyperlink{structg__gate__softc_aa4781c44dcd3538a79e199c10339ae38}{00091}}         uint32\_t                 \mbox{\hyperlink{structg__gate__softc_aa4781c44dcd3538a79e199c10339ae38}{sc\_queue\_count}};  \textcolor{comment}{/* P: sc\_queue\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00092}\mbox{\hyperlink{structg__gate__softc_a592299eb252304887a4d1285c9adedd8}{00092}}         uint32\_t                 \mbox{\hyperlink{structg__gate__softc_a592299eb252304887a4d1285c9adedd8}{sc\_queue\_size}};            \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00093}\mbox{\hyperlink{structg__gate__softc_af50bc6523e69421b2ddd0efc765d04b7}{00093}}         u\_int                    \mbox{\hyperlink{structg__gate__softc_af50bc6523e69421b2ddd0efc765d04b7}{sc\_timeout}};          \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00094}\mbox{\hyperlink{structg__gate__softc_a64f348a33de8ebe576b7aa7d7fc9bb2e}{00094}}         \textcolor{keyword}{struct }\mbox{\hyperlink{structg__consumer}{g\_consumer}}     *\mbox{\hyperlink{structg__gate__softc_a64f348a33de8ebe576b7aa7d7fc9bb2e}{sc\_readcons}};                \textcolor{comment}{/* P: sc\_read\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00095}\mbox{\hyperlink{structg__gate__softc_a4c46733d618bf65ee350dcaa50a98cc0}{00095}}         off\_t                    \mbox{\hyperlink{structg__gate__softc_a4c46733d618bf65ee350dcaa50a98cc0}{sc\_readoffset}};            \textcolor{comment}{/* P: sc\_read\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00096}\mbox{\hyperlink{structg__gate__softc_a980e77893d181558826fec958e2abf0c}{00096}}         \textcolor{keyword}{struct }callout           \mbox{\hyperlink{structg__gate__softc_a980e77893d181558826fec958e2abf0c}{sc\_callout}};          \textcolor{comment}{/* P: (modified only}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00097}00097 \textcolor{comment}{                                                               from callout}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00098}00098 \textcolor{comment}{                                                               thread) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00099}\mbox{\hyperlink{structg__gate__softc_a438f6a92a1b279a0bed5eddd5242eb6b}{00099}}         uintptr\_t                \mbox{\hyperlink{structg__gate__softc_a438f6a92a1b279a0bed5eddd5242eb6b}{sc\_seq}};          \textcolor{comment}{/* P: sc\_queue\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00100}\mbox{\hyperlink{structg__gate__softc_a43c37ac10cab5d0f52121d6aacfb5e60}{00100}}         \mbox{\hyperlink{structg__gate__softc_a43c37ac10cab5d0f52121d6aacfb5e60}{LIST\_ENTRY}}(\mbox{\hyperlink{structg__gate__softc}{g\_gate\_softc}}) sc\_next;         \textcolor{comment}{/* P: g\_gate\_list\_mtx */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00101}\mbox{\hyperlink{structg__gate__softc_a6bb9236bcba1aa870e615590b8edcffa}{00101}}         \textcolor{keywordtype}{char}                     \mbox{\hyperlink{structg__gate__softc_a6bb9236bcba1aa870e615590b8edcffa}{sc\_info}}[\mbox{\hyperlink{g__gate_8h_a6d2a3c866e7c36b08d0b83834bb6791d}{G\_GATE\_INFOSIZE}}]; \textcolor{comment}{/* P: (read-\/only) */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00102}\mbox{\hyperlink{structg__gate__softc_ab348293d423911e51223df8145c69bc0}{00102}}         \textcolor{keyword}{struct }mtx               \mbox{\hyperlink{structg__gate__softc_ab348293d423911e51223df8145c69bc0}{sc\_read\_mtx}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00103}00103 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00104}00104 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00105}\mbox{\hyperlink{g__gate_8h_a55f7a3bf1df0cf8bdab9cbcaa02da57a}{00105}} \textcolor{preprocessor}{\#define G\_GATE\_DEBUG(lvl, ...) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00106}00106 \textcolor{preprocessor}{    \_GEOM\_DEBUG("{}GEOM\_GATE"{}}, g\_gate\_debug, (lvl), NULL, \_\_VA\_ARGS\_\_)}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00107}\mbox{\hyperlink{g__gate_8h_abf8fd7e5cd7d2dfba621abcdff085c59}{00107}} \textcolor{preprocessor}{\#define G\_GATE\_LOGREQ(lvl, bp, ...) \(\backslash\)}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00108}00108 \textcolor{preprocessor}{    \_GEOM\_DEBUG("{}GEOM\_GATE"{}}, g\_gate\_debug, (lvl), (bp), \_\_VA\_ARGS\_\_)}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00109}00109 \textcolor{preprocessor}{\#endif  }\textcolor{comment}{/* !\_KERNEL */}\textcolor{preprocessor}{}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00110}00110 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00111}\mbox{\hyperlink{structg__gate__ctl__create}{00111}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__ctl__create}{g\_gate\_ctl\_create}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00112}\mbox{\hyperlink{structg__gate__ctl__create_af4afe5c41a6d1636fe5d9c6e6e09fe11}{00112}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__create_af4afe5c41a6d1636fe5d9c6e6e09fe11}{gctl\_version}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00113}\mbox{\hyperlink{structg__gate__ctl__create_aab0c7a09583029a1249a532328fa7c70}{00113}}         off\_t   \mbox{\hyperlink{structg__gate__ctl__create_aab0c7a09583029a1249a532328fa7c70}{gctl\_mediasize}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00114}\mbox{\hyperlink{structg__gate__ctl__create_a7e5eef8b545c9c0d05ab820388bcc1b8}{00114}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__create_a7e5eef8b545c9c0d05ab820388bcc1b8}{gctl\_sectorsize}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00115}\mbox{\hyperlink{structg__gate__ctl__create_a324d0f842dba18463e1333eb6e95c4dc}{00115}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__create_a324d0f842dba18463e1333eb6e95c4dc}{gctl\_flags}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00116}\mbox{\hyperlink{structg__gate__ctl__create_a0b8bb15fcfdef6567e3d8e578cc3d26e}{00116}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__create_a0b8bb15fcfdef6567e3d8e578cc3d26e}{gctl\_maxcount}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00117}\mbox{\hyperlink{structg__gate__ctl__create_ae9a080387a57955d380682a5ef29a469}{00117}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__create_ae9a080387a57955d380682a5ef29a469}{gctl\_timeout}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00118}\mbox{\hyperlink{structg__gate__ctl__create_a88c119b0b4cf4174f6c59f05cdad0a65}{00118}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structg__gate__ctl__create_a88c119b0b4cf4174f6c59f05cdad0a65}{gctl\_name}}[NAME\_MAX];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00119}\mbox{\hyperlink{structg__gate__ctl__create_a42a91d4a770a442b964594ef5e5ef6be}{00119}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structg__gate__ctl__create_a42a91d4a770a442b964594ef5e5ef6be}{gctl\_info}}[\mbox{\hyperlink{g__gate_8h_a6d2a3c866e7c36b08d0b83834bb6791d}{G\_GATE\_INFOSIZE}}];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00120}\mbox{\hyperlink{structg__gate__ctl__create_acc681099273ff38d410a4ef15e84dbdb}{00120}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structg__gate__ctl__create_acc681099273ff38d410a4ef15e84dbdb}{gctl\_readprov}}[NAME\_MAX];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00121}\mbox{\hyperlink{structg__gate__ctl__create_adc4488eb9445aed809971c8a6eb31715}{00121}}         off\_t   \mbox{\hyperlink{structg__gate__ctl__create_adc4488eb9445aed809971c8a6eb31715}{gctl\_readoffset}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00122}\mbox{\hyperlink{structg__gate__ctl__create_a29ec56ca0deba8015743098935e7a683}{00122}}         \textcolor{keywordtype}{int}     \mbox{\hyperlink{structg__gate__ctl__create_a29ec56ca0deba8015743098935e7a683}{gctl\_unit}};     \textcolor{comment}{/* in/out */}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00123}00123 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00124}00124 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00125}\mbox{\hyperlink{g__gate_8h_a2ee2f2db6cfda4a9266acc233364c450}{00125}} \textcolor{preprocessor}{\#define GG\_MODIFY\_MEDIASIZE     0x01}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00126}\mbox{\hyperlink{g__gate_8h_a5ce7c599ee6c89d80ee3eaf8827f6ed7}{00126}} \textcolor{preprocessor}{\#define GG\_MODIFY\_INFO          0x02}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00127}\mbox{\hyperlink{g__gate_8h_a3c50177c3d254b10a8110b509d8a321f}{00127}} \textcolor{preprocessor}{\#define GG\_MODIFY\_READPROV      0x04}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00128}\mbox{\hyperlink{g__gate_8h_a3a8ab43868fb1208a9821a53b9e6ee4b}{00128}} \textcolor{preprocessor}{\#define GG\_MODIFY\_READOFFSET    0x08}}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00129}\mbox{\hyperlink{structg__gate__ctl__modify}{00129}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__ctl__modify}{g\_gate\_ctl\_modify}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00130}\mbox{\hyperlink{structg__gate__ctl__modify_a0fb007ff8fa6663cab71aaca573c8681}{00130}}         u\_int           \mbox{\hyperlink{structg__gate__ctl__modify_a0fb007ff8fa6663cab71aaca573c8681}{gctl\_version}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00131}\mbox{\hyperlink{structg__gate__ctl__modify_ac064a4690c4b723e4cfe6c4bd5b32ce6}{00131}}         \textcolor{keywordtype}{int}             \mbox{\hyperlink{structg__gate__ctl__modify_ac064a4690c4b723e4cfe6c4bd5b32ce6}{gctl\_unit}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00132}\mbox{\hyperlink{structg__gate__ctl__modify_ad818238263fa19a951787110b08dc029}{00132}}         uint32\_t        \mbox{\hyperlink{structg__gate__ctl__modify_ad818238263fa19a951787110b08dc029}{gctl\_modify}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00133}\mbox{\hyperlink{structg__gate__ctl__modify_af75b91641c5a7aaa2db2fe2c81588595}{00133}}         off\_t           \mbox{\hyperlink{structg__gate__ctl__modify_af75b91641c5a7aaa2db2fe2c81588595}{gctl\_mediasize}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00134}\mbox{\hyperlink{structg__gate__ctl__modify_a9c6a907e09bbf66801de7c85d82afc3e}{00134}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structg__gate__ctl__modify_a9c6a907e09bbf66801de7c85d82afc3e}{gctl\_info}}[\mbox{\hyperlink{g__gate_8h_a6d2a3c866e7c36b08d0b83834bb6791d}{G\_GATE\_INFOSIZE}}];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00135}\mbox{\hyperlink{structg__gate__ctl__modify_a6758a0ab7caccf43282f4a249d9cf8c2}{00135}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structg__gate__ctl__modify_a6758a0ab7caccf43282f4a249d9cf8c2}{gctl\_readprov}}[NAME\_MAX];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00136}\mbox{\hyperlink{structg__gate__ctl__modify_a781abc48f8e1a1a12d0bb209ae0ec25b}{00136}}         off\_t           \mbox{\hyperlink{structg__gate__ctl__modify_a781abc48f8e1a1a12d0bb209ae0ec25b}{gctl\_readoffset}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00137}00137 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00138}00138 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00139}\mbox{\hyperlink{structg__gate__ctl__destroy}{00139}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__ctl__destroy}{g\_gate\_ctl\_destroy}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00140}\mbox{\hyperlink{structg__gate__ctl__destroy_ac2c18487938b6bf4f51f1c2b6d95fc61}{00140}}         u\_int   \mbox{\hyperlink{structg__gate__ctl__destroy_ac2c18487938b6bf4f51f1c2b6d95fc61}{gctl\_version}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00141}\mbox{\hyperlink{structg__gate__ctl__destroy_a002e1258396848f577eb98792994e610}{00141}}         \textcolor{keywordtype}{int}     \mbox{\hyperlink{structg__gate__ctl__destroy_a002e1258396848f577eb98792994e610}{gctl\_unit}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00142}\mbox{\hyperlink{structg__gate__ctl__destroy_a895c294204a381c1ca24af1e21afc9dc}{00142}}         \textcolor{keywordtype}{int}     \mbox{\hyperlink{structg__gate__ctl__destroy_a895c294204a381c1ca24af1e21afc9dc}{gctl\_force}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00143}\mbox{\hyperlink{structg__gate__ctl__destroy_ab1383c351a856352ede36c8d33de29a0}{00143}}         \textcolor{keywordtype}{char}    \mbox{\hyperlink{structg__gate__ctl__destroy_ab1383c351a856352ede36c8d33de29a0}{gctl\_name}}[NAME\_MAX];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00144}00144 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00145}00145 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00146}\mbox{\hyperlink{structg__gate__ctl__cancel}{00146}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__ctl__cancel}{g\_gate\_ctl\_cancel}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00147}\mbox{\hyperlink{structg__gate__ctl__cancel_a0893c44f531946c024d823e06950039e}{00147}}         u\_int           \mbox{\hyperlink{structg__gate__ctl__cancel_a0893c44f531946c024d823e06950039e}{gctl\_version}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00148}\mbox{\hyperlink{structg__gate__ctl__cancel_a1c2631fcd6e6af3a51b02e91dbc40a15}{00148}}         \textcolor{keywordtype}{int}             \mbox{\hyperlink{structg__gate__ctl__cancel_a1c2631fcd6e6af3a51b02e91dbc40a15}{gctl\_unit}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00149}\mbox{\hyperlink{structg__gate__ctl__cancel_aa0f54bde4b46bd10da2f9bc2b0a35491}{00149}}         uintptr\_t       \mbox{\hyperlink{structg__gate__ctl__cancel_aa0f54bde4b46bd10da2f9bc2b0a35491}{gctl\_seq}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00150}\mbox{\hyperlink{structg__gate__ctl__cancel_abef98d6f1c6a25844ccde668850f7ac1}{00150}}         \textcolor{keywordtype}{char}            \mbox{\hyperlink{structg__gate__ctl__cancel_abef98d6f1c6a25844ccde668850f7ac1}{gctl\_name}}[NAME\_MAX];}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00151}00151 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00152}00152 }
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00153}\mbox{\hyperlink{structg__gate__ctl__io}{00153}} \textcolor{keyword}{struct }\mbox{\hyperlink{structg__gate__ctl__io}{g\_gate\_ctl\_io}} \{}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00154}\mbox{\hyperlink{structg__gate__ctl__io_a161ba444985b44c40f098b7b2e79a1e5}{00154}}         u\_int            \mbox{\hyperlink{structg__gate__ctl__io_a161ba444985b44c40f098b7b2e79a1e5}{gctl\_version}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00155}\mbox{\hyperlink{structg__gate__ctl__io_aafbf4e5035a5a8b3b2564d7b23c1ab58}{00155}}         \textcolor{keywordtype}{int}              \mbox{\hyperlink{structg__gate__ctl__io_aafbf4e5035a5a8b3b2564d7b23c1ab58}{gctl\_unit}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00156}\mbox{\hyperlink{structg__gate__ctl__io_addbcda9b137abbc54b6a0341663942a7}{00156}}         uintptr\_t        \mbox{\hyperlink{structg__gate__ctl__io_addbcda9b137abbc54b6a0341663942a7}{gctl\_seq}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00157}\mbox{\hyperlink{structg__gate__ctl__io_a458b1ea925dc6a556541c5e8ceb0e1f0}{00157}}         u\_int            \mbox{\hyperlink{structg__gate__ctl__io_a458b1ea925dc6a556541c5e8ceb0e1f0}{gctl\_cmd}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00158}\mbox{\hyperlink{structg__gate__ctl__io_aa9fec89a48dcf340c24e42682524eb5c}{00158}}         off\_t            \mbox{\hyperlink{structg__gate__ctl__io_aa9fec89a48dcf340c24e42682524eb5c}{gctl\_offset}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00159}\mbox{\hyperlink{structg__gate__ctl__io_ad76c9796dd9bef7fe62b6ca08d1c6aa1}{00159}}         off\_t            \mbox{\hyperlink{structg__gate__ctl__io_ad76c9796dd9bef7fe62b6ca08d1c6aa1}{gctl\_length}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00160}\mbox{\hyperlink{structg__gate__ctl__io_a046d37d24daa3663fa706fa5c5eb0340}{00160}}         \textcolor{keywordtype}{void}            *\mbox{\hyperlink{structg__gate__ctl__io_a046d37d24daa3663fa706fa5c5eb0340}{gctl\_data}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00161}\mbox{\hyperlink{structg__gate__ctl__io_aea790d186d898a65a96a82e31cc208c6}{00161}}         \textcolor{keywordtype}{int}              \mbox{\hyperlink{structg__gate__ctl__io_aea790d186d898a65a96a82e31cc208c6}{gctl\_error}};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00162}00162 \};}
\DoxyCodeLine{\Hypertarget{g__gate_8h_source_l00163}00163 \textcolor{preprocessor}{\#endif  }\textcolor{comment}{/* !\_G\_GATE\_H\_ */}\textcolor{preprocessor}{}}

\end{DoxyCode}
