Replace single-linked with double-linked lists. It results in more

compact and more efficient code.

	* grub-core/kern/list.c (grub_list_push): Moved from here ...
	* include/grub/list.h (grub_list_push): ... to here. Set prev.
	(grub_list_remove): Moved from here ...
	* include/grub/list.h (grub_list_remove): ... here. Use and set prev.
	(grub_prio_list_insert): Set prev.
	* include/grub/list.h (grub_list): Add prev. All users updated.
This commit is contained in:
Vladimir 'phcoder' Serbinenko 2012-01-24 13:31:12 +01:00
parent 48b391e9ab
commit 87edb8940a
27 changed files with 111 additions and 75 deletions

View file

@ -40,6 +40,7 @@ char *grub_net_default_server;
struct grub_net_route
{
struct grub_net_route *next;
struct grub_net_route **prev;
grub_net_network_level_netaddress_t target;
char *name;
struct grub_net_network_level_protocol *prot;
@ -206,8 +207,7 @@ grub_net_card_unregister (struct grub_net_card *card)
card->driver->close (card);
card->opened = 0;
}
grub_list_remove (GRUB_AS_LIST_P (&grub_net_cards),
GRUB_AS_LIST (card));
grub_list_remove (GRUB_AS_LIST (card));
}
static struct grub_net_slaac_mac_list *
@ -366,8 +366,7 @@ grub_net_route_register (struct grub_net_route *route)
static inline void
grub_net_route_unregister (struct grub_net_route *route)
{
grub_list_remove (GRUB_AS_LIST_P (&grub_net_routes),
GRUB_AS_LIST (route));
grub_list_remove (GRUB_AS_LIST (route));
}
#define FOR_NET_ROUTES(var) for (var = grub_net_routes; var; var = var->next)