From patchwork Fri Oct 12 16:26:55 2012 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Richard Henderson X-Patchwork-Id: 191155 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 94DF82C0093 for ; Sat, 13 Oct 2012 03:27:19 +1100 (EST) Received: from localhost ([::1]:38942 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMi4z-0005ck-AJ for incoming@patchwork.ozlabs.org; Fri, 12 Oct 2012 12:27:17 -0400 Received: from eggs.gnu.org ([208.118.235.92]:57250) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMi4n-0005bx-32 for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:27:09 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1TMi4l-0005V8-NU for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:27:04 -0400 Received: from mail-pa0-f45.google.com ([209.85.220.45]:33632) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1TMi4l-0005V2-G4 for qemu-devel@nongnu.org; Fri, 12 Oct 2012 12:27:03 -0400 Received: by mail-pa0-f45.google.com with SMTP id fb10so2919396pad.4 for ; Fri, 12 Oct 2012 09:27:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:date:message-id:x-mailer; bh=TPa+fKKHP86labi/563CXEe1H0qk6MstmyYWN9xjEN4=; b=DI/V41j8YMa3jBlpSvYH3YxQYFmM3TeyfX0lNVJlKRhmjhuZQE9L5YT3f37CmftLjq qfigaDyU+UeOJgfeIP8Qt/VacqiKUsgLrF87sauV1NNTbiumfi8v/JxjF7pO63VH2cRH Td7QxiNHip5yxATYhVZaPNpXxE0jWe/dgNW+XTNResMYES6yNW3RFpNCvjBm9ICJFMw+ Fkb7zcB6LmXJkewP7WNyeEMaapdRAnUBAY1uZnpdflL3BYh9fjV+dJDQlBJfqda3oBjK r6eYI+5pRQOFD1H7LA7zY+8lusqMcFN4cd4crjvOqYqYYu9YcBUzp9cH8Cjpkxxi6uwF MRTw== Received: by 10.66.87.105 with SMTP id w9mr12705871paz.5.1350059222432; Fri, 12 Oct 2012 09:27:02 -0700 (PDT) Received: from anchor.twiddle.home.com (50-194-63-110-static.hfc.comcastbusiness.net. [50.194.63.110]) by mx.google.com with ESMTPS id ky5sm1420159pbc.40.2012.10.12.09.27.00 (version=TLSv1/SSLv3 cipher=OTHER); Fri, 12 Oct 2012 09:27:01 -0700 (PDT) From: Richard Henderson To: qemu-devel@nongnu.org Date: Fri, 12 Oct 2012 09:26:55 -0700 Message-Id: <1350059215-7827-1-git-send-email-rth@twiddle.net> X-Mailer: git-send-email 1.7.11.7 X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.220.45 Cc: Paolo Bonzini , Anthony Liguori Subject: [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Older glibc (RHEL 5.x, Debian 5.x) does not have the _sigev_un._tid member in its structure definition, while the accompanying kernel headers do define SIGEV_THREAD_ID. We need configure to check for both before using it. Cc: Paolo Bonzini Cc: Anthony Liguori Signed-off-by: Richard Henderson Reviewed-by: Paolo Bonzini --- configure | 21 +++++++++++++++++++++ qemu-timer.c | 4 ++-- 2 files changed, 23 insertions(+), 2 deletions(-) FWIW, RHEL 5 is the last release for ia64. And for whatever reason, the ultrasparc in the gcc compile farm is still running Lenny. I've been hacking around this for some time, and now finally got around to submitting a proper patch for it. r~ diff --git a/configure b/configure index c4a7837..78d8819 100755 --- a/configure +++ b/configure @@ -2841,6 +2841,23 @@ if compile_prog "" "" ; then fi ########################################## +# check if we have usable SIGEV_THREAD_ID + +sigev_thread_id=no +cat > $TMPC << EOF +#include +int main(void) { + struct sigevent ev; + ev.sigev_notify = SIGEV_THREAD_ID; + ev._sigev_un._tid = 0; + return 0; +} +EOF +if compile_prog "" "" ; then + sigev_thread_id=yes +fi + +########################################## # check if trace backend exists $python "$source_path/scripts/tracetool.py" "--backend=$trace_backend" --check-backend > /dev/null 2> /dev/null @@ -3186,6 +3203,7 @@ echo "preadv support $preadv" echo "fdatasync $fdatasync" echo "madvise $madvise" echo "posix_madvise $posix_madvise" +echo "sigev_thread_id $sigev_thread_id" echo "uuid support $uuid" echo "libcap-ng support $cap_ng" echo "vhost-net support $vhost_net" @@ -3469,6 +3487,9 @@ fi if test "$posix_madvise" = "yes" ; then echo "CONFIG_POSIX_MADVISE=y" >> $config_host_mak fi +if test "$sigev_thread_id" = "yes" ; then + echo "CONFIG_SIGEV_THREAD_ID=y" >> $config_host_mak +fi if test "$spice" = "yes" ; then echo "CONFIG_SPICE=y" >> $config_host_mak diff --git a/qemu-timer.c b/qemu-timer.c index 908a103..ede84ff 100644 --- a/qemu-timer.c +++ b/qemu-timer.c @@ -494,12 +494,12 @@ static int dynticks_start_timer(struct qemu_alarm_timer *t) memset(&ev, 0, sizeof(ev)); ev.sigev_value.sival_int = 0; ev.sigev_notify = SIGEV_SIGNAL; -#ifdef SIGEV_THREAD_ID +#ifdef CONFIG_SIGEV_THREAD_ID if (qemu_signalfd_available()) { ev.sigev_notify = SIGEV_THREAD_ID; ev._sigev_un._tid = qemu_get_thread_id(); } -#endif /* SIGEV_THREAD_ID */ +#endif /* CONFIG_SIGEV_THREAD_ID */ ev.sigev_signo = SIGALRM; if (timer_create(CLOCK_REALTIME, &ev, &host_timer)) {