]> git.proxmox.com Git - mirror_qemu.git/blame - include/qemu/thread-context.h
util/uri: Remove uri_string_unescape()
[mirror_qemu.git] / include / qemu / thread-context.h
CommitLineData
e2de2c49
DH
1/*
2 * QEMU Thread Context
3 *
4 * Copyright Red Hat Inc., 2022
5 *
6 * Authors:
7 * David Hildenbrand <david@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#ifndef SYSEMU_THREAD_CONTEXT_H
14#define SYSEMU_THREAD_CONTEXT_H
15
16#include "qapi/qapi-types-machine.h"
17#include "qemu/thread.h"
18#include "qom/object.h"
19
20#define TYPE_THREAD_CONTEXT "thread-context"
21OBJECT_DECLARE_TYPE(ThreadContext, ThreadContextClass,
22 THREAD_CONTEXT)
23
24struct ThreadContextClass {
25 ObjectClass parent_class;
26};
27
28struct ThreadContext {
29 /* private */
30 Object parent;
31
32 /* private */
33 unsigned int thread_id;
34 QemuThread thread;
35
36 /* Semaphore to wait for context thread action. */
37 QemuSemaphore sem;
38 /* Semaphore to wait for action in context thread. */
39 QemuSemaphore sem_thread;
40 /* Mutex to synchronize requests. */
41 QemuMutex mutex;
42
43 /* Commands for the thread to execute. */
44 int thread_cmd;
45 void *thread_cmd_data;
46
47 /* CPU affinity bitmap used for initialization. */
48 unsigned long *init_cpu_bitmap;
49 int init_cpu_nbits;
50};
51
52void thread_context_create_thread(ThreadContext *tc, QemuThread *thread,
53 const char *name,
54 void *(*start_routine)(void *), void *arg,
55 int mode);
56
57#endif /* SYSEMU_THREAD_CONTEXT_H */