From owner-p4-projects Tue Mar 11 9:58:52 2003 Delivered-To: p4-projects@freebsd.org Received: by hub.freebsd.org (Postfix, from userid 32767) id F2D5837B404; Tue, 11 Mar 2003 09:58:47 -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 8954537B401 for ; Tue, 11 Mar 2003 09:58:47 -0800 (PST) Received: from repoman.freebsd.org (repoman.freebsd.org [216.136.204.115]) by mx1.FreeBSD.org (Postfix) with ESMTP id 17AD743FB1 for ; Tue, 11 Mar 2003 09:58:47 -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 h2BHwk0U062028 for ; Tue, 11 Mar 2003 09:58:46 -0800 (PST) (envelope-from jhb@freebsd.org) Received: (from perforce@localhost) by repoman.freebsd.org (8.12.6/8.12.6/Submit) id h2BHwkE2062025 for perforce@freebsd.org; Tue, 11 Mar 2003 09:58:46 -0800 (PST) Date: Tue, 11 Mar 2003 09:58:46 -0800 (PST) Message-Id: <200303111758.h2BHwkE2062025@repoman.freebsd.org> X-Authentication-Warning: repoman.freebsd.org: perforce set sender to jhb@freebsd.org using -f From: John Baldwin Subject: PERFORCE change 26693 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=26693 Change 26693 by jhb@jhb_laptop on 2003/03/11 09:58:03 - Move the functionality of clearing the eventhandler list off into its own function. - Remove the post semaphore event, it's really not all that useful. Instead, replace it with an event to dump the current list and add an event to blow away the current list. Affected files ... .. //depot/projects/smpng/sys/modules/evtest/evtest.c#16 edit Differences ... ==== //depot/projects/smpng/sys/modules/evtest/evtest.c#16 (text+ko) ==== @@ -52,7 +52,7 @@ #include #include -#define MAX_EVENT 9 +#define MAX_EVENT 10 #define NUM_THREADS 2 #define EVENT_TYPE_BROADCAST 0x1 @@ -76,7 +76,8 @@ { "help" }, { "invoke handlers on both threads", EVENT_TYPE_BROADCAST }, { "hello world", EVENT_TYPE_BROADCAST }, - { "post to semaphore" }, + { "dump list" }, + { "clear list" }, { "add print foo handler" }, { "add wait handler" }, { "add post handler" }, @@ -244,6 +245,21 @@ } static void +evtest_clearlist(void) +{ + struct eventhandler_entry *ee; + + ee = (struct eventhandler_entry *)first_tag; + if (ee != NULL) { + while (TAILQ_PREV(ee, eventhandler_entry_head, ee_link) != NULL) + ee = TAILQ_PREV(ee, eventhandler_entry_head, ee_link); + for (; ee != NULL; ee = TAILQ_NEXT(ee, ee_link)) + EVENTHANDLER_DEREGISTER(evtest, ee); + first_tag = NULL; + } +} + +static void event_thread(void *arg) { int ev; @@ -305,25 +321,28 @@ events[ev].ei_help); break; case 4: - sema_post(&evtest_sema); + evtest_dumplist(NULL); break; case 5: + evtest_clearlist(); + break; + case 6: foo_tag = first_tag = EVENTHANDLER_REGISTER(evtest, evtest_print, "foo", 5); break; - case 6: + case 7: first_tag = EVENTHANDLER_REGISTER(evtest, evtest_wait, NULL, 5); break; - case 7: + case 8: first_tag = EVENTHANDLER_REGISTER(evtest, evtest_post, NULL, 5); break; - case 8: + case 9: first_tag = EVENTHANDLER_REGISTER(evtest, evtest_dumplist, NULL, 5); break; - case 9: + case 10: first_tag = EVENTHANDLER_REGISTER(evtest, evtest_removefoo, NULL, 5); default: @@ -378,17 +397,9 @@ static void cleanup(void) { - struct eventhandler_entry *ee; int i; - ee = (struct eventhandler_entry *)first_tag; - if (ee != NULL) { - while (TAILQ_PREV(ee, eventhandler_entry_head, ee_link) != NULL) - ee = TAILQ_PREV(ee, eventhandler_entry_head, ee_link); - for (; ee != NULL; ee = TAILQ_NEXT(ee, ee_link)) - EVENTHANDLER_DEREGISTER(evtest, ee); - } - + evtest_clearlist(); mtx_lock(&event_mtx); for (i = 0; i < NUM_THREADS; i++) thread_destroy(i); To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe p4-projects" in the body of the message