From patchwork Wed Apr 2 09:52:32 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Masashi Honma X-Patchwork-Id: 336298 Return-Path: X-Original-To: patchwork-incoming@ozlabs.org Delivered-To: patchwork-incoming@ozlabs.org Received: from maxx.maxx.shmoo.com (maxx.shmoo.com [205.134.188.171]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 24F081400F9 for ; Wed, 2 Apr 2014 20:53:43 +1100 (EST) Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id B62FC9D240; Wed, 2 Apr 2014 05:53:39 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 4YNOyJAJcvTW; Wed, 2 Apr 2014 05:53:39 -0400 (EDT) Received: from maxx.shmoo.com (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 1ED7B9D241; Wed, 2 Apr 2014 05:53:34 -0400 (EDT) X-Original-To: mailman-post+hostap@maxx.shmoo.com Delivered-To: mailman-post+hostap@maxx.shmoo.com Received: from localhost (localhost [127.0.0.1]) by maxx.maxx.shmoo.com (Postfix) with ESMTP id 5DDE69D241 for ; Wed, 2 Apr 2014 05:53:32 -0400 (EDT) X-Virus-Scanned: amavisd-new at maxx.shmoo.com Received: from maxx.maxx.shmoo.com ([127.0.0.1]) by localhost (maxx.shmoo.com [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id Cinv27k8DDMg for ; Wed, 2 Apr 2014 05:53:26 -0400 (EDT) Received: from mail-pd0-f180.google.com (mail-pd0-f180.google.com [209.85.192.180]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (not verified)) by maxx.maxx.shmoo.com (Postfix) with ESMTPS id 33EA09D240 for ; Wed, 2 Apr 2014 05:53:26 -0400 (EDT) Received: by mail-pd0-f180.google.com with SMTP id v10so10857341pde.25 for ; Wed, 02 Apr 2014 02:53:25 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=Zps3jEWigUADpCH9Su7EFo4vOIOXWeaiJczhI30HUu8=; b=uAWXtnC7t3eihAY6tyvZyT4nK8YVGB5s50lRfvqUSTg/kkTLUnlJM6RhDis+SL47kY 4bu9DlfD9Gnzs4HT7HNzDRXx3fvxCBEZlQh4bTQ1ZAwXwg2rhIqNKFOH/l6cpyQ6vmSw gI22dn/epZfumw2rQKIsvOpOmLu3ltZs+w/pbe2agh+t/NrX1qGiObQtcSsFDkXuTcob JF0JI68fRrWEzBfF+vtU2ElcvTdtnVH0C1A5a+b9Em8Rtmu5KznSpe2YMY0Lq2z+5S1a QYWnN2YCYfz8HbTToJ4+xSCMEBAiDgs+uWbviT7taMDyJ2yxBYd8iGVk9fBq8LJHGtZ2 wcYQ== X-Received: by 10.66.142.233 with SMTP id rz9mr37022184pab.71.1396432405192; Wed, 02 Apr 2014 02:53:25 -0700 (PDT) Received: from localhost.localdomain (p4a0a3d.kngwnt01.ap.so-net.ne.jp. [120.74.10.61]) by mx.google.com with ESMTPSA id ky8sm3276929pbc.64.2014.04.02.02.53.23 for (version=TLSv1.1 cipher=ECDHE-RSA-RC4-SHA bits=128/128); Wed, 02 Apr 2014 02:53:24 -0700 (PDT) From: Masashi Honma To: hostap@lists.shmoo.com Subject: [PATCH] Separate event loop implementation by specific macros Date: Wed, 2 Apr 2014 18:52:32 +0900 Message-Id: <1396432352-10556-1-git-send-email-masashi.honma@gmail.com> X-Mailer: git-send-email 1.8.1.2 In-Reply-To: <20140401083452.GA14008@w1.fi> References: <20140401083452.GA14008@w1.fi> X-BeenThere: hostap@lists.shmoo.com X-Mailman-Version: 2.1.11 Precedence: list List-Id: HostAP Project List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: hostap-bounces@lists.shmoo.com Errors-To: hostap-bounces@lists.shmoo.com I modified my patch to use CONFIG_ELOOP=eloop_win. I hope I understood what you want :). Signed-off-by: Masashi Honma --- hostapd/Makefile | 15 ++++++++---- src/utils/eloop.c | 39 ++++++++++++++++++------------- tests/hwsim/example-wpa_supplicant.config | 2 -- wpa_supplicant/Android.mk | 13 +++++++---- wpa_supplicant/Makefile | 19 +++++++++++---- wpa_supplicant/android.config | 8 +++---- wpa_supplicant/defconfig | 8 +++---- 7 files changed, 62 insertions(+), 42 deletions(-) diff --git a/hostapd/Makefile b/hostapd/Makefile index ac6373e..59c17af 100644 --- a/hostapd/Makefile +++ b/hostapd/Makefile @@ -90,12 +90,19 @@ endif endif ifndef CONFIG_ELOOP -CONFIG_ELOOP=eloop +CONFIG_ELOOP=select +endif +OBJS += ../src/utils/eloop.o +OBJS_c += ../src/utils/eloop.o + +ifneq ($(CONFIG_ELOOP), eloop_win) +ifeq ($(CONFIG_ELOOP), select) +CFLAGS += -DCONFIG_ELOOP_SELECT +endif +ifeq ($(CONFIG_ELOOP), poll) +CFLAGS += -DCONFIG_ELOOP_POLL endif -OBJS += ../src/utils/$(CONFIG_ELOOP).o -OBJS_c += ../src/utils/$(CONFIG_ELOOP).o -ifeq ($(CONFIG_ELOOP), eloop) # Using glibc < 2.17 requires -lrt for clock_gettime() LIBS += -lrt LIBS_c += -lrt diff --git a/src/utils/eloop.c b/src/utils/eloop.c index 2667c8c..fa7cb81 100644 --- a/src/utils/eloop.c +++ b/src/utils/eloop.c @@ -362,7 +362,9 @@ static void eloop_sock_table_dispatch(struct eloop_sock_table *readers, max_pollfd_map, POLLERR | POLLHUP); } -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ + +#ifdef CONFIG_ELOOP_SELECT static void eloop_sock_table_set_fds(struct eloop_sock_table *table, fd_set *fds) @@ -401,7 +403,7 @@ static void eloop_sock_table_dispatch(struct eloop_sock_table *table, } } -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ static void eloop_sock_table_destroy(struct eloop_sock_table *table) @@ -776,20 +778,21 @@ void eloop_run(void) #ifdef CONFIG_ELOOP_POLL int num_poll_fds; int timeout_ms = 0; -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ +#ifdef CONFIG_ELOOP_SELECT fd_set *rfds, *wfds, *efds; struct timeval _tv; -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ int res; struct os_reltime tv, now; -#ifndef CONFIG_ELOOP_POLL +#ifdef CONFIG_ELOOP_SELECT rfds = os_malloc(sizeof(*rfds)); wfds = os_malloc(sizeof(*wfds)); efds = os_malloc(sizeof(*efds)); if (rfds == NULL || wfds == NULL || efds == NULL) goto out; -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ while (!eloop.terminate && (!dl_list_empty(&eloop.timeout) || eloop.readers.count > 0 || @@ -805,10 +808,11 @@ void eloop_run(void) tv.sec = tv.usec = 0; #ifdef CONFIG_ELOOP_POLL timeout_ms = tv.sec * 1000 + tv.usec / 1000; -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ +#ifdef CONFIG_ELOOP_SELECT _tv.tv_sec = tv.sec; _tv.tv_usec = tv.usec; -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ } #ifdef CONFIG_ELOOP_POLL @@ -824,7 +828,8 @@ void eloop_run(void) strerror(errno)); goto out; } -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ +#ifdef CONFIG_ELOOP_SELECT eloop_sock_table_set_fds(&eloop.readers, rfds); eloop_sock_table_set_fds(&eloop.writers, wfds); eloop_sock_table_set_fds(&eloop.exceptions, efds); @@ -835,7 +840,7 @@ void eloop_run(void) strerror(errno)); goto out; } -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ eloop_process_pending_signals(); /* check if some registered timeouts have occurred */ @@ -861,20 +866,21 @@ void eloop_run(void) eloop_sock_table_dispatch(&eloop.readers, &eloop.writers, &eloop.exceptions, eloop.pollfds_map, eloop.max_pollfd_map); -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ +#ifdef CONFIG_ELOOP_SELECT eloop_sock_table_dispatch(&eloop.readers, rfds); eloop_sock_table_dispatch(&eloop.writers, wfds); eloop_sock_table_dispatch(&eloop.exceptions, efds); -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ } eloop.terminate = 0; out: -#ifndef CONFIG_ELOOP_POLL +#ifdef CONFIG_ELOOP_SELECT os_free(rfds); os_free(wfds); os_free(efds); -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ return; } @@ -940,7 +946,8 @@ void eloop_wait_for_read_sock(int sock) pfd.events = POLLIN; poll(&pfd, 1, -1); -#else /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_POLL */ +#ifdef CONFIG_ELOOP_SELECT fd_set rfds; if (sock < 0) @@ -949,5 +956,5 @@ void eloop_wait_for_read_sock(int sock) FD_ZERO(&rfds); FD_SET(sock, &rfds); select(sock + 1, &rfds, NULL, NULL, NULL); -#endif /* CONFIG_ELOOP_POLL */ +#endif /* CONFIG_ELOOP_SELECT */ } diff --git a/tests/hwsim/example-wpa_supplicant.config b/tests/hwsim/example-wpa_supplicant.config index 7a77ac7..ef722bf 100644 --- a/tests/hwsim/example-wpa_supplicant.config +++ b/tests/hwsim/example-wpa_supplicant.config @@ -47,8 +47,6 @@ CONFIG_WPA_CLI_EDIT=y CONFIG_OCSP=y -#CONFIG_ELOOP_POLL=y - #CONFIG_CTRL_IFACE_DBUS=y #CONFIG_CTRL_IFACE_DBUS_NEW=y #CONFIG_CTRL_IFACE_DBUS_INTRO=y diff --git a/wpa_supplicant/Android.mk b/wpa_supplicant/Android.mk index a60a26a..13cc4b7 100644 --- a/wpa_supplicant/Android.mk +++ b/wpa_supplicant/Android.mk @@ -131,12 +131,15 @@ endif endif ifndef CONFIG_ELOOP -CONFIG_ELOOP=eloop +CONFIG_ELOOP=select endif -OBJS += src/utils/$(CONFIG_ELOOP).c -OBJS_c += src/utils/$(CONFIG_ELOOP).c +OBJS += src/utils/eloop.c +OBJS_c += src/utils/eloop.c -ifdef CONFIG_ELOOP_POLL +ifeq ($(CONFIG_ELOOP), select) +L_CFLAGS += -DCONFIG_ELOOP_SELECT +endif +ifeq ($(CONFIG_ELOOP), poll) L_CFLAGS += -DCONFIG_ELOOP_POLL endif @@ -1492,7 +1495,7 @@ ifdef CONFIG_PRIVSEP OBJS_priv += $(OBJS_d) src/drivers/drivers.c OBJS_priv += $(OBJS_l2) OBJS_priv += src/utils/os_$(CONFIG_OS).c -OBJS_priv += src/utils/$(CONFIG_ELOOP).c +OBJS_priv += src/utils/eloop.c OBJS_priv += src/utils/common.c OBJS_priv += src/utils/wpa_debug.c OBJS_priv += src/utils/wpabuf.c diff --git a/wpa_supplicant/Makefile b/wpa_supplicant/Makefile index 19dae70..ba38be0 100644 --- a/wpa_supplicant/Makefile +++ b/wpa_supplicant/Makefile @@ -122,22 +122,27 @@ endif endif ifndef CONFIG_ELOOP -CONFIG_ELOOP=eloop +CONFIG_ELOOP=select endif + +ifeq ($(CONFIG_ELOOP), eloop_win) OBJS += ../src/utils/$(CONFIG_ELOOP).o OBJS_c += ../src/utils/$(CONFIG_ELOOP).o +else +OBJS += ../src/utils/eloop.o +OBJS_c += ../src/utils/eloop.o -ifeq ($(CONFIG_ELOOP), eloop) # Using glibc < 2.17 requires -lrt for clock_gettime() LIBS += -lrt LIBS_c += -lrt LIBS_p += -lrt +ifeq ($(CONFIG_ELOOP), select) +CFLAGS += -DCONFIG_ELOOP_SELECT endif - -ifdef CONFIG_ELOOP_POLL +ifeq ($(CONFIG_ELOOP), poll) CFLAGS += -DCONFIG_ELOOP_POLL endif - +endif ifdef CONFIG_EAPOL_TEST CFLAGS += -Werror -DEAPOL_TEST @@ -1510,7 +1515,11 @@ ifdef CONFIG_PRIVSEP OBJS_priv += $(OBJS_d) ../src/drivers/drivers.o OBJS_priv += $(OBJS_l2) OBJS_priv += ../src/utils/os_$(CONFIG_OS).o +ifeq ($(CONFIG_ELOOP), eloop_win) OBJS_priv += ../src/utils/$(CONFIG_ELOOP).o +else +OBJS_priv += ../src/utils/eloop.o +endif OBJS_priv += ../src/utils/common.o OBJS_priv += ../src/utils/wpa_debug.o OBJS_priv += ../src/utils/wpabuf.o diff --git a/wpa_supplicant/android.config b/wpa_supplicant/android.config index ffa2f01..e06c835 100644 --- a/wpa_supplicant/android.config +++ b/wpa_supplicant/android.config @@ -244,12 +244,10 @@ CONFIG_BACKEND=file CONFIG_OS=unix # Select event loop implementation -# eloop = select() loop (default) +# select = select() loop (default) +# poll = poll() loop # eloop_win = Windows events and WaitForMultipleObject() loop -CONFIG_ELOOP=eloop - -# Should we use poll instead of select? Select is used by default. -#CONFIG_ELOOP_POLL=y +CONFIG_ELOOP=select # Select layer 2 packet implementation # linux = Linux packet socket (default) diff --git a/wpa_supplicant/defconfig b/wpa_supplicant/defconfig index d194eb8..710c15c 100644 --- a/wpa_supplicant/defconfig +++ b/wpa_supplicant/defconfig @@ -260,12 +260,10 @@ CONFIG_BACKEND=file #CONFIG_OS=unix # Select event loop implementation -# eloop = select() loop (default) +# select = select() loop (default) +# poll = poll() loop # eloop_win = Windows events and WaitForMultipleObject() loop -#CONFIG_ELOOP=eloop - -# Should we use poll instead of select? Select is used by default. -#CONFIG_ELOOP_POLL=y +#CONFIG_ELOOP=select # Select layer 2 packet implementation # linux = Linux packet socket (default)