lib: inline route_node_lock()/route_node_unlock()

Avoid function calls.

Signed-off-by: Jorge Boncompte <jbonor@gmail.com>
This commit is contained in:
Jorge Boncompte 2017-08-07 19:15:38 +02:00
parent 7fe9e03556
commit 01dccc0b19
2 changed files with 19 additions and 21 deletions

View file

@ -31,7 +31,6 @@
DEFINE_MTYPE(LIB, ROUTE_TABLE, "Route table") DEFINE_MTYPE(LIB, ROUTE_TABLE, "Route table")
DEFINE_MTYPE(LIB, ROUTE_NODE, "Route node") DEFINE_MTYPE(LIB, ROUTE_NODE, "Route node")
static void route_node_delete(struct route_node *);
static void route_table_free(struct route_table *); static void route_table_free(struct route_table *);
static int route_table_hash_cmp(const void *a, const void *b) static int route_table_hash_cmp(const void *a, const void *b)
@ -187,23 +186,6 @@ static void set_link(struct route_node *node, struct route_node *new)
new->parent = node; new->parent = node;
} }
/* Lock node. */
struct route_node *route_lock_node(struct route_node *node)
{
node->lock++;
return node;
}
/* Unlock node. */
void route_unlock_node(struct route_node *node)
{
assert(node->lock > 0);
node->lock--;
if (node->lock == 0)
route_node_delete(node);
}
/* Find matched prefix. */ /* Find matched prefix. */
struct route_node *route_node_match(const struct route_table *table, struct route_node *route_node_match(const struct route_table *table,
union prefixconstptr pu) union prefixconstptr pu)
@ -348,7 +330,7 @@ struct route_node *route_node_get(struct route_table *const table,
} }
/* Delete node from the routing table. */ /* Delete node from the routing table. */
static void route_node_delete(struct route_node *node) void route_node_delete(struct route_node *node)
{ {
struct route_node *child; struct route_node *child;
struct route_node *parent; struct route_node *parent;

View file

@ -182,7 +182,6 @@ route_table_init_with_delegate(route_table_delegate_t *);
extern route_table_delegate_t *route_table_get_default_delegate(void); extern route_table_delegate_t *route_table_get_default_delegate(void);
extern void route_table_finish(struct route_table *); extern void route_table_finish(struct route_table *);
extern void route_unlock_node(struct route_node *node);
extern struct route_node *route_top(struct route_table *); extern struct route_node *route_top(struct route_table *);
extern struct route_node *route_next(struct route_node *); extern struct route_node *route_next(struct route_node *);
extern struct route_node *route_next_until(struct route_node *, extern struct route_node *route_next_until(struct route_node *,
@ -193,7 +192,6 @@ extern struct route_node *route_node_lookup(const struct route_table *,
union prefixconstptr); union prefixconstptr);
extern struct route_node *route_node_lookup_maynull(const struct route_table *, extern struct route_node *route_node_lookup_maynull(const struct route_table *,
union prefixconstptr); union prefixconstptr);
extern struct route_node *route_lock_node(struct route_node *node);
extern struct route_node *route_node_match(const struct route_table *, extern struct route_node *route_node_match(const struct route_table *,
union prefixconstptr); union prefixconstptr);
extern struct route_node *route_node_match_ipv4(const struct route_table *, extern struct route_node *route_node_match_ipv4(const struct route_table *,
@ -205,6 +203,7 @@ extern unsigned long route_table_count(const struct route_table *);
extern struct route_node *route_node_create(route_table_delegate_t *, extern struct route_node *route_node_create(route_table_delegate_t *,
struct route_table *); struct route_table *);
extern void route_node_delete(struct route_node *);
extern void route_node_destroy(route_table_delegate_t *, struct route_table *, extern void route_node_destroy(route_table_delegate_t *, struct route_table *,
struct route_node *); struct route_node *);
@ -225,6 +224,23 @@ extern void route_table_iter_cleanup(route_table_iter_t *iter);
* Inline functions. * Inline functions.
*/ */
/* Lock node. */
static inline struct route_node *route_lock_node(struct route_node *node)
{
node->lock++;
return node;
}
/* Unlock node. */
static inline void route_unlock_node(struct route_node *node)
{
assert(node->lock > 0);
node->lock--;
if (node->lock == 0)
route_node_delete(node);
}
/* /*
* route_table_iter_next * route_table_iter_next
* *