cachepc-qemu

Fork of AMDESE/qemu with changes for cachepc side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-qemu
Log | Files | Refs | Submodules | LICENSE | sfeed.txt

futex.h (894B)


      1/*
      2 * Wrappers around Linux futex syscall
      3 *
      4 * Copyright Red Hat, Inc. 2017
      5 *
      6 * Author:
      7 *  Paolo Bonzini <pbonzini@redhat.com>
      8 *
      9 * This work is licensed under the terms of the GNU GPL, version 2 or later.
     10 * See the COPYING file in the top-level directory.
     11 *
     12 */
     13
     14#ifndef QEMU_FUTEX_H
     15#define QEMU_FUTEX_H
     16
     17#include <sys/syscall.h>
     18#include <linux/futex.h>
     19
     20#define qemu_futex(...)              syscall(__NR_futex, __VA_ARGS__)
     21
     22static inline void qemu_futex_wake(void *f, int n)
     23{
     24    qemu_futex(f, FUTEX_WAKE, n, NULL, NULL, 0);
     25}
     26
     27static inline void qemu_futex_wait(void *f, unsigned val)
     28{
     29    while (qemu_futex(f, FUTEX_WAIT, (int) val, NULL, NULL, 0)) {
     30        switch (errno) {
     31        case EWOULDBLOCK:
     32            return;
     33        case EINTR:
     34            break; /* get out of switch and retry */
     35        default:
     36            abort();
     37        }
     38    }
     39}
     40
     41#endif /* QEMU_FUTEX_H */