MINOR: applets: Use a bitfield to track applets activity per-thread
a bitfield has been added to know if there are runnable applets for a
thread. When an applet is woken up, the bits corresponding to its thread_mask
are set. When all active applets for a thread is get to be processed, the thread
is removed from active ones by unsetting its tid_bit from the bitfield.
diff --git a/src/applet.c b/src/applet.c
index 1df6b09..e24f66d 100644
--- a/src/applet.c
+++ b/src/applet.c
@@ -21,6 +21,7 @@
#include <proto/stream_interface.h>
unsigned int nb_applets = 0;
+unsigned long active_applets_mask = 0;
unsigned int applets_active_queue = 0;
__decl_hathreads(HA_SPINLOCK_T applet_active_lock); /* spin lock related to applet active queue */
@@ -48,7 +49,7 @@
}
curr = next;
}
-
+ active_applets_mask &= ~tid_bit;
HA_SPIN_UNLOCK(APPLETS_LOCK, &applet_active_lock);
/* The list is only scanned from the head. This guarantees that if any