コード例 #1
0
ファイル: uevent.c プロジェクト: gebi/multipath-tools
void
service_uevq(void)
{
	int empty;
	struct uevent *uev;

	do {
		pthread_mutex_lock(uevq_lockp);
		empty = (uevqhp == NULL);
		if (!empty) {
			uev = uevqhp;
			uevqhp = uev->next;
			if (uevqtp == uev)
				uevqtp = uev->next;
			pthread_mutex_unlock(uevq_lockp);

			if (my_uev_trigger && my_uev_trigger(uev,
							my_trigger_data))
				condlog(0, "uevent trigger error");

			FREE(uev);
		}
		else {
			pthread_mutex_unlock(uevq_lockp);
		}
	} while (empty == 0);
}
コード例 #2
0
ファイル: uevent.c プロジェクト: unakatsuo/multipath-tools
/*
 * Called with uevq_lockp held
 */
void
service_uevq(struct list_head *tmpq)
{
	struct uevent *uev, *tmp;

	list_for_each_entry_safe(uev, tmp, tmpq, node) {
		list_del_init(&uev->node);

		if (my_uev_trigger && my_uev_trigger(uev, my_trigger_data))
			condlog(0, "uevent trigger error");

		FREE(uev);
	}