* [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID
@ 2012-10-12 16:26 Richard Henderson
2012-10-12 16:55 ` Paolo Bonzini
` (2 more replies)
0 siblings, 3 replies; 4+ messages in thread
From: Richard Henderson @ 2012-10-12 16:26 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori
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 <pbonzini@redhat.com>
Cc: Anthony Liguori <aliguori@us.ibm.com>
Signed-off-by: Richard Henderson <rth@twiddle.net>
---
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 <signal.h>
+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)) {
--
1.7.11.7
^ permalink raw reply related [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID
2012-10-12 16:26 [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID Richard Henderson
@ 2012-10-12 16:55 ` Paolo Bonzini
2012-10-21 21:03 ` Richard Henderson
2012-10-21 22:41 ` Aurelien Jarno
2 siblings, 0 replies; 4+ messages in thread
From: Paolo Bonzini @ 2012-10-12 16:55 UTC (permalink / raw)
To: qemu-devel
Il 12/10/2012 18:26, Richard Henderson ha scritto:
> 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 <pbonzini@redhat.com>
> Cc: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
> 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.
Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>
>
>
> 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 <signal.h>
> +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)) {
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID
2012-10-12 16:26 [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID Richard Henderson
2012-10-12 16:55 ` Paolo Bonzini
@ 2012-10-21 21:03 ` Richard Henderson
2012-10-21 22:41 ` Aurelien Jarno
2 siblings, 0 replies; 4+ messages in thread
From: Richard Henderson @ 2012-10-21 21:03 UTC (permalink / raw)
To: qemu-devel; +Cc: Paolo Bonzini, Anthony Liguori
Ping? It's been Reviewed-by...
r~
On 2012-10-13 02:26, Richard Henderson wrote:
> 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 <pbonzini@redhat.com>
> Cc: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
> 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 <signal.h>
> +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)) {
>
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID
2012-10-12 16:26 [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID Richard Henderson
2012-10-12 16:55 ` Paolo Bonzini
2012-10-21 21:03 ` Richard Henderson
@ 2012-10-21 22:41 ` Aurelien Jarno
2 siblings, 0 replies; 4+ messages in thread
From: Aurelien Jarno @ 2012-10-21 22:41 UTC (permalink / raw)
To: Richard Henderson; +Cc: Paolo Bonzini, Anthony Liguori, qemu-devel
On Fri, Oct 12, 2012 at 09:26:55AM -0700, Richard Henderson wrote:
> 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 <pbonzini@redhat.com>
> Cc: Anthony Liguori <aliguori@us.ibm.com>
> Signed-off-by: Richard Henderson <rth@twiddle.net>
> ---
> 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 <signal.h>
> +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)) {
Looks good on principle, but doesn't work for me. Running configure I
get:
| $./configure
| ERROR: configure test passed without -Werror but failed with -Werror.
| This is probably a bug in the configure script. The failing command
| will be at the bottom of config.log.
| You can run configure with --disable-werror to bypass this check.
| $
And config.log contains:
| /tmp/qemu-conf--6963-.c: In function ‘main’:
| /tmp/qemu-conf--6963-.c:3:19: error: variable ‘ev’ set but not used [-Werror=unused-but-set-variable]
| cc1: all warnings being treated as errors
--
Aurelien Jarno GPG: 1024D/F1BCDB73
aurelien@aurel32.net http://www.aurel32.net
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-10-21 22:41 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-10-12 16:26 [Qemu-devel] [PATCH] qemu-timer: Check for usable fields for SIGEV_THREAD_ID Richard Henderson
2012-10-12 16:55 ` Paolo Bonzini
2012-10-21 21:03 ` Richard Henderson
2012-10-21 22:41 ` Aurelien Jarno
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).