Hopefully the compiler should inline it.
* Insert this request into the TAIL of the worker's list
* of waiting requests.
*/
- FR_DLIST_INSERT_HEAD(worker->list, tt->list);
+ fr_dlist_insert_head(&worker->list, &tt->list);
}
* Macros to manage a doubly linked list.
*/
#define FR_DLIST_INIT(head) do { head.prev = head.next = &head; } while (0)
-#define FR_DLIST_INSERT_HEAD(head, entry) do { entry.next = head.next; entry.prev = &head; head.next->prev = &entry; head.next = &entry; } while (0)
-#define FR_DLIST_INSERT_HEAD_PTR(head, entry) do { entry.next = head->next; entry.prev = head; head->next->prev = &entry; head->next = &entry; } while (0)
+static inline void fr_dlist_insert_head(fr_dlist_t *head, fr_dlist_t *entry)
+{
+ entry->prev = head;
+ entry->next = head->next;
+ head->next->prev = entry;
+ head->next = entry;
+}
+
#define FR_DLIST_INSERT_TAIL(head, entry) do { entry.prev = head.prev; entry.next = &head; head.prev->next = &entry; head.prev = &entry; } while (0)
#define FR_DLIST_INSERT_TAIL_PTR(p_head, entry) do { entry.prev = p_head->prev; entry.next = p_head; p_head->prev->next = &entry; p_head->prev = &entry; } while (0)
#define FR_DLIST_REMOVE(entry) do { entry.prev->next = entry.next; entry.next->prev = entry.prev; FR_DLIST_INIT(entry); } while (0)
} while (0)
#define WORKER_HEAP_INSERT(_name, _var, _member) do { \
- FR_DLIST_INSERT_HEAD(worker->_name.list, _var->_member); \
+ fr_dlist_insert_head(&worker->_name.list, &_var->_member); \
(void) fr_heap_insert(worker->_name.heap, _var); \
} while (0)
*/
entry = FR_DLIST_FIRST(worker->time_order);
if (!entry) {
- FR_DLIST_INSERT_HEAD(worker->time_order, request->time_order);
+ fr_dlist_insert_head(&worker->time_order, &request->time_order);
} else {
REQUEST *old;
fr_dlist_t *prev = &worker->time_order;
entry = FR_DLIST_NEXT(worker->time_order, entry);
}
- FR_DLIST_INSERT_HEAD_PTR(prev, request->time_order);
+ fr_dlist_insert_head(prev, &request->time_order);
}
/*