From: Alan T. DeKok Date: Mon, 1 May 2017 15:00:17 +0000 (-0400) Subject: move fr_dlist_remove to static inline X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7ab224dc589296ea97c4f3fb7ded97b672e870f2;p=thirdparty%2Ffreeradius-server.git move fr_dlist_remove to static inline --- diff --git a/src/lib/io/time.c b/src/lib/io/time.c index 7875e1759c6..451661c0ef4 100644 --- a/src/lib/io/time.c +++ b/src/lib/io/time.c @@ -237,7 +237,7 @@ void fr_time_tracking_resume(fr_time_tracking_t *tt, fr_time_t when) * Remove this request into the workers list of waiting * requests. */ - FR_DLIST_REMOVE(tt->list); + fr_dlist_remove(&tt->list); } diff --git a/src/lib/io/time.h b/src/lib/io/time.h index cca5ef30fc9..9ae4846d368 100644 --- a/src/lib/io/time.h +++ b/src/lib/io/time.h @@ -79,7 +79,7 @@ typedef struct fr_time_tracking_t { #define USEC (1000000) /* - * Macros to manage a doubly linked list. + * Functions to manage a doubly linked list. */ #define FR_DLIST_INIT(head) do { head.prev = head.next = &head; } while (0) static inline void fr_dlist_insert_head(fr_dlist_t *head, fr_dlist_t *entry) @@ -98,7 +98,13 @@ static inline void fr_dlist_insert_tail(fr_dlist_t *head, fr_dlist_t *entry) head->prev = entry; } -#define FR_DLIST_REMOVE(entry) do { entry.prev->next = entry.next; entry.next->prev = entry.prev; FR_DLIST_INIT(entry); } while (0) +static inline void fr_dlist_remove(fr_dlist_t *entry) +{ + entry->prev->next = entry->next; + entry->next->prev = entry->prev; + entry->prev = entry->next = entry; +} + #define FR_DLIST_FIRST(head) (head.next == &head) ? NULL : head.next #define FR_DLIST_NEXT(head, p_entry) (p_entry->next == &head) ? NULL : p_entry->next #define FR_DLIST_TAIL(head) (head.prev == &head) ? NULL : head.prev diff --git a/src/lib/io/worker.c b/src/lib/io/worker.c index bd792e1c8d3..ee864dff65f 100644 --- a/src/lib/io/worker.c +++ b/src/lib/io/worker.c @@ -144,12 +144,12 @@ struct fr_worker_t { #define WORKER_HEAP_POP(_name, _var, _member) do { \ _var = fr_heap_pop(worker->_name.heap); \ - if (_var) FR_DLIST_REMOVE(_var->_member); \ + if (_var) fr_dlist_remove(&_var->_member); \ } while (0) #define WORKER_HEAP_EXTRACT(_name, _var, _member) do { \ (void) fr_heap_extract(worker->_name.heap, _var); \ - FR_DLIST_REMOVE(_var->_member); \ + fr_dlist_remove(&_var->_member); \ } while (0) @@ -471,7 +471,7 @@ static void fr_worker_send_reply(fr_worker_t *worker, REQUEST *request, size_t s * @todo Use a talloc pool for the request. Clean it up, * and insert it back into a slab allocator. */ - FR_DLIST_REMOVE(request->time_order); + fr_dlist_remove(&request->time_order); talloc_free(request); } @@ -561,7 +561,7 @@ static void fr_worker_check_timeouts(fr_worker_t *worker, fr_time_t now) /* * Waiting too long, delete it. */ - FR_DLIST_REMOVE(request->time_order); + fr_dlist_remove(&request->time_order); (void) fr_heap_extract(worker->runnable, request); final = request->process_async(request, FR_TRANSPORT_ACTION_DONE); @@ -593,7 +593,7 @@ static void fr_worker_check_timeouts(fr_worker_t *worker, fr_time_t now) final = request->process_async(request, FR_TRANSPORT_ACTION_DONE); if (final == FR_TRANSPORT_DONE) { - FR_DLIST_REMOVE(worker->waiting_to_die); + fr_dlist_remove(&worker->waiting_to_die); fr_log(worker->log, L_DBG, "(%zd) finally finished", request->number); @@ -812,7 +812,7 @@ static void fr_worker_run_request(fr_worker_t *worker, REQUEST *request) * async cleanup queue. */ if (final != FR_TRANSPORT_DONE) { - FR_DLIST_REMOVE(request->time_order); + fr_dlist_remove(&request->time_order); fr_dlist_insert_tail(&worker->waiting_to_die, &request->time_order); return; } @@ -1188,7 +1188,7 @@ void worker_resume_request(REQUEST *request) * it isn't resumed (yet) so we don't add CPU time for * it. */ - FR_DLIST_REMOVE(request->tracking.list); + fr_dlist_remove(&request->tracking.list); /* * It's runnable again.