Lines Matching refs:wp
397 list_walk_init(uu_list_walk_t *wp, uu_list_t *lp, uint32_t flags)
404 (void) memset(wp, 0, sizeof (*wp));
405 wp->ulw_list = lp;
406 wp->ulw_robust = robust;
407 wp->ulw_dir = direction;
409 wp->ulw_next_result = lp->ul_null_node.uln_next;
411 wp->ulw_next_result = lp->ul_null_node.uln_prev;
419 wp->ulw_next = next = &lp->ul_null_walk;
420 wp->ulw_prev = prev = next->ulw_prev;
421 next->ulw_prev = wp;
422 prev->ulw_next = wp;
427 list_walk_advance(uu_list_walk_t *wp, uu_list_t *lp)
429 uu_list_node_impl_t *np = wp->ulw_next_result;
435 next = (wp->ulw_dir > 0)? np->uln_next : np->uln_prev;
437 wp->ulw_next_result = next;
442 list_walk_fini(uu_list_walk_t *wp)
445 if (wp->ulw_next != NULL) {
446 wp->ulw_next->ulw_prev = wp->ulw_prev;
447 wp->ulw_prev->ulw_next = wp->ulw_next;
448 wp->ulw_next = NULL;
449 wp->ulw_prev = NULL;
451 wp->ulw_list = NULL;
452 wp->ulw_next_result = NULL;
458 uu_list_walk_t *wp;
465 wp = uu_zalloc(sizeof (*wp));
466 if (wp == NULL) {
471 list_walk_init(wp, lp, flags);
472 return (wp);
476 uu_list_walk_next(uu_list_walk_t *wp)
478 uu_list_t *lp = wp->ulw_list;
479 uu_list_node_impl_t *np = list_walk_advance(wp, lp);
488 uu_list_walk_end(uu_list_walk_t *wp)
490 list_walk_fini(wp);
491 uu_free(wp);
543 uu_list_walk_t *wp;
559 for (wp = lp->ul_null_walk.ulw_next; wp != &lp->ul_null_walk;
560 wp = wp->ulw_next) {
561 if (wp->ulw_robust) {
562 if (np == wp->ulw_next_result)
563 (void) list_walk_advance(wp, lp);
564 } else if (wp->ulw_next_result != NULL) {