paging: add paging_reset() function

This commit is contained in:
Harald Welte 2011-06-27 23:51:02 +02:00
parent 656c8236a5
commit d04d43098d
2 changed files with 22 additions and 0 deletions

View File

@ -11,6 +11,8 @@ struct paging_state;
struct paging_state *paging_init(void *ctx, unsigned int num_paging_max,
unsigned int paging_lifetime);
void paging_reset(struct paging_state *ps);
/* update with new SYSTEM INFORMATION parameters */
int paging_si_update(struct paging_state *ps, struct gsm48_control_channel_descr *chan_desc);

View File

@ -438,3 +438,23 @@ struct paging_state *paging_init(void *ctx, unsigned int num_paging_max,
}
return ps;
}
void paging_reset(struct paging_state *ps)
{
int i;
for (i = 0; i < ARRAY_SIZE(ps->paging_queue); i++) {
struct llist_head *queue = &ps->paging_queue[i];
struct paging_record *pr, *pr2;
llist_for_each_entry_safe(pr, pr2, queue, list) {
llist_del(&pr->list);
talloc_free(pr);
ps->num_paging--;
}
}
if (ps->num_paging != 0)
LOGP(DPAG, LOGL_NOTICE, "num_paging != 0 after flushing all records?!?\n");
ps->num_paging = 0;
}