xref: /aosp_15_r20/external/virglrenderer/server/render_worker.h (revision bbecb9d118dfdb95f99bd754f8fa9be01f189df3)
1*bbecb9d1SAndroid Build Coastguard Worker /*
2*bbecb9d1SAndroid Build Coastguard Worker  * Copyright 2021 Google LLC
3*bbecb9d1SAndroid Build Coastguard Worker  * SPDX-License-Identifier: MIT
4*bbecb9d1SAndroid Build Coastguard Worker  */
5*bbecb9d1SAndroid Build Coastguard Worker 
6*bbecb9d1SAndroid Build Coastguard Worker #ifndef RENDER_WORKER_H
7*bbecb9d1SAndroid Build Coastguard Worker #define RENDER_WORKER_H
8*bbecb9d1SAndroid Build Coastguard Worker 
9*bbecb9d1SAndroid Build Coastguard Worker #include "render_common.h"
10*bbecb9d1SAndroid Build Coastguard Worker 
11*bbecb9d1SAndroid Build Coastguard Worker enum render_worker_jail_seccomp_filter {
12*bbecb9d1SAndroid Build Coastguard Worker    /* seccomp_path is ignored and seccomp is disabled */
13*bbecb9d1SAndroid Build Coastguard Worker    RENDER_WORKER_JAIL_SECCOMP_NONE,
14*bbecb9d1SAndroid Build Coastguard Worker    /* seccomp_path is a file containing a BPF program */
15*bbecb9d1SAndroid Build Coastguard Worker    RENDER_WORKER_JAIL_SECCOMP_BPF,
16*bbecb9d1SAndroid Build Coastguard Worker    /* seccomp_path is a file containing a minijail policy */
17*bbecb9d1SAndroid Build Coastguard Worker    RENDER_WORKER_JAIL_SECCOMP_MINIJAIL_POLICY,
18*bbecb9d1SAndroid Build Coastguard Worker    RENDER_WORKER_JAIL_SECCOMP_MINIJAIL_POLICY_LOG,
19*bbecb9d1SAndroid Build Coastguard Worker };
20*bbecb9d1SAndroid Build Coastguard Worker 
21*bbecb9d1SAndroid Build Coastguard Worker struct render_worker_jail *
22*bbecb9d1SAndroid Build Coastguard Worker render_worker_jail_create(int max_worker_count,
23*bbecb9d1SAndroid Build Coastguard Worker                           enum render_worker_jail_seccomp_filter seccomp_filter,
24*bbecb9d1SAndroid Build Coastguard Worker                           const char *seccomp_path);
25*bbecb9d1SAndroid Build Coastguard Worker 
26*bbecb9d1SAndroid Build Coastguard Worker void
27*bbecb9d1SAndroid Build Coastguard Worker render_worker_jail_destroy(struct render_worker_jail *jail);
28*bbecb9d1SAndroid Build Coastguard Worker 
29*bbecb9d1SAndroid Build Coastguard Worker int
30*bbecb9d1SAndroid Build Coastguard Worker render_worker_jail_get_sigchld_fd(const struct render_worker_jail *jail);
31*bbecb9d1SAndroid Build Coastguard Worker 
32*bbecb9d1SAndroid Build Coastguard Worker bool
33*bbecb9d1SAndroid Build Coastguard Worker render_worker_jail_reap_workers(struct render_worker_jail *jail);
34*bbecb9d1SAndroid Build Coastguard Worker 
35*bbecb9d1SAndroid Build Coastguard Worker void
36*bbecb9d1SAndroid Build Coastguard Worker render_worker_jail_detach_workers(struct render_worker_jail *jail);
37*bbecb9d1SAndroid Build Coastguard Worker 
38*bbecb9d1SAndroid Build Coastguard Worker struct render_worker *
39*bbecb9d1SAndroid Build Coastguard Worker render_worker_create(struct render_worker_jail *jail,
40*bbecb9d1SAndroid Build Coastguard Worker                      int (*thread_func)(void *thread_data),
41*bbecb9d1SAndroid Build Coastguard Worker                      void *thread_data,
42*bbecb9d1SAndroid Build Coastguard Worker                      size_t thread_data_size);
43*bbecb9d1SAndroid Build Coastguard Worker 
44*bbecb9d1SAndroid Build Coastguard Worker void
45*bbecb9d1SAndroid Build Coastguard Worker render_worker_destroy(struct render_worker_jail *jail, struct render_worker *worker);
46*bbecb9d1SAndroid Build Coastguard Worker 
47*bbecb9d1SAndroid Build Coastguard Worker bool
48*bbecb9d1SAndroid Build Coastguard Worker render_worker_is_record(const struct render_worker *worker);
49*bbecb9d1SAndroid Build Coastguard Worker 
50*bbecb9d1SAndroid Build Coastguard Worker #endif /* RENDER_WORKER_H */
51