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

iothread.h (1787B)


      1/*
      2 * Event loop thread
      3 *
      4 * Copyright Red Hat Inc., 2013
      5 *
      6 * Authors:
      7 *  Stefan Hajnoczi   <stefanha@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 IOTHREAD_H
     15#define IOTHREAD_H
     16
     17#include "block/aio.h"
     18#include "qemu/thread.h"
     19#include "qom/object.h"
     20
     21#define TYPE_IOTHREAD "iothread"
     22
     23struct IOThread {
     24    Object parent_obj;
     25
     26    QemuThread thread;
     27    AioContext *ctx;
     28    bool run_gcontext;          /* whether we should run gcontext */
     29    GMainContext *worker_context;
     30    GMainLoop *main_loop;
     31    QemuSemaphore init_done_sem; /* is thread init done? */
     32    bool stopping;              /* has iothread_stop() been called? */
     33    bool running;               /* should iothread_run() continue? */
     34    int thread_id;
     35
     36    /* AioContext poll parameters */
     37    int64_t poll_max_ns;
     38    int64_t poll_grow;
     39    int64_t poll_shrink;
     40
     41    /* AioContext AIO engine parameters */
     42    int64_t aio_max_batch;
     43};
     44typedef struct IOThread IOThread;
     45
     46DECLARE_INSTANCE_CHECKER(IOThread, IOTHREAD,
     47                         TYPE_IOTHREAD)
     48
     49char *iothread_get_id(IOThread *iothread);
     50IOThread *iothread_by_id(const char *id);
     51AioContext *iothread_get_aio_context(IOThread *iothread);
     52GMainContext *iothread_get_g_main_context(IOThread *iothread);
     53
     54/*
     55 * Helpers used to allocate iothreads for internal use.  These
     56 * iothreads will not be seen by monitor clients when query using
     57 * "query-iothreads".
     58 */
     59IOThread *iothread_create(const char *id, Error **errp);
     60void iothread_stop(IOThread *iothread);
     61void iothread_destroy(IOThread *iothread);
     62
     63/*
     64 * Returns true if executing withing IOThread context,
     65 * false otherwise.
     66 */
     67bool qemu_in_iothread(void);
     68
     69#endif /* IOTHREAD_H */