+static inline void
+mfib_signal_lock_aquire (void)
+{
+ while (clib_atomic_test_and_set (&mfib_signal_pending.mip_lock))
+ ;
+}
+
+static inline void
+mfib_signal_lock_release (void)
+{
+ clib_atomic_release(&mfib_signal_pending.mip_lock);
+}
+
+#define MFIB_SIGNAL_CRITICAL_SECTION(_body) \
+{ \
+ mfib_signal_lock_aquire(); \
+ do { \
+ _body; \
+ } while (0); \
+ mfib_signal_lock_release(); \
+}
+