From owner-p4-projects Tue Mar 11 9:48:37 2003 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id 55DF037B404; Tue, 11 Mar 2003 09:48:34 -0800 (PST) Delivered-To: perforce@freebsd.org Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id E0CC137B401 for ; Tue, 11 Mar 2003 09:48:33 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 704E443FBF for ; Tue, 11 Mar 2003 09:48:33 -0800 (PST) (envelope-from jhb@freebsd.org) Received: from repoman.freebsd.org (localhost [127.0.0.1]) by repoman.freebsd.org (8.12.6/8.12.6) with ESMTP id h2BHmX0U061192 for ; Tue, 11 Mar 2003 09:48:33 -0800 (PST) (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h2BHmWOT061189 for perforce@freebsd.org; Tue, 11 Mar 2003 09:48:32 -0800 (PST) Date: Tue, 11 Mar 2003 09:48:32 -0800 (PST) Message-Id: <200303111748.h2BHmWOT061189@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin Subject: PERFORCE change 26691 for review To: Perforce Change Reviews Sender: owner-p4-projects@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.ORG http://perforce.freebsd.org/chv.cgi?CH=26691 Change 26691 by jhb@jhb_laptop on 2003/03/11 09:47:37 Allow for an event to remove the print "foo" handler to be added to the list. Affected files ... .. //depot/projects/smpng/sys/modules/evtest/evtest.c#14 edit Differences ... ==== //depot/projects/smpng/sys/modules/evtest/evtest.c#14 (text+ko) ==== @@ -52,12 +52,12 @@ #include #include -#define MAX_EVENT 8 +#define MAX_EVENT 9 #define NUM_THREADS 2 #define EVENT_TYPE_BROADCAST 0x1 -static eventhandler_tag first_tag; +static eventhandler_tag first_tag, foo_tag; static struct cv event_cv, broadcast_cv, event_recvd; static struct mtx event_mtx; static struct sema evtest_sema; @@ -80,7 +80,8 @@ { "add print foo handler" }, { "add wait handler" }, { "add post handler" }, - { "add dump handler" } + { "add dump handler" }, + { "add removefoo handler" }, }; static int mod_event(struct module *module, int cmd, void *arg); @@ -94,7 +95,8 @@ typedef void (evtest_fn)(void *); EVENTHANDLER_DECLARE(evtest, evtest_fn *); -static evtest_fn evtest_print, evtest_wait, evtest_post, evtest_dumplist; +static evtest_fn evtest_print, evtest_wait, evtest_post, evtest_dumplist, + evtest_removefoo; struct evtest_fninfo { evtest_fn *ev_fn; @@ -106,6 +108,7 @@ { &evtest_wait, "evtest_wait" }, { &evtest_post, "evtest_post" }, { &evtest_dumplist, "evtest_dumplist" }, + { &evtest_removefoo, "evtest_removefoo" }, { NULL, NULL } }; @@ -205,6 +208,18 @@ sema_post(&evtest_sema); } +static void +evtest_removefoo(void *arg) +{ + + mtx_lock(&event_mtx); + if (foo_tag != NULL) { + EVENTHANDLER_DEREGISTER(evtest, foo_tag); + foo_tag = NULL; + } + mtx_unlock(&event_mtx); +} + /* * Yes, this is really gross and greatly violates the eventhandler * abstraction. Deal. @@ -293,7 +308,7 @@ sema_post(&evtest_sema); break; case 5: - first_tag = EVENTHANDLER_REGISTER(evtest, + foo_tag = first_tag = EVENTHANDLER_REGISTER(evtest, evtest_print, "foo", 5); break; case 6: @@ -308,6 +323,9 @@ first_tag = EVENTHANDLER_REGISTER(evtest, evtest_dumplist, NULL, 5); break; + case 9: + first_tag = EVENTHANDLER_REGISTER(evtest, + evtest_removefoo, NULL, 5); default: panic("event %d is bogus\n", event); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message