\hypertarget{ng__sscfu__cust_8h}{}\doxysection{netgraph/atm/sscfu/ng\+\_\+sscfu\+\_\+cust.h File Reference}
\label{ng__sscfu__cust_8h}\index{netgraph/atm/sscfu/ng\_sscfu\_cust.h@{netgraph/atm/sscfu/ng\_sscfu\_cust.h}}
{\ttfamily \#include $<$sys/param.\+h$>$}\newline
{\ttfamily \#include $<$sys/types.\+h$>$}\newline
{\ttfamily \#include $<$sys/kernel.\+h$>$}\newline
{\ttfamily \#include $<$sys/mbuf.\+h$>$}\newline
{\ttfamily \#include $<$sys/queue.\+h$>$}\newline
{\ttfamily \#include $<$sys/callout.\+h$>$}\newline
{\ttfamily \#include $<$sys/systm.\+h$>$}\newline
{\ttfamily \#include $<$sys/malloc.\+h$>$}\newline
{\ttfamily \#include $<$machine/stdarg.\+h$>$}\newline
Include dependency graph for ng\+\_\+sscfu\+\_\+cust.\+h\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=350pt]{df/dbe/ng__sscfu__cust_8h__incl}
\end{center}
\end{figure}
This graph shows which files directly or indirectly include this file\+:
\nopagebreak
\begin{figure}[H]
\begin{center}
\leavevmode
\includegraphics[width=191pt]{df/d1f/ng__sscfu__cust_8h__dep__incl}
\end{center}
\end{figure}
\doxysubsection*{Macros}
\begin{DoxyCompactItemize}
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a9ddd10677b035372ea1626da4ce087a9}{MEMINIT}}()
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a3c5477b8d5e8d61c6a13515f962567fe}{MEMZALLOC}}(PTR,  CAST,  SIZE)~ ((PTR) = (CAST)malloc((SIZE), M\+\_\+\+NG\+\_\+\+SSCFU, M\+\_\+\+NOWAIT $\vert$ M\+\_\+\+ZERO))
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a4193724e929ce8f1a465b57514539a36}{MEMFREE}}(PTR)~ free(PTR, M\+\_\+\+NG\+\_\+\+SSCFU)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_ab364d9d2ccada607e29366b8ebd48dbf}{SIG\+\_\+\+ALLOC}}(PTR)~ \mbox{\hyperlink{ng__sscop__cust_8h_a3c5477b8d5e8d61c6a13515f962567fe}{MEMZALLOC}}(PTR, struct sscfu\+\_\+sig $\ast$, sizeof(struct sscfu\+\_\+sig))
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_ac5d1f55ca2713b342b01ec7b00dd2ff6}{SIG\+\_\+\+FREE}}(PTR)~ \mbox{\hyperlink{ng__sscop__cust_8h_a4193724e929ce8f1a465b57514539a36}{MEMFREE}}(PTR)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a8bb8601f916b285bf5853dfce6a8d24d}{SIGQ\+\_\+\+INIT}}(Q)~TAILQ\+\_\+\+INIT(Q)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a8f2dd00689c7313cf67c035c51a6d931}{SIGQ\+\_\+\+APPEND}}(Q,  S)~TAILQ\+\_\+\+INSERT\+\_\+\+TAIL(Q, S, link)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a0c677311751a52be5226963987b5b291}{SIGQ\+\_\+\+GET}}(Q)~ng\+\_\+sscfu\+\_\+sigq\+\_\+get((Q))
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_ae81ac1ccd94189025c05d9261e304eb2}{DECL\+\_\+\+SIGQ\+\_\+\+GET}}
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a55553ce2b6001bfa72022e65f823e5bf}{SIGQ\+\_\+\+CLEAR}}(Q)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a6a03b775059ecbe71d434d3bb703831a}{MBUF\+\_\+\+FREE}}(M)~m\+\_\+freem(M)
\item 
\#define \mbox{\hyperlink{ng__sscfu__cust_8h_a288eab360688b79d982f3404ebac0989}{ASSERT}}(S)
\end{DoxyCompactItemize}
\doxysubsection*{Functions}
\begin{DoxyCompactItemize}
\item 
typedef \mbox{\hyperlink{ng__sscfu__cust_8h_ac5a7e36396cff6390cabb077c1f72946}{TAILQ\+\_\+\+ENTRY}} (sscfu\+\_\+sig) sscfu\+\_\+sigq\+\_\+link\+\_\+t
\item 
typedef \mbox{\hyperlink{ng__sscfu__cust_8h_a5b4f81dc58372defede121a42cfd89c8}{TAILQ\+\_\+\+HEAD}} (sscfu\+\_\+sigq, sscfu\+\_\+sig) sscfu\+\_\+sigq\+\_\+head\+\_\+t
\end{DoxyCompactItemize}


\doxysubsection{Macro Definition Documentation}
\mbox{\Hypertarget{ng__sscfu__cust_8h_a288eab360688b79d982f3404ebac0989}\label{ng__sscfu__cust_8h_a288eab360688b79d982f3404ebac0989}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!ASSERT@{ASSERT}}
\index{ASSERT@{ASSERT}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{ASSERT}{ASSERT}}
{\footnotesize\ttfamily \#define ASSERT(\begin{DoxyParamCaption}\item[{}]{S }\end{DoxyParamCaption})}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00130}{130}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_ae81ac1ccd94189025c05d9261e304eb2}\label{ng__sscfu__cust_8h_ae81ac1ccd94189025c05d9261e304eb2}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!DECL\_SIGQ\_GET@{DECL\_SIGQ\_GET}}
\index{DECL\_SIGQ\_GET@{DECL\_SIGQ\_GET}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{DECL\_SIGQ\_GET}{DECL\_SIGQ\_GET}}
{\footnotesize\ttfamily \#define DECL\+\_\+\+SIGQ\+\_\+\+GET}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{\textcolor{keyword}{static} \_\_inline \textcolor{keyword}{struct }sscfu\_sig *                                      \(\backslash\)}
\DoxyCodeLine{ng\_sscfu\_sigq\_get(\textcolor{keyword}{struct} sscfu\_sigq *q)                                 \(\backslash\)}
\DoxyCodeLine{\{                                                                       \(\backslash\)}
\DoxyCodeLine{        struct sscfu\_sig *s;                                            \(\backslash\)}
\DoxyCodeLine{                                                                        \(\backslash\)}
\DoxyCodeLine{        s = TAILQ\_FIRST(q);                                             \(\backslash\)}
\DoxyCodeLine{        if (s != NULL)                                                  \(\backslash\)}
\DoxyCodeLine{                TAILQ\_REMOVE(q, s, link);                               \(\backslash\)}
\DoxyCodeLine{        return (s);                                                     \(\backslash\)}
\DoxyCodeLine{\}}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00095}{95}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a6a03b775059ecbe71d434d3bb703831a}\label{ng__sscfu__cust_8h_a6a03b775059ecbe71d434d3bb703831a}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!MBUF\_FREE@{MBUF\_FREE}}
\index{MBUF\_FREE@{MBUF\_FREE}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{MBUF\_FREE}{MBUF\_FREE}}
{\footnotesize\ttfamily \#define MBUF\+\_\+\+FREE(\begin{DoxyParamCaption}\item[{}]{M }\end{DoxyParamCaption})~m\+\_\+freem(M)}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00125}{125}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a4193724e929ce8f1a465b57514539a36}\label{ng__sscfu__cust_8h_a4193724e929ce8f1a465b57514539a36}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!MEMFREE@{MEMFREE}}
\index{MEMFREE@{MEMFREE}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{MEMFREE}{MEMFREE}}
{\footnotesize\ttfamily \#define MEMFREE(\begin{DoxyParamCaption}\item[{}]{PTR }\end{DoxyParamCaption})~ free(PTR, M\+\_\+\+NG\+\_\+\+SSCFU)}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00057}{57}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a9ddd10677b035372ea1626da4ce087a9}\label{ng__sscfu__cust_8h_a9ddd10677b035372ea1626da4ce087a9}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!MEMINIT@{MEMINIT}}
\index{MEMINIT@{MEMINIT}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{MEMINIT}{MEMINIT}}
{\footnotesize\ttfamily \#define MEMINIT(\begin{DoxyParamCaption}{ }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{        \mbox{\hyperlink{ng__ccatm__cust_8h_ab871bfef65204a3de4369dffe222b022}{MALLOC\_DECLARE}}(M\_NG\_SSCFU); \(\backslash\)}
\DoxyCodeLine{        DECL\_SIGQ\_GET}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00051}{51}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a3c5477b8d5e8d61c6a13515f962567fe}\label{ng__sscfu__cust_8h_a3c5477b8d5e8d61c6a13515f962567fe}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!MEMZALLOC@{MEMZALLOC}}
\index{MEMZALLOC@{MEMZALLOC}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{MEMZALLOC}{MEMZALLOC}}
{\footnotesize\ttfamily \#define MEMZALLOC(\begin{DoxyParamCaption}\item[{}]{PTR,  }\item[{}]{CAST,  }\item[{}]{SIZE }\end{DoxyParamCaption})~ ((PTR) = (CAST)malloc((SIZE), M\+\_\+\+NG\+\_\+\+SSCFU, M\+\_\+\+NOWAIT $\vert$ M\+\_\+\+ZERO))}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00055}{55}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_ab364d9d2ccada607e29366b8ebd48dbf}\label{ng__sscfu__cust_8h_ab364d9d2ccada607e29366b8ebd48dbf}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIG\_ALLOC@{SIG\_ALLOC}}
\index{SIG\_ALLOC@{SIG\_ALLOC}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIG\_ALLOC}{SIG\_ALLOC}}
{\footnotesize\ttfamily \#define SIG\+\_\+\+ALLOC(\begin{DoxyParamCaption}\item[{}]{PTR }\end{DoxyParamCaption})~ \mbox{\hyperlink{ng__sscop__cust_8h_a3c5477b8d5e8d61c6a13515f962567fe}{MEMZALLOC}}(PTR, struct sscfu\+\_\+sig $\ast$, sizeof(struct sscfu\+\_\+sig))}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00060}{60}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_ac5d1f55ca2713b342b01ec7b00dd2ff6}\label{ng__sscfu__cust_8h_ac5d1f55ca2713b342b01ec7b00dd2ff6}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIG\_FREE@{SIG\_FREE}}
\index{SIG\_FREE@{SIG\_FREE}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIG\_FREE}{SIG\_FREE}}
{\footnotesize\ttfamily \#define SIG\+\_\+\+FREE(\begin{DoxyParamCaption}\item[{}]{PTR }\end{DoxyParamCaption})~ \mbox{\hyperlink{ng__sscop__cust_8h_a4193724e929ce8f1a465b57514539a36}{MEMFREE}}(PTR)}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00062}{62}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a8f2dd00689c7313cf67c035c51a6d931}\label{ng__sscfu__cust_8h_a8f2dd00689c7313cf67c035c51a6d931}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIGQ\_APPEND@{SIGQ\_APPEND}}
\index{SIGQ\_APPEND@{SIGQ\_APPEND}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIGQ\_APPEND}{SIGQ\_APPEND}}
{\footnotesize\ttfamily \#define SIGQ\+\_\+\+APPEND(\begin{DoxyParamCaption}\item[{}]{Q,  }\item[{}]{S }\end{DoxyParamCaption})~TAILQ\+\_\+\+INSERT\+\_\+\+TAIL(Q, S, link)}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00091}{91}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a55553ce2b6001bfa72022e65f823e5bf}\label{ng__sscfu__cust_8h_a55553ce2b6001bfa72022e65f823e5bf}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIGQ\_CLEAR@{SIGQ\_CLEAR}}
\index{SIGQ\_CLEAR@{SIGQ\_CLEAR}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIGQ\_CLEAR}{SIGQ\_CLEAR}}
{\footnotesize\ttfamily \#define SIGQ\+\_\+\+CLEAR(\begin{DoxyParamCaption}\item[{}]{Q }\end{DoxyParamCaption})}

{\bfseries Value\+:}
\begin{DoxyCode}{0}
\DoxyCodeLine{    \textcolor{keywordflow}{do} \{                                                                \(\backslash\)}
\DoxyCodeLine{        struct sscfu\_sig *\_s1, *\_s2;                                    \(\backslash\)}
\DoxyCodeLine{                                                                        \(\backslash\)}
\DoxyCodeLine{        \_s1 = TAILQ\_FIRST(Q);                                           \(\backslash\)}
\DoxyCodeLine{        while (\_s1 != NULL) \{                                           \(\backslash\)}
\DoxyCodeLine{                \_s2 = TAILQ\_NEXT(\_s1, link);                            \(\backslash\)}
\DoxyCodeLine{                if (\_s1-\/>m)                                             \(\backslash\)}
\DoxyCodeLine{                        MBUF\_FREE(\_s1-\/>m);                              \(\backslash\)}
\DoxyCodeLine{                SIG\_FREE(\_s1);                                          \(\backslash\)}
\DoxyCodeLine{                \_s1 = \_s2;                                              \(\backslash\)}
\DoxyCodeLine{        \}                                                               \(\backslash\)}
\DoxyCodeLine{        TAILQ\_INIT(Q);                                                  \(\backslash\)}
\DoxyCodeLine{    \} \textcolor{keywordflow}{while} (0)}

\end{DoxyCode}


Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00107}{107}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a0c677311751a52be5226963987b5b291}\label{ng__sscfu__cust_8h_a0c677311751a52be5226963987b5b291}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIGQ\_GET@{SIGQ\_GET}}
\index{SIGQ\_GET@{SIGQ\_GET}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIGQ\_GET}{SIGQ\_GET}}
{\footnotesize\ttfamily \#define SIGQ\+\_\+\+GET(\begin{DoxyParamCaption}\item[{}]{Q }\end{DoxyParamCaption})~ng\+\_\+sscfu\+\_\+sigq\+\_\+get((Q))}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00093}{93}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.

\mbox{\Hypertarget{ng__sscfu__cust_8h_a8bb8601f916b285bf5853dfce6a8d24d}\label{ng__sscfu__cust_8h_a8bb8601f916b285bf5853dfce6a8d24d}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!SIGQ\_INIT@{SIGQ\_INIT}}
\index{SIGQ\_INIT@{SIGQ\_INIT}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{SIGQ\_INIT}{SIGQ\_INIT}}
{\footnotesize\ttfamily \#define SIGQ\+\_\+\+INIT(\begin{DoxyParamCaption}\item[{}]{Q }\end{DoxyParamCaption})~TAILQ\+\_\+\+INIT(Q)}



Definition at line \mbox{\hyperlink{ng__sscfu__cust_8h_source_l00090}{90}} of file \mbox{\hyperlink{ng__sscfu__cust_8h_source}{ng\+\_\+sscfu\+\_\+cust.\+h}}.



\doxysubsection{Function Documentation}
\mbox{\Hypertarget{ng__sscfu__cust_8h_ac5a7e36396cff6390cabb077c1f72946}\label{ng__sscfu__cust_8h_ac5a7e36396cff6390cabb077c1f72946}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!TAILQ\_ENTRY@{TAILQ\_ENTRY}}
\index{TAILQ\_ENTRY@{TAILQ\_ENTRY}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{TAILQ\_ENTRY()}{TAILQ\_ENTRY()}}
{\footnotesize\ttfamily typedef TAILQ\+\_\+\+ENTRY (\begin{DoxyParamCaption}\item[{sscfu\+\_\+sig}]{ }\end{DoxyParamCaption})}

\mbox{\Hypertarget{ng__sscfu__cust_8h_a5b4f81dc58372defede121a42cfd89c8}\label{ng__sscfu__cust_8h_a5b4f81dc58372defede121a42cfd89c8}} 
\index{ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}!TAILQ\_HEAD@{TAILQ\_HEAD}}
\index{TAILQ\_HEAD@{TAILQ\_HEAD}!ng\_sscfu\_cust.h@{ng\_sscfu\_cust.h}}
\doxysubsubsection{\texorpdfstring{TAILQ\_HEAD()}{TAILQ\_HEAD()}}
{\footnotesize\ttfamily typedef TAILQ\+\_\+\+HEAD (\begin{DoxyParamCaption}\item[{sscfu\+\_\+sigq}]{,  }\item[{sscfu\+\_\+sig}]{ }\end{DoxyParamCaption})}

