adding Irix (and, to a lesser extent, Solaris) userland emulation to QEMU
Go to file
Alexander Graf 09716e45a0 sigfd: use pthread_sigmask
Qemu uses signalfd to figure out, if a signal occured without the need
to actually receive the signal. Instead, it can read from the fd to receive
its news.

Now, we obviously don't always have signalfd around. Especially not on
non-Linux systems. So what we do there is that we create a new thread,
block that thread on all signals and simply call sigwait to wait for a
signal we're interested in to occur.

This all sounds great, but what we're really doing is:

    sigset_t all;

    sigfillset(&all);
    sigprocmask(SIG_BLOCK, &all, NULL);

which - on Darwin - blocks all signals on the current _process_, not only
on the current thread. To block signals on the thread, we can use
pthread_sigmask().

This patch does that, assuming that my above analysis is correct, and thus
renders Qemu useable on Darwin again.

Reported-by: Andreas Färber <andreas.faerber@web.de>
Acked-by: Paolo Bonizni <pbonzini@redhat.com>
CC: Jan Kiszka <jan.kiszka@siemens.com>
CC: Anthony Liguori <anthony@codemonkey.ws>
Signed-off-by: Alexander Graf <agraf@suse.de>
Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
2011-06-10 23:18:19 +02:00
QMP QMP: add server mode to QEMUMonitorProtocol 2011-06-01 11:43:18 -03:00
audio Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
block Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2011-06-08 12:13:58 -05:00
bsd-user Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
darwin-user Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
default-configs target-alpha: Enable the alpha-softmmu target. 2011-05-31 10:18:05 -07:00
docs docs: qdev-device-use.txt has become stale, update it 2011-06-07 13:52:10 -05:00
fpu softfloat: add float*_is_zero_or_denormal() 2011-06-03 16:07:53 +02:00
fsdev fsdev: Fix archs that dont use fsdev 2011-06-10 15:29:11 +02:00
gdb-xml
hw Merge remote branch 'rth/axp-next' into alpha-merge 2011-06-10 22:21:14 +02:00
libcacard libcacard: add correct subdirectory dependencies 2011-05-08 11:44:47 +01:00
linux-user Merge remote branch 'rth/axp-next' into alpha-merge 2011-06-10 22:21:14 +02:00
net slirp: fix guestfwd id 2011-06-08 09:04:29 +01:00
pc-bios s390x: update zipl rom 2011-06-03 13:34:01 +02:00
roms Revert SeaBIOS change due to overzealous commit -a 2011-04-13 08:16:53 -05:00
scripts s390x: s390x-linux-user support 2011-05-20 17:35:12 +02:00
slirp
sysconfigs/target
target-alpha target-alpha: Implement TLB flush primitives. 2011-05-31 10:18:06 -07:00
target-arm target-arm: BKPT instructions should raise prefetch aborts with IFSR type 00010 2011-06-03 18:42:17 +02:00
target-cris Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2011-05-12 08:08:12 -05:00
target-i386 target-i386: Make x86 mfence and lfence illegal without SSE2 2011-06-08 09:04:29 +01:00
target-lm32 target-lm32: Remove unused local variables 2011-05-15 00:27:59 +02:00
target-m68k m68k: Replace gen_im32() by tcg_const_i32() 2011-06-08 09:04:29 +01:00
target-microblaze Merge remote-tracking branch 'stefanha/trivial-patches' into staging 2011-05-12 08:08:12 -05:00
target-mips target-mips: Fix warning caused by unused local variable 2011-05-15 01:00:20 +02:00
target-ppc Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
target-s390x s390x: implement lrvgr 2011-06-03 13:34:02 +02:00
target-sh4 Remove unused function parameter from cpu_restore_state 2011-04-20 10:37:03 +02:00
target-sparc Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
target-unicore32 Remove unused function parameters from gen_pc_load and rename the function 2011-04-20 10:33:59 +02:00
tcg tcg: Fix unused-but-set-variable warning 2011-06-03 18:32:46 +02:00
tests Fix spelling in comments (intruction -> instruction) 2011-05-08 10:59:15 +01:00
ui Merge remote-tracking branch 'spice/spice.v37' into staging 2011-06-08 12:15:11 -05:00
.gitignore Makefile: Clean up after "make pdf" 2011-04-16 12:24:28 +01:00
.gitmodules Add ipxe submodule 2011-04-08 13:03:34 -06:00
CODING_STYLE
COPYING
COPYING.LIB
Changelog Fix typos in comments (dependancy -> dependency) 2011-05-08 10:02:16 +01:00
HACKING
LICENSE
MAINTAINERS target-alpha: Claim ownership. 2011-05-31 10:18:04 -07:00
Makefile json-parser: propagate error from parser 2011-06-07 13:52:10 -05:00
Makefile.dis
Makefile.hw
Makefile.objs Merge remote-tracking branch 'jvrao/for-anthony' into staging 2011-06-08 12:15:43 -05:00
Makefile.target Merge remote branch 'rth/axp-next' into alpha-merge 2011-06-10 22:21:14 +02:00
Makefile.user
README
TODO
VERSION
a.out.h
acl.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
acl.h
aes.c
aes.h
aio.c
alpha-dis.c target-alpha: Disassemble EV6 PALcode instructions. 2011-05-31 10:18:04 -07:00
alpha.ld
arch_init.c Introduce -machine command option. 2011-05-08 10:09:59 +02:00
arch_init.h Introduce -machine command option. 2011-05-08 10:09:59 +02:00
arm-dis.c
arm-semi.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
arm.ld
async.c
balloon.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
balloon.h
bitmap.c
bitmap.h
bitops.c
bitops.h
block-migration.c Improve accuracy of block migration bandwidth calculation 2011-04-27 14:36:57 +02:00
block-migration.h
block.c bdrv_img_create: Fix segfault 2011-06-08 11:56:40 +02:00
block.h block: Remove type hint, it's guest matter, doesn't belong here 2011-05-19 10:26:23 +02:00
block_int.h block: Remove type hint, it's guest matter, doesn't belong here 2011-05-19 10:26:23 +02:00
blockdev.c block: clarify the meaning of BDRV_O_NOCACHE 2011-06-08 10:39:32 +02:00
blockdev.h blockdev: Store -drive option media in DriveInfo 2011-05-19 10:26:21 +02:00
bswap.h
bt-host.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
bt-host.h
bt-vhci.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
buffered_file.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
buffered_file.h
cache-utils.c
cache-utils.h
check-qdict.c
check-qfloat.c
check-qint.c
check-qjson.c
check-qlist.c
check-qstring.c
cmd.c
cmd.h
compatfd.c sigfd: use pthread_sigmask 2011-06-10 23:18:19 +02:00
compatfd.h
config.h
configure Merge remote branch 'rth/axp-next' into alpha-merge 2011-06-10 22:21:14 +02:00
console.c Fix segfault on screendump with -nographic 2011-06-03 12:42:19 +02:00
console.h
cpu-all.h softfloat: always enable floatx80 and float128 support 2011-06-03 16:07:51 +02:00
cpu-common.h exec: Implement qemu_ram_free_from_ptr() 2011-06-03 22:59:15 +02:00
cpu-defs.h
cpu-exec.c target-alpha: Disable interrupts properly. 2011-05-31 10:18:05 -07:00
cpus.c qemu_next_deadline should not consider host-time timers 2011-04-15 09:27:56 +02:00
cpus.h Move CPU related functions to cpus.h 2011-04-15 20:14:52 +00:00
cris-dis.c
cursor.c
cursor_hidden.xpm
cursor_left_ptr.xpm
cutils.c
def-helper.h
device_tree.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
device_tree.h
dis-asm.h target-alpha: Disassemble EV6 PALcode instructions. 2011-05-31 10:18:04 -07:00
disas.c target-alpha: Disassemble EV6 PALcode instructions. 2011-05-31 10:18:04 -07:00
disas.h
dma-helpers.c
dma.h
dyngen-exec.h
elf.h unicore32: necessary modifications for other files to support unicore32 2011-04-12 18:49:05 +00:00
envlist.c
envlist.h
error.c Introduce the new error framework 2011-06-07 13:52:10 -05:00
error.h Introduce the new error framework 2011-06-07 13:52:10 -05:00
error_int.h Introduce the new error framework 2011-06-07 13:52:10 -05:00
exec-all.h target-alpha: Trap for unassigned and unaligned addresses. 2011-05-31 10:18:06 -07:00
exec.c Merge remote branch 'rth/axp-next' into alpha-merge 2011-06-10 22:21:14 +02:00
gdbstub.c target-mips/gdbstub: remove old CONFIG_SOFTFLOAT #ifndef 2011-06-03 16:07:49 +02:00
gdbstub.h
gen-icount.h Fix conversions from pointer to tcg_target_long 2011-04-10 00:45:16 +02:00
hmp-commands.hx HMP: Use QMP inject nmi implementation 2011-06-01 11:42:25 -03:00
host-utils.c
host-utils.h
hpet.h
hppa-dis.c Fix typo in comment (relevent -> relevant) 2011-05-08 10:02:18 +01:00
hppa.ld
i386-dis.c
i386.ld
ia64-dis.c
ia64.ld
input.c event: trivial coding style fixes 2011-04-09 10:56:17 +01:00
iohandler.c
ioport-user.c
ioport.c
ioport.h
iorange.h
iov.c
iov.h
json-lexer.c json-lexer: make lexer error-recovery more deterministic 2011-06-07 13:52:11 -05:00
json-lexer.h json-lexer: make lexer error-recovery more deterministic 2011-06-07 13:52:11 -05:00
json-parser.c json-parser: add handling for NULL token list 2011-06-07 13:52:11 -05:00
json-parser.h json-parser: propagate error from parser 2011-06-07 13:52:10 -05:00
json-streamer.c json-streamer: add handling for JSON_ERROR token/state 2011-06-07 13:52:11 -05:00
json-streamer.h json-streamer: make sure to reset token_size after emitting a token list 2011-06-07 13:52:11 -05:00
kvm-all.c kvm: ppc: warn user on PAGE_SIZE mismatch 2011-05-09 22:31:38 +02:00
kvm-stub.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
kvm.h
libfdt_env.h
linux-aio.c
m68k-dis.c
m68k-semi.c
m68k.ld
microblaze-dis.c
migration-exec.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
migration-fd.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
migration-tcp.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
migration-unix.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
migration.c
migration.h migration: move some declarations to migration.h 2011-04-15 20:14:54 +00:00
mips-dis.c
mips.ld
module.c
module.h
monitor.c HMP: Use QMP inject nmi implementation 2011-06-01 11:42:25 -03:00
monitor.h
nbd.c NBD: Use qemu_socket functions to open TCP and UNIX sockets 2011-04-07 13:51:48 +02:00
nbd.h NBD: Use qemu_socket functions to open TCP and UNIX sockets 2011-04-07 13:51:48 +02:00
net.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
net.h
notify.c
notify.h
os-posix.c
os-win32.c
osdep.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
osdep.h
oslib-posix.c
oslib-win32.c
path.c
pci-ids.txt
pflib.c
pflib.h
poison.h irq: Privatize CPU_INTERRUPT_NMI. 2011-05-08 16:55:24 +00:00
posix-aio-compat.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
ppc-dis.c
ppc.ld
ppc64.ld
qbool.c
qbool.h
qdict-test-data.txt
qdict.c
qdict.h
qemu-aio.h
qemu-barrier.h
qemu-char.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
qemu-char.h char: Allow devices to use a single multiplexed chardev. 2011-04-28 11:03:07 +05:30
qemu-common.h Fix compilation warning due to missing header for sigaction 2011-06-08 09:04:29 +01:00
qemu-config.c qemu-config: comment spell fix 2011-06-06 09:14:42 +02:00
qemu-config.h
qemu-doc.texi doc: Add explanation that -alt-grab and -ctrl-grab affect special keys 2011-05-15 00:13:48 +02:00
qemu-error.c Remove unused sysemu.h include directives 2011-04-15 18:25:41 +00:00
qemu-error.h
qemu-img-cmds.hx qemu-img: Initial progress printing support 2011-04-07 13:51:47 +02:00
qemu-img.c qemu_img: is_not_zero() optimization 2011-05-18 14:39:15 +02:00
qemu-img.texi
qemu-io.c block: clarify the meaning of BDRV_O_NOCACHE 2011-06-08 10:39:32 +02:00
qemu-lock.h
qemu-log.h
qemu-malloc.c
qemu-nbd.c block: clarify the meaning of BDRV_O_NOCACHE 2011-06-08 10:39:32 +02:00
qemu-nbd.texi
qemu-objects.h
qemu-option.c
qemu-option.h
qemu-options.h
qemu-options.hx spice: add SASL support 2011-06-06 09:14:42 +02:00
qemu-os-posix.h
qemu-os-win32.h w32: Fix missing declaration of ffs() 2011-05-15 12:34:39 +02:00
qemu-progress.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
qemu-queue.h
qemu-sockets.c Set errno=ENOTSUP for attempts to use UNIX sockets on Windows platforms 2011-04-07 13:51:48 +02:00
qemu-tech.texi
qemu-thread-posix.c
qemu-thread-posix.h
qemu-thread-win32.c
qemu-thread-win32.h
qemu-thread.h
qemu-timer-common.c
qemu-timer.c timer: drop HPET and RTC 2011-06-06 08:54:55 -05:00
qemu-timer.h qemu-timer: Remove unneeded include statement (w32) 2011-04-27 13:30:18 +02:00
qemu-tool.c qemu-tool: Stub out qemu-timer functions 2011-05-18 14:38:46 +02:00
qemu-x509.h
qemu.sasl
qemu_socket.h
qerror.c Merge remote-tracking branch 'qmp/for-anthony' into staging 2011-06-08 12:16:24 -05:00
qerror.h Merge remote-tracking branch 'qmp/for-anthony' into staging 2011-06-08 12:16:24 -05:00
qfloat.c
qfloat.h
qint.c
qint.h
qjson.c
qjson.h
qlist.c
qlist.h
qmp-commands.hx HMP: Use QMP inject nmi implementation 2011-06-01 11:42:25 -03:00
qobject.h
qstring.c
qstring.h
range.h
readline.c
readline.h
rules.mak
rwhandler.c
rwhandler.h
s390-dis.c
s390.ld
savevm.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
sh4-dis.c
simpletrace.c
simpletrace.h
softmmu-semi.h
softmmu_defs.h
softmmu_exec.h
softmmu_header.h
softmmu_template.h
sparc-dis.c
sparc.ld
sparc64.ld
spice-qemu-char.c spice-qemu-char: Fix flow control in client -> guest direction 2011-06-06 09:14:42 +02:00
sysemu.h vl.c: Introduce getter for shutdown_requested and reset_requested. 2011-05-08 10:10:01 +02:00
targphys.h
tcg-runtime.c
thunk.c
thunk.h
trace-events scsi: fix tracing of scsi requests with simple backend 2011-06-05 15:05:35 +00:00
translate-all.c Remove unused function parameter from cpu_restore_state 2011-04-20 10:37:03 +02:00
uboot_image.h
usb-bsd.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
usb-linux.c Fix compilation warning due to missing header for sigaction (followup) 2011-06-08 09:04:29 +01:00
usb-stub.c
user-exec.c Move user emulator stuff from cpu-exec.c to user-exec.c 2011-05-28 06:26:00 +00:00
version.rc
vgafont.h
vl.c Merge remote-tracking branch 'spice/spice.v37' into staging 2011-06-08 12:15:11 -05:00
x86_64.ld
xen-all.c xen: Add Xen hypercall for sleep state in the cmos_s3 callback. 2011-05-08 10:10:02 +02:00
xen-mapcache-stub.c xen: Introduce the Xen mapcache 2011-05-08 10:10:01 +02:00
xen-mapcache.c Introduce qemu_put_ram_ptr 2011-05-08 10:10:01 +02:00
xen-mapcache.h xen: Introduce the Xen mapcache 2011-05-08 10:10:01 +02:00
xen-stub.c xen: Add Xen hypercall for sleep state in the cmos_s3 callback. 2011-05-08 10:10:02 +02:00

README

Read the documentation in qemu-doc.html.

Fabrice Bellard.