From: Jim Jagielski Date: Fri, 1 Mar 2013 15:24:05 +0000 (+0000) Subject: 1st phase of moving into httpd "core" X-Git-Tag: 2.5.0-alpha~5722 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=18ad4754d869881874afb3ea2ad5e56ae0a2c0db;p=apache 1st phase of moving into httpd "core" git-svn-id: https://svn.apache.org/repos/asf/httpd/httpd/trunk@1451616 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/server/mpm/eventopt/eventopt.c b/server/mpm/eventopt/eventopt.c index 9765d79b57..8e070bd51c 100644 --- a/server/mpm/eventopt/eventopt.c +++ b/server/mpm/eventopt/eventopt.c @@ -1345,7 +1345,7 @@ static void get_worker(int *have_idle_worker_p, int blocking, int *all_busy) /* Structures to reuse */ static APR_RING_HEAD(timer_free_ring_t, timer_event_t) timer_free_ring; -static Skiplist *timer_skiplist; +static ap_skiplist *timer_skiplist; static int indexing_comp(void *a, void *b) { @@ -1379,7 +1379,7 @@ static apr_status_t event_register_timed_callback(apr_time_t t, APR_RING_REMOVE(te, link); } else { - te = skiplist_alloc(timer_skiplist, sizeof(timer_event_t)); + te = ap_skiplist_alloc(timer_skiplist, sizeof(timer_event_t)); APR_RING_ELEM_INIT(te, link); } @@ -1389,7 +1389,7 @@ static apr_status_t event_register_timed_callback(apr_time_t t, te->when = t + apr_time_now(); /* Okay, insert sorted by when.. */ - skiplist_insert(timer_skiplist, (void *)te); + ap_skiplist_insert(timer_skiplist, (void *)te); apr_thread_mutex_unlock(g_timer_skiplist_mtx); @@ -1553,7 +1553,7 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) } apr_thread_mutex_lock(g_timer_skiplist_mtx); - te = skiplist_peek(timer_skiplist); + te = ap_skiplist_peek(timer_skiplist); if (te) { if (te->when > now) { timeout_interval = te->when - now; @@ -1592,16 +1592,16 @@ static void * APR_THREAD_FUNC listener_thread(apr_thread_t * thd, void *dummy) now = apr_time_now() + EVENT_FUDGE_FACTOR; apr_thread_mutex_lock(g_timer_skiplist_mtx); - ep = skiplist_peek(timer_skiplist); + ep = ap_skiplist_peek(timer_skiplist); while (ep) { if (ep->when < now) { - skiplist_pop(timer_skiplist, NULL); + ap_skiplist_pop(timer_skiplist, NULL); push_timer2worker(ep); } else { break; } - ep = skiplist_peek(timer_skiplist); + ep = ap_skiplist_peek(timer_skiplist); } apr_thread_mutex_unlock(g_timer_skiplist_mtx); @@ -2257,8 +2257,8 @@ static void child_main(int child_num_arg) apr_thread_mutex_create(&g_timer_skiplist_mtx, APR_THREAD_MUTEX_DEFAULT, pchild); APR_RING_INIT(&timer_free_ring, timer_event_t, link); - skiplist_init(&timer_skiplist, pchild); - skiplist_set_compare(timer_skiplist, indexing_comp, indexing_compk); + ap_skiplist_init(&timer_skiplist, pchild); + ap_skiplist_set_compare(timer_skiplist, indexing_comp, indexing_compk); ap_run_child_init(pchild, ap_server_conf); /* done with init critical section */ diff --git a/server/mpm/eventopt/skiplist.c b/server/mpm/eventopt/skiplist.c index 6909b9feb8..c6a8067a19 100644 --- a/server/mpm/eventopt/skiplist.c +++ b/server/mpm/eventopt/skiplist.c @@ -41,7 +41,7 @@ static int get_b_rand(void) return ((randseq & (1 << (ph - 1))) >> (ph - 1)); } -void *skiplist_alloc(Skiplist *sl, size_t size) +void *ap_skiplist_alloc(ap_skiplist *sl, size_t size) { if (sl->pool) { return apr_pcalloc(sl->pool, size); @@ -51,25 +51,25 @@ void *skiplist_alloc(Skiplist *sl, size_t size) } } -void skiplist_free(Skiplist *sl, void *mem) +void ap_skiplist_free(ap_skiplist *sl, void *mem) { if (!sl->pool) { free(mem); } } -static apr_status_t skiplisti_init(Skiplist **s, apr_pool_t *p) +static apr_status_t skiplisti_init(ap_skiplist **s, apr_pool_t *p) { - Skiplist *sl; + ap_skiplist *sl; if (p) { - sl = apr_pcalloc(p, sizeof(Skiplist)); + sl = apr_pcalloc(p, sizeof(ap_skiplist)); } else { - sl = ap_calloc(1, sizeof(Skiplist)); + sl = ap_calloc(1, sizeof(ap_skiplist)); } #if 0 - sl->compare = (SkiplistComparator) NULL; - sl->comparek = (SkiplistComparator) NULL; + sl->compare = (ap_skiplist_compare) NULL; + sl->comparek = (ap_skiplist_compare) NULL; sl->height = 0; sl->preheight = 0; sl->size = 0; @@ -84,8 +84,8 @@ static apr_status_t skiplisti_init(Skiplist **s, apr_pool_t *p) static int indexing_comp(void *a, void *b) { - void *ac = (void *) (((Skiplist *) a)->compare); - void *bc = (void *) (((Skiplist *) b)->compare); + void *ac = (void *) (((ap_skiplist *) a)->compare); + void *bc = (void *) (((ap_skiplist *) b)->compare); AP_DEBUG_ASSERT(a); AP_DEBUG_ASSERT(b); return ((ac < bc) ? -1 : ((ac > bc) ? 1 : 0)); @@ -93,27 +93,27 @@ static int indexing_comp(void *a, void *b) static int indexing_compk(void *ac, void *b) { - void *bc = (void *) (((Skiplist *) b)->compare); + void *bc = (void *) (((ap_skiplist *) b)->compare); AP_DEBUG_ASSERT(b); return ((ac < bc) ? -1 : ((ac > bc) ? 1 : 0)); } -apr_status_t skiplist_init(Skiplist **s, apr_pool_t *p) +apr_status_t ap_skiplist_init(ap_skiplist **s, apr_pool_t *p) { - Skiplist *sl; + ap_skiplist *sl; skiplisti_init(s, p); sl = *s; skiplisti_init(&(sl->index), p); - skiplist_set_compare(sl->index, indexing_comp, indexing_compk); + ap_skiplist_set_compare(sl->index, indexing_comp, indexing_compk); return APR_SUCCESS; } -void skiplist_set_compare(Skiplist *sl, - SkiplistComparator comp, - SkiplistComparator compk) +void ap_skiplist_set_compare(ap_skiplist *sl, + ap_skiplist_compare comp, + ap_skiplist_compare compk) { if (sl->compare && sl->comparek) { - skiplist_add_index(sl, comp, compk); + ap_skiplist_add_index(sl, comp, compk); } else { sl->compare = comp; @@ -121,29 +121,29 @@ void skiplist_set_compare(Skiplist *sl, } } -void skiplist_add_index(Skiplist *sl, - SkiplistComparator comp, - SkiplistComparator compk) +void ap_skiplist_add_index(ap_skiplist *sl, + ap_skiplist_compare comp, + ap_skiplist_compare compk) { - skiplistnode *m; - Skiplist *ni; + ap_skiplistnode *m; + ap_skiplist *ni; int icount = 0; - skiplist_find(sl->index, (void *)comp, &m); + ap_skiplist_find(sl->index, (void *)comp, &m); if (m) { return; /* Index already there! */ } skiplisti_init(&ni, sl->pool); - skiplist_set_compare(ni, comp, compk); + ap_skiplist_set_compare(ni, comp, compk); /* Build the new index... This can be expensive! */ - m = skiplist_insert(sl->index, ni); + m = ap_skiplist_insert(sl->index, ni); while (m->prev) { m = m->prev; icount++; } - for (m = skiplist_getlist(sl); m; skiplist_next(sl, &m)) { + for (m = ap_skiplist_getlist(sl); m; ap_skiplist_next(sl, &m)) { int j = icount - 1; - skiplistnode *nsln; - nsln = skiplist_insert(ni, m->data); + ap_skiplistnode *nsln; + nsln = ap_skiplist_insert(ni, m->data); /* skip from main index down list */ while (j > 0) { m = m->nextindex; @@ -159,7 +159,7 @@ void skiplist_add_index(Skiplist *sl, } } -skiplistnode *skiplist_getlist(Skiplist *sl) +ap_skiplistnode *ap_skiplist_getlist(ap_skiplist *sl) { if (!sl->bottom) { return NULL; @@ -167,27 +167,27 @@ skiplistnode *skiplist_getlist(Skiplist *sl) return sl->bottom->next; } -void *skiplist_find(Skiplist *sl, void *data, skiplistnode **iter) +void *ap_skiplist_find(ap_skiplist *sl, void *data, ap_skiplistnode **iter) { void *ret; - skiplistnode *aiter; + ap_skiplistnode *aiter; if (!sl->compare) { return 0; } if (iter) { - ret = skiplist_find_compare(sl, data, iter, sl->compare); + ret = ap_skiplist_find_compare(sl, data, iter, sl->compare); } else { - ret = skiplist_find_compare(sl, data, &aiter, sl->compare); + ret = ap_skiplist_find_compare(sl, data, &aiter, sl->compare); } return ret; } -static int skiplisti_find_compare(Skiplist *sl, void *data, - skiplistnode **ret, - SkiplistComparator comp) +static int skiplisti_find_compare(ap_skiplist *sl, void *data, + ap_skiplistnode **ret, + ap_skiplist_compare comp) { - skiplistnode *m = NULL; + ap_skiplistnode *m = NULL; int count = 0; m = sl->top; while (m) { @@ -214,26 +214,26 @@ static int skiplisti_find_compare(Skiplist *sl, void *data, return count; } -void *skiplist_find_compare(Skiplist *sli, void *data, - skiplistnode **iter, - SkiplistComparator comp) +void *ap_skiplist_find_compare(ap_skiplist *sli, void *data, + ap_skiplistnode **iter, + ap_skiplist_compare comp) { - skiplistnode *m = NULL; - Skiplist *sl; + ap_skiplistnode *m = NULL; + ap_skiplist *sl; if (comp == sli->compare || !sli->index) { sl = sli; } else { - skiplist_find(sli->index, (void *)comp, &m); + ap_skiplist_find(sli->index, (void *)comp, &m); AP_DEBUG_ASSERT(m); - sl = (Skiplist *) m->data; + sl = (ap_skiplist *) m->data; } skiplisti_find_compare(sl, data, iter, sl->comparek); return (*iter) ? ((*iter)->data) : (*iter); } -void *skiplist_next(Skiplist *sl, skiplistnode **iter) +void *ap_skiplist_next(ap_skiplist *sl, ap_skiplistnode **iter) { if (!*iter) { return NULL; @@ -242,7 +242,7 @@ void *skiplist_next(Skiplist *sl, skiplistnode **iter) return (*iter) ? ((*iter)->data) : NULL; } -void *skiplist_previous(Skiplist *sl, skiplistnode **iter) +void *ap_skiplist_previous(ap_skiplist *sl, ap_skiplistnode **iter) { if (!*iter) { return NULL; @@ -251,32 +251,32 @@ void *skiplist_previous(Skiplist *sl, skiplistnode **iter) return (*iter) ? ((*iter)->data) : NULL; } -skiplistnode *skiplist_insert(Skiplist *sl, void *data) +ap_skiplistnode *ap_skiplist_insert(ap_skiplist *sl, void *data) { if (!sl->compare) { return 0; } - return skiplist_insert_compare(sl, data, sl->compare); + return ap_skiplist_insert_compare(sl, data, sl->compare); } -skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, - SkiplistComparator comp) +ap_skiplistnode *ap_skiplist_insert_compare(ap_skiplist *sl, void *data, + ap_skiplist_compare comp) { - skiplistnode *m, *p, *tmp, *ret, **stack; + ap_skiplistnode *m, *p, *tmp, *ret, **stack; int nh = 1, ch, stacki; if (!sl->top) { sl->height = 1; sl->topend = sl->bottomend = sl->top = sl->bottom = - (skiplistnode *)skiplist_alloc(sl, sizeof(skiplistnode)); + (ap_skiplistnode *)ap_skiplist_alloc(sl, sizeof(ap_skiplistnode)); AP_DEBUG_ASSERT(sl->top); #if 0 - sl->top->next = (skiplistnode *)NULL; - sl->top->data = (skiplistnode *)NULL; - sl->top->prev = (skiplistnode *)NULL; - sl->top->up = (skiplistnode *)NULL; - sl->top->down = (skiplistnode *)NULL; - sl->top->nextindex = (skiplistnode *)NULL; - sl->top->previndex = (skiplistnode *)NULL; + sl->top->next = (ap_skiplistnode *)NULL; + sl->top->data = (ap_skiplistnode *)NULL; + sl->top->prev = (ap_skiplistnode *)NULL; + sl->top->up = (ap_skiplistnode *)NULL; + sl->top->down = (ap_skiplistnode *)NULL; + sl->top->nextindex = (ap_skiplistnode *)NULL; + sl->top->previndex = (ap_skiplistnode *)NULL; #endif sl->top->sl = sl; } @@ -297,7 +297,7 @@ skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, */ for (; sl->height < nh; sl->height++) { sl->top->up = - (skiplistnode *)skiplist_alloc(sl, sizeof(skiplistnode)); + (ap_skiplistnode *)ap_skiplist_alloc(sl, sizeof(ap_skiplistnode)); AP_DEBUG_ASSERT(sl->top->up); sl->top->up->down = sl->top; sl->top = sl->topend = sl->top->up; @@ -313,7 +313,7 @@ skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, /* Keep a stack to pop back through for insertion */ /* malloc() is OK since we free the temp stack */ m = sl->top; - stack = (skiplistnode **)ap_malloc(sizeof(skiplistnode *) * (nh)); + stack = (ap_skiplistnode **)ap_malloc(sizeof(ap_skiplistnode *) * (nh)); stacki = 0; while (m) { int compared = -1; @@ -340,7 +340,7 @@ skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, p = NULL; for (; stacki > 0; stacki--) { m = stack[stacki - 1]; - tmp = (skiplistnode *)skiplist_alloc(sl, sizeof(skiplistnode)); + tmp = (ap_skiplistnode *)ap_skiplist_alloc(sl, sizeof(ap_skiplistnode)); tmp->next = m->next; if (m->next) { m->next->prev = tmp; @@ -368,10 +368,10 @@ skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, * this is a external insertion, we must insert into each index as * well */ - skiplistnode *p, *ni, *li; + ap_skiplistnode *p, *ni, *li; li = ret; - for (p = skiplist_getlist(sl->index); p; skiplist_next(sl->index, &p)) { - ni = skiplist_insert((Skiplist *) p->data, ret->data); + for (p = ap_skiplist_getlist(sl->index); p; ap_skiplist_next(sl->index, &p)) { + ni = ap_skiplist_insert((ap_skiplist *) p->data, ret->data); AP_DEBUG_ASSERT(ni); li->nextindex = ni; ni->previndex = li; @@ -384,161 +384,18 @@ skiplistnode *skiplist_insert_compare(Skiplist *sl, void *data, return ret; } -#if 0 -/* - * There are reports of skiplist_append() being buggy. - * Use at own risk - */ -skiplistnode *skiplist_append(Skiplist *sl, void *data) -{ - int nh = 1, ch, compared; - skiplistnode *lastnode, *nodeago; - if (sl->bottomend != sl->bottom) { - compared = sl->compare(data, sl->bottomend->prev->data); - /* If it doesn't belong at the end, then fail */ - if (compared <= 0) - return NULL; - } - if (sl->preheight) { - while (nh < sl->preheight && get_b_rand()) { - nh++; - } - } - else { - while (nh <= sl->height && get_b_rand()) { - nh++; - } - } - /* Now we have the new height at which we wish to insert our new node */ - /* - * Let us make sure that our tree is a least that tall (grow if - * necessary) - */ - lastnode = sl->bottomend; - nodeago = NULL; - - if (!lastnode) { - return skiplist_insert(sl, data); - } - - for (; sl->height < nh; sl->height++) { - sl->top->up = (skiplistnode *)skiplist_alloc(sl, sizeof(skiplistnode)); - AP_DEBUG_ASSERT(sl->top); - sl->top->up->down = sl->top; - sl->top = sl->top->up; - sl->top->prev = sl->top->next = sl->top->nextindex = - sl->top->previndex = NULL; - sl->top->data = NULL; - sl->top->sl = sl; - } - ch = sl->height; - while (nh) { - skiplistnode *anode; - anode = (skiplistnode *)skiplist_alloc(sl, sizeof(skiplistnode)); - anode->next = lastnode; - anode->prev = lastnode->prev; - anode->up = NULL; - anode->down = nodeago; - if (lastnode->prev) { - if (lastnode == sl->bottom) - sl->bottom = anode; - else if (lastnode == sl->top) - sl->top = anode; - } - nodeago = anode; - lastnode = lastnode->up; - nh--; - } - sl->size++; - return sl->bottomend; -} - -/* - * There are reports of skiplist_concat() being buggy. - * Use at own risk - */ -Skiplist *skiplist_concat(Skiplist *sl1, Skiplist *sl2) -{ - /* Check integrity! */ - int compared, eheight; - Skiplist temp; - skiplistnode *lbottom, *lbottomend, *b1, *e1, *b2, *e2; - if (sl1->bottomend == NULL || sl1->bottomend->prev == NULL) { - skiplist_remove_all(sl1, NULL); - temp = *sl1; - *sl1 = *sl2; - *sl2 = temp; - /* swap them so that sl2 can be freed normally upon return. */ - return sl1; - } - if (sl2->bottom == NULL || sl2->bottom->next == NULL) { - skiplist_remove_all(sl2, NULL); - return sl1; - } - compared = sl1->compare(sl1->bottomend->prev->data, sl2->bottom->data); - /* If it doesn't belong at the end, then fail */ - if (compared <= 0) { - return NULL; - } - - /* OK now append sl2 onto sl1 */ - lbottom = lbottomend = NULL; - eheight = MIN(sl1->height, sl2->height); - b1 = sl1->bottom; - e1 = sl1->bottomend; - b2 = sl2->bottom; - e2 = sl2->bottomend; - while (eheight) { - e1->prev->next = b2; - b2->prev = e1->prev->next; - e2->prev->next = e1; - e1->prev = e2->prev; - e2->prev = NULL; - b2 = e2; - b1->down = lbottom; - e1->down = lbottomend; - if (lbottom) { - lbottom->up = b1; - } - if (lbottomend) { - lbottomend->up = e1; - } - - lbottom = b1; - lbottomend = e1; - } - /* Take the top of the longer one (if it is sl2) and make it sl1's */ - if (sl2->height > sl1->height) { - b1->up = b2->up; - e1->up = e2->up; - b1->up->down = b1; - e1->up->down = e1; - sl1->height = sl2->height; - sl1->top = sl2->top; - sl1->topend = sl2->topend; - } - - /* move the top pointer to here if it isn't there already */ - sl2->top = sl2->topend = b2; - sl2->top->up = NULL; /* If it isn't already */ - sl1->size += sl2->size; - skiplist_remove_all(sl2, NULL); - return sl1; -} -#endif - -int skiplist_remove(Skiplist *sl, void *data, FreeFunc myfree) +int ap_skiplist_remove(ap_skiplist *sl, void *data, ap_skiplist_freefunc myfree) { if (!sl->compare) { return 0; } - return skiplist_remove_compare(sl, data, myfree, sl->comparek); + return ap_skiplist_remove_compare(sl, data, myfree, sl->comparek); } #if 0 -void skiplist_print_struct(Skiplist * sl, char *prefix) +void skiplist_print_struct(ap_skiplist * sl, char *prefix) { - skiplistnode *p, *q; + ap_skiplistnode *p, *q; fprintf(stderr, "Skiplist Structure (height: %d)\n", sl->height); p = sl->bottom; while (p) { @@ -554,9 +411,9 @@ void skiplist_print_struct(Skiplist * sl, char *prefix) } #endif -static int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree) +static int skiplisti_remove(ap_skiplist *sl, ap_skiplistnode *m, ap_skiplist_freefunc myfree) { - skiplistnode *p; + ap_skiplistnode *p; if (!m) { return 0; } @@ -577,7 +434,7 @@ static int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree) if (!m && myfree && p->data) { myfree(p->data); } - skiplist_free(sl, p); + ap_skiplist_free(sl, p); } sl->size--; while (sl->top && sl->top->next == NULL) { @@ -587,7 +444,7 @@ static int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree) if (sl->top) { sl->top->up = NULL; /* Make it think its the top */ } - skiplist_free(sl, p); + ap_skiplist_free(sl, p); sl->height--; } if (!sl->top) { @@ -597,19 +454,19 @@ static int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree) return sl->height; /* return 1; ?? */ } -int skiplist_remove_compare(Skiplist *sli, +int ap_skiplist_remove_compare(ap_skiplist *sli, void *data, - FreeFunc myfree, SkiplistComparator comp) + ap_skiplist_freefunc myfree, ap_skiplist_compare comp) { - skiplistnode *m; - Skiplist *sl; + ap_skiplistnode *m; + ap_skiplist *sl; if (comp == sli->comparek || !sli->index) { sl = sli; } else { - skiplist_find(sli->index, (void *)comp, &m); + ap_skiplist_find(sli->index, (void *)comp, &m); AP_DEBUG_ASSERT(m); - sl = (Skiplist *) m->data; + sl = (ap_skiplist *) m->data; } skiplisti_find_compare(sl, data, &m, comp); if (!m) { @@ -621,14 +478,14 @@ int skiplist_remove_compare(Skiplist *sli, return skiplisti_remove(sl, m, myfree); } -void skiplist_remove_all(Skiplist *sl, FreeFunc myfree) +void ap_skiplist_remove_all(ap_skiplist *sl, ap_skiplist_freefunc myfree) { /* * This must remove even the place holder nodes (bottom though top) * because we specify in the API that one can free the Skiplist after * making this call without memory leaks */ - skiplistnode *m, *p, *u; + ap_skiplistnode *m, *p, *u; m = sl->bottom; while (m) { p = m->next; @@ -636,7 +493,7 @@ void skiplist_remove_all(Skiplist *sl, FreeFunc myfree) myfree(p->data); while (m) { u = m->up; - skiplist_free(sl, p); + ap_skiplist_free(sl, p); m = u; } m = p; @@ -646,11 +503,11 @@ void skiplist_remove_all(Skiplist *sl, FreeFunc myfree) sl->size = 0; } -void *skiplist_pop(Skiplist *a, FreeFunc myfree) +void *ap_skiplist_pop(ap_skiplist *a, ap_skiplist_freefunc myfree) { - skiplistnode *sln; + ap_skiplistnode *sln; void *data = NULL; - sln = skiplist_getlist(a); + sln = ap_skiplist_getlist(a); if (sln) { data = sln->data; skiplisti_remove(a, sln, myfree); @@ -658,10 +515,10 @@ void *skiplist_pop(Skiplist *a, FreeFunc myfree) return data; } -void *skiplist_peek(Skiplist *a) +void *ap_skiplist_peek(ap_skiplist *a) { - skiplistnode *sln; - sln = skiplist_getlist(a); + ap_skiplistnode *sln; + sln = ap_skiplist_getlist(a); if (sln) { return sln->data; } @@ -670,24 +527,24 @@ void *skiplist_peek(Skiplist *a) static void skiplisti_destroy(void *vsl) { - skiplist_destroy((Skiplist *) vsl, NULL); - skiplist_free((Skiplist *) vsl, vsl); + ap_skiplist_destroy((ap_skiplist *) vsl, NULL); + ap_skiplist_free((ap_skiplist *) vsl, vsl); } -void skiplist_destroy(Skiplist *sl, FreeFunc myfree) +void ap_skiplist_destroy(ap_skiplist *sl, ap_skiplist_freefunc myfree) { - while (skiplist_pop(sl->index, skiplisti_destroy) != NULL) + while (ap_skiplist_pop(sl->index, skiplisti_destroy) != NULL) ; - skiplist_remove_all(sl, myfree); + ap_skiplist_remove_all(sl, myfree); } -Skiplist *skiplist_merge(Skiplist *sl1, Skiplist *sl2) +ap_skiplist *ap_skiplist_merge(ap_skiplist *sl1, ap_skiplist *sl2) { /* Check integrity! */ - Skiplist temp; - struct skiplistnode *b2; + ap_skiplist temp; + struct ap_skiplistnode *b2; if (sl1->bottomend == NULL || sl1->bottomend->prev == NULL) { - skiplist_remove_all(sl1, NULL); + ap_skiplist_remove_all(sl1, NULL); temp = *sl1; *sl1 = *sl2; *sl2 = temp; @@ -695,15 +552,15 @@ Skiplist *skiplist_merge(Skiplist *sl1, Skiplist *sl2) return sl1; } if(sl2->bottom == NULL || sl2->bottom->next == NULL) { - skiplist_remove_all(sl2, NULL); + ap_skiplist_remove_all(sl2, NULL); return sl1; } /* This is what makes it brute force... Just insert :/ */ - b2 = skiplist_getlist(sl2); + b2 = ap_skiplist_getlist(sl2); while (b2) { - skiplist_insert(sl1, b2->data); - skiplist_next(sl2, &b2); + ap_skiplist_insert(sl1, b2->data); + ap_skiplist_next(sl2, &b2); } - skiplist_remove_all(sl2, NULL); + ap_skiplist_remove_all(sl2, NULL); return sl1; } diff --git a/server/mpm/eventopt/skiplist.h b/server/mpm/eventopt/skiplist.h index 42447c7283..0e350193ed 100644 --- a/server/mpm/eventopt/skiplist.h +++ b/server/mpm/eventopt/skiplist.h @@ -24,100 +24,82 @@ /* This is the function type that must be implemented per object type that is used in a skiplist for comparisons to maintain order */ -typedef int (*SkiplistComparator) (void *, void *); -typedef void (*FreeFunc) (void *); +typedef int (*ap_skiplist_compare) (void *, void *); +typedef void (*ap_skiplist_freefunc) (void *); -typedef struct skiplistnode skiplistnode; -typedef struct Skiplist Skiplist; +typedef struct ap_skiplistnode ap_skiplistnode; +typedef struct ap_skiplist ap_skiplist; -struct Skiplist { - SkiplistComparator compare; - SkiplistComparator comparek; +struct ap_skiplist { + ap_skiplist_compare compare; + ap_skiplist_compare comparek; int height; int preheight; int size; - skiplistnode *top; - skiplistnode *bottom; + ap_skiplistnode *top; + ap_skiplistnode *bottom; /* These two are needed for appending */ - skiplistnode *topend; - skiplistnode *bottomend; - Skiplist *index; + ap_skiplistnode *topend; + ap_skiplistnode *bottomend; + ap_skiplist *index; apr_pool_t *pool; }; -struct skiplistnode { +struct ap_skiplistnode { void *data; - skiplistnode *next; - skiplistnode *prev; - skiplistnode *down; - skiplistnode *up; - skiplistnode *previndex; - skiplistnode *nextindex; - Skiplist *sl; + ap_skiplistnode *next; + ap_skiplistnode *prev; + ap_skiplistnode *down; + ap_skiplistnode *up; + ap_skiplistnode *previndex; + ap_skiplistnode *nextindex; + ap_skiplist *sl; }; -void *skiplist_alloc(Skiplist *sl, size_t size); +void *ap_skiplist_alloc(ap_skiplist *sl, size_t size); -void skiplist_free(Skiplist *sl, void *mem); +void ap_skiplist_free(ap_skiplist *sl, void *mem); -apr_status_t skiplist_init(Skiplist **sl, apr_pool_t *p); +apr_status_t ap_skiplist_init(ap_skiplist **sl, apr_pool_t *p); -void skiplist_set_compare(Skiplist *sl, SkiplistComparator, - SkiplistComparator); +void ap_skiplist_set_compare(ap_skiplist *sl, ap_skiplist_compare, + ap_skiplist_compare); -void skiplist_add_index(Skiplist *sl, SkiplistComparator, - SkiplistComparator); +void ap_skiplist_add_index(ap_skiplist *sl, ap_skiplist_compare, + ap_skiplist_compare); -skiplistnode *skiplist_getlist(Skiplist *sl); +ap_skiplistnode *ap_skiplist_getlist(ap_skiplist *sl); -void *skiplist_find_compare(Skiplist *sl, +void *ap_skiplist_find_compare(ap_skiplist *sl, void *data, - skiplistnode **iter, - SkiplistComparator func); + ap_skiplistnode **iter, + ap_skiplist_compare func); -void *skiplist_find(Skiplist *sl, void *data, skiplistnode **iter); +void *ap_skiplist_find(ap_skiplist *sl, void *data, ap_skiplistnode **iter); -void *skiplist_next(Skiplist *sl, skiplistnode **iter); +void *ap_skiplist_next(ap_skiplist *sl, ap_skiplistnode **iter); -void *skiplist_previous(Skiplist *sl, skiplistnode **iter); +void *ap_skiplist_previous(ap_skiplist *sl, ap_skiplistnode **iter); -skiplistnode *skiplist_insert_compare(Skiplist *sl, - void *data, SkiplistComparator comp); +ap_skiplistnode *ap_skiplist_insert_compare(ap_skiplist *sl, + void *data, ap_skiplist_compare comp); -skiplistnode *skiplist_insert(Skiplist* sl, void *data); +ap_skiplistnode *ap_skiplist_insert(ap_skiplist* sl, void *data); -int skiplist_remove_compare(Skiplist *sl, void *data, - FreeFunc myfree, SkiplistComparator comp); +int ap_skiplist_remove_compare(ap_skiplist *sl, void *data, + ap_skiplist_freefunc myfree, ap_skiplist_compare comp); -int skiplist_remove(Skiplist *sl, void *data, FreeFunc myfree); +int ap_skiplist_remove(ap_skiplist *sl, void *data, ap_skiplist_freefunc myfree); -#if 0 -int skiplisti_remove(Skiplist *sl, skiplistnode *m, FreeFunc myfree); -#endif - -void skiplist_remove_all(Skiplist *sl, FreeFunc myfree); +void ap_skiplist_remove_all(ap_skiplist *sl, ap_skiplist_freefunc myfree); -void skiplist_destroy(Skiplist *sl, FreeFunc myfree); +void ap_skiplist_destroy(ap_skiplist *sl, ap_skiplist_freefunc myfree); -#if 0 -int skiplisti_find_compare(Skiplist *sl, - void *data, - skiplistnode **ret, - SkiplistComparator comp); - -#endif +void *ap_skiplist_pop(ap_skiplist *a, ap_skiplist_freefunc myfree); -void *skiplist_pop(Skiplist *a, FreeFunc myfree); - -void *skiplist_peek(Skiplist *a); - -/* Below 2 are buggy */ -#if 0 -Skiplist *skiplist_concat(Skiplist *sl1, Skiplist *sl2); -skiplistnode *skiplist_append(Skiplist *sl, void *data); -#endif +void *ap_skiplist_peek(ap_skiplist *a); -Skiplist *skiplist_merge(Skiplist *sl1, Skiplist *sl2); +ap_skiplist *ap_skiplist_merge(ap_skiplist *sl1, ap_skiplist *sl2); #endif