|
|
@ -89,7 +89,7 @@ uint8_t tv_aof = THV_RESTART_THREAD;
|
|
|
|
* \retval 1 flag is set.
|
|
|
|
* \retval 1 flag is set.
|
|
|
|
* \retval 0 flag is not set.
|
|
|
|
* \retval 0 flag is not set.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
int TmThreadsCheckFlag(ThreadVars *tv, uint8_t flag)
|
|
|
|
int TmThreadsCheckFlag(ThreadVars *tv, uint16_t flag)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
return (SC_ATOMIC_GET(tv->flags) & flag) ? 1 : 0;
|
|
|
|
return (SC_ATOMIC_GET(tv->flags) & flag) ? 1 : 0;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -97,7 +97,7 @@ int TmThreadsCheckFlag(ThreadVars *tv, uint8_t flag)
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* \brief Set a thread flag.
|
|
|
|
* \brief Set a thread flag.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TmThreadsSetFlag(ThreadVars *tv, uint8_t flag)
|
|
|
|
void TmThreadsSetFlag(ThreadVars *tv, uint16_t flag)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SC_ATOMIC_OR(tv->flags, flag);
|
|
|
|
SC_ATOMIC_OR(tv->flags, flag);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -105,7 +105,7 @@ void TmThreadsSetFlag(ThreadVars *tv, uint8_t flag)
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* \brief Unset a thread flag.
|
|
|
|
* \brief Unset a thread flag.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TmThreadsUnsetFlag(ThreadVars *tv, uint8_t flag)
|
|
|
|
void TmThreadsUnsetFlag(ThreadVars *tv, uint16_t flag)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SC_ATOMIC_AND(tv->flags, ~flag);
|
|
|
|
SC_ATOMIC_AND(tv->flags, ~flag);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -160,7 +160,11 @@ void *TmThreadsSlot1NoIn(void *td)
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
while (run) {
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
|
|
|
|
|
|
|
|
r = SlotFunc(tv, NULL, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, &s->slot_post_pq);
|
|
|
|
r = SlotFunc(tv, NULL, SC_ATOMIC_GET(s->slot_data), &s->slot_pre_pq, &s->slot_post_pq);
|
|
|
@ -262,7 +266,11 @@ void *TmThreadsSlot1NoOut(void *td)
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
while (run) {
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
|
|
|
|
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
@ -348,7 +356,11 @@ void *TmThreadsSlot1NoInOut(void *td)
|
|
|
|
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
while (run) {
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
TmSlotFunc SlotFunc = SC_ATOMIC_GET(s->SlotFunc);
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
r = SlotFunc(tv, NULL, SC_ATOMIC_GET(s->slot_data), /* no outqh, no pq */NULL, NULL);
|
|
|
|
r = SlotFunc(tv, NULL, SC_ATOMIC_GET(s->slot_data), /* no outqh, no pq */NULL, NULL);
|
|
|
|
|
|
|
|
|
|
|
@ -428,7 +440,11 @@ void *TmThreadsSlot1(void *td)
|
|
|
|
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
while (run) {
|
|
|
|
while (run) {
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* input a packet */
|
|
|
|
/* input a packet */
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
@ -657,7 +673,11 @@ void *TmThreadsSlotPktAcqLoop(void *td) {
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
TmThreadsSetFlag(tv, THV_INIT_DONE);
|
|
|
|
|
|
|
|
|
|
|
|
while(run) {
|
|
|
|
while(run) {
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
r = s->PktAcqLoop(tv, SC_ATOMIC_GET(s->slot_data), s);
|
|
|
|
r = s->PktAcqLoop(tv, SC_ATOMIC_GET(s->slot_data), s);
|
|
|
|
|
|
|
|
|
|
|
@ -755,7 +775,11 @@ void *TmThreadsSlotVar(void *td)
|
|
|
|
s = (TmSlot *)tv->tm_slots;
|
|
|
|
s = (TmSlot *)tv->tm_slots;
|
|
|
|
|
|
|
|
|
|
|
|
while (run) {
|
|
|
|
while (run) {
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
if (TmThreadsCheckFlag(tv, THV_PAUSE)) {
|
|
|
|
|
|
|
|
TmThreadsSetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
TmThreadTestThreadUnPaused(tv);
|
|
|
|
|
|
|
|
TmThreadsUnsetFlag(tv, THV_PAUSED);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/* input a packet */
|
|
|
|
/* input a packet */
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
|
p = tv->tmqh_in(tv);
|
|
|
@ -1954,7 +1978,7 @@ void TmThreadTestThreadUnPaused(ThreadVars *tv)
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* \param tv Pointer to the TV instance.
|
|
|
|
* \param tv Pointer to the TV instance.
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void TmThreadWaitForFlag(ThreadVars *tv, uint8_t flags)
|
|
|
|
void TmThreadWaitForFlag(ThreadVars *tv, uint16_t flags)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
while (!TmThreadsCheckFlag(tv, flags)) {
|
|
|
|
while (!TmThreadsCheckFlag(tv, flags)) {
|
|
|
|
usleep(100);
|
|
|
|
usleep(100);
|
|
|
|