Пример #1
0
struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr)
{
	subscr->use_count--;
	DEBUGP(DREF, "subscr %s usage decreased usage to: %d\n",
			subscr->extension, subscr->use_count);
	if (subscr->use_count <= 0)
		subscr_free(subscr);
	return NULL;
}
Пример #2
0
struct gsm_subscriber *subscr_put(struct gsm_subscriber *subscr)
{
	subscr->use_count--;
	DEBUGP(DREF, "subscr %s usage decreased usage to: %d\n",
			subscr->extension, subscr->use_count);
	if (subscr->use_count <= 0 &&
	    !((subscr->group && subscr->group->keep_subscr) ||
	      subscr->keep_in_ram))
		subscr_free(subscr);
	return NULL;
}
Пример #3
0
int subscr_purge_inactive(struct gsm_subscriber_group *sgrp)
{
	struct gsm_subscriber *subscr, *tmp;
	int purged = 0;

	llist_for_each_entry_safe(subscr, tmp, subscr_bsc_active_subscribers(), entry) {
		if (subscr->group == sgrp && subscr->use_count <= 0) {
			subscr_free(subscr);
			purged += 1;
		}
	}

	return purged;
}
Пример #4
0
int subscr_purge_inactive(struct gsm_network *net)
{
	struct gsm_subscriber *subscr, *tmp;
	int purged = 0;

	llist_for_each_entry_safe(subscr, tmp, subscr_bsc_active_subscribers(), entry) {
		if (subscr->net == net && subscr->use_count <= 0) {
			subscr_free(subscr);
			purged += 1;
		}
	}

	return purged;
}
Пример #5
0
void subscr_direct_free(struct gsm_subscriber *subscr)
{
	OSMO_ASSERT(subscr->use_count == 1);
	subscr_free(subscr);
}