Go to the documentation of this file.
68 if (fqc->
top == NULL) {
83 if (f->
next == NULL) {
94 if (dest->
bot == NULL) {
103 src->top =
src->bot = NULL;
107 static inline void FlowQueueAtomicSetNonEmpty(
FlowQueue *fq)
113 static inline void FlowQueueAtomicSetEmpty(
FlowQueue *fq)
122 if (fqc->
top == NULL)
126 if (fq->qbot == NULL) {
131 fq->qbot->next = fqc->
top;
133 fq->qlen += fqc->
len;
135 FlowQueueAtomicSetNonEmpty(fq);
137 fqc->
top = fqc->
bot = NULL;
145 fq->qtop = fq->qbot = NULL;
147 FlowQueueAtomicSetEmpty(fq);
162 if (fqc->
top == NULL) {
177 BUG_ON(q == NULL || f == NULL);
181 FlowQueueAtomicSetNonEmpty(q);
197 FlowQueueAtomicSetEmpty(q);
#define SC_ATOMIC_SET(name, val)
Set the value for the atomic variable.
void FlowQueueDestroy(FlowQueue *q)
Destroy a flow queue.
void FlowQueuePrivatePrependFlow(FlowQueuePrivate *fqc, Flow *f)
void FlowEnqueue(FlowQueue *q, Flow *f)
add a flow to a queue
#define FQLOCK_DESTROY(q)
FlowQueue * FlowQueueInit(FlowQueue *q)
Flow * FlowQueuePrivateGetFromTop(FlowQueuePrivate *fqc)
void FlowQueueAppendPrivate(FlowQueue *fq, FlowQueuePrivate *fqc)
void FlowQueuePrivateAppendPrivate(FlowQueuePrivate *dest, FlowQueuePrivate *src)
Flow * FlowDequeue(FlowQueue *q)
remove a flow from the queue
FlowQueuePrivate FlowQueueExtractPrivate(FlowQueue *fq)
#define SCLogError(err_code,...)
Macro used to log ERROR messages.
FlowQueue * FlowQueueNew()
#define SC_ATOMIC_GET(name)
Get the value from the atomic variable.
void FlowQueuePrivateAppendFlow(FlowQueuePrivate *fqc, Flow *f)