mirror of
https://gitlab.nic.cz/labs/bird.git
synced 2024-12-23 02:01:55 +00:00
Table long-locking debug code
This commit is contained in:
parent
e2c6120636
commit
5103de4e8e
@ -3680,10 +3680,10 @@ rt_new_table(struct symbol *s, uint addr_type)
|
|||||||
* preventing it from being freed when it gets undefined in a new
|
* preventing it from being freed when it gets undefined in a new
|
||||||
* configuration.
|
* configuration.
|
||||||
*/
|
*/
|
||||||
void
|
void rt_lock_table_debug(rtable *tab, const char *file, uint line)
|
||||||
rt_lock_table(rtable *r)
|
|
||||||
{
|
{
|
||||||
r->use_count++;
|
rt_trace(tab, D_STATES, "Locked at %s:%d", file, line);
|
||||||
|
tab->use_count++;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -3694,9 +3694,9 @@ rt_lock_table(rtable *r)
|
|||||||
* that is decrease its use count and delete it if it's scheduled
|
* that is decrease its use count and delete it if it's scheduled
|
||||||
* for deletion by configuration changes.
|
* for deletion by configuration changes.
|
||||||
*/
|
*/
|
||||||
void
|
void rt_unlock_table_debug(rtable *r, const char *file, uint line)
|
||||||
rt_unlock_table(rtable *r)
|
|
||||||
{
|
{
|
||||||
|
rt_trace(r, D_STATES, "Unlocked at %s:%d", file, line);
|
||||||
if (!--r->use_count && r->deleted)
|
if (!--r->use_count && r->deleted)
|
||||||
{
|
{
|
||||||
struct config *conf = r->deleted;
|
struct config *conf = r->deleted;
|
||||||
|
@ -482,8 +482,12 @@ void rt_init(void);
|
|||||||
void rt_preconfig(struct config *);
|
void rt_preconfig(struct config *);
|
||||||
void rt_postconfig(struct config *);
|
void rt_postconfig(struct config *);
|
||||||
void rt_commit(struct config *new, struct config *old);
|
void rt_commit(struct config *new, struct config *old);
|
||||||
void rt_lock_table(rtable *);
|
|
||||||
void rt_unlock_table(rtable *);
|
void rt_lock_table_debug(rtable *, const char *file, uint line);
|
||||||
|
void rt_unlock_table_debug(rtable *, const char *file, uint line);
|
||||||
|
#define rt_lock_table(tab) rt_lock_table_debug(tab, __FILE__, __LINE__)
|
||||||
|
#define rt_unlock_table(tab) rt_unlock_table_debug(tab, __FILE__, __LINE__)
|
||||||
|
|
||||||
struct f_trie * rt_lock_trie(rtable *tab);
|
struct f_trie * rt_lock_trie(rtable *tab);
|
||||||
void rt_unlock_trie(rtable *tab, struct f_trie *trie);
|
void rt_unlock_trie(rtable *tab, struct f_trie *trie);
|
||||||
void rt_flowspec_link(rtable *src, rtable *dst);
|
void rt_flowspec_link(rtable *src, rtable *dst);
|
||||||
|
Loading…
Reference in New Issue
Block a user