diff options
author | Warner Losh <imp@bsdimp.com> | 2021-09-19 01:11:43 -0600 |
---|---|---|
committer | Warner Losh <imp@bsdimp.com> | 2021-10-18 12:51:39 -0600 |
commit | 653ccec26dd3f9942ac258c43be0edb93e16dfba (patch) | |
tree | c0f27c4d94847f7b2257316f8cbb3c41fa03cdec /bsd-user | |
parent | 7aac7392346d1f5bb9fc31cb7e4f3f1f3fc2be05 (diff) |
bsd-user: Add stop_all_tasks
Similar to the same function in linux-user: this stops all the current tasks.
Signed-off-by: Stacey Son <sson@FreeBSD.org>
Signed-off-by: Warner Losh <imp@bsdimp.com>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Kyle Evans <kevans@FreeBSD.org>
Diffstat (limited to 'bsd-user')
-rw-r--r-- | bsd-user/main.c | 9 | ||||
-rw-r--r-- | bsd-user/qemu.h | 1 |
2 files changed, 10 insertions, 0 deletions
diff --git a/bsd-user/main.c b/bsd-user/main.c index ee84554854..cb5ea40236 100644 --- a/bsd-user/main.c +++ b/bsd-user/main.c @@ -195,6 +195,15 @@ static void usage(void) __thread CPUState *thread_cpu; +void stop_all_tasks(void) +{ + /* + * We trust when using NPTL (pthreads) start_exclusive() handles thread + * stopping correctly. + */ + start_exclusive(); +} + bool qemu_cpu_is_self(CPUState *cpu) { return thread_cpu == cpu; diff --git a/bsd-user/qemu.h b/bsd-user/qemu.h index c1170f14d9..cdb85140f4 100644 --- a/bsd-user/qemu.h +++ b/bsd-user/qemu.h @@ -103,6 +103,7 @@ typedef struct TaskState { } __attribute__((aligned(16))) TaskState; void init_task_state(TaskState *ts); +void stop_all_tasks(void); extern const char *qemu_uname_release; /* |