Commit c9db92fc authored by Blue Swirl's avatar Blue Swirl
Browse files

Use kill instead of sigqueue: re-enables AIO on OpenBSD

git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@6360 c046a42c-6fe2-441c-8c8c-71466251a162
parent 63c75dcd
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -579,8 +579,7 @@ static RawAIOCB *raw_aio_setup(BlockDriverState *bs,
    if (!acb)
        return NULL;
    acb->aiocb.aio_fildes = s->fd;
    acb->aiocb.aio_sigevent.sigev_signo = SIGUSR2;
    acb->aiocb.aio_sigevent.sigev_notify = SIGEV_SIGNAL;
    acb->aiocb.sigev_signo = SIGUSR2;
    acb->aiocb.aio_buf = buf;
    if (nb_sectors < 0)
        acb->aiocb.aio_nbytes = -nb_sectors;
+1 −3
Original line number Diff line number Diff line
@@ -1005,9 +1005,7 @@ if test "$aio" = "yes" ; then
  aio=no
  cat > $TMPC << EOF
#include <pthread.h>
#include <signal.h>
int main(void) { struct sigevent s; pthread_mutex_t lock;
    return sigqueue(0, 0, s.sigev_value); }
int main(void) { pthread_mutex_t lock;  return 0; }
EOF
  if $cc $ARCH_CFLAGS -o $TMPE $AIOLIBS $TMPC 2> /dev/null ; then
    aio=yes
+1 −3
Original line number Diff line number Diff line
@@ -94,9 +94,7 @@ static void *aio_thread(void *unused)
        idle_threads++;
        pthread_mutex_unlock(&lock);

        sigqueue(getpid(),
                 aiocb->aio_sigevent.sigev_signo,
                 aiocb->aio_sigevent.sigev_value);
        kill(getpid(), aiocb->sigev_signo);
    }

    idle_threads--;
+1 −1
Original line number Diff line number Diff line
@@ -29,7 +29,7 @@ struct qemu_paiocb
    int aio_fildes;
    void *aio_buf;
    size_t aio_nbytes;
    struct sigevent aio_sigevent;
    int sigev_signo;
    off_t aio_offset;

    /* private */