| /* |
| * Copyright 2021 Google LLC |
| * SPDX-License-Identifier: MIT |
| */ |
| |
| #ifndef RENDER_WORKER_H |
| #define RENDER_WORKER_H |
| |
| #include "render_common.h" |
| |
| enum render_worker_jail_seccomp_filter { |
| /* seccomp_path is ignored and seccomp is disabled */ |
| RENDER_WORKER_JAIL_SECCOMP_NONE, |
| /* seccomp_path is a file containing a BPF program */ |
| RENDER_WORKER_JAIL_SECCOMP_BPF, |
| /* seccomp_path is a file containing a minijail policy */ |
| RENDER_WORKER_JAIL_SECCOMP_MINIJAIL_POLICY, |
| RENDER_WORKER_JAIL_SECCOMP_MINIJAIL_POLICY_LOG, |
| }; |
| |
| struct render_worker_jail * |
| render_worker_jail_create(int max_worker_count, |
| enum render_worker_jail_seccomp_filter seccomp_filter, |
| const char *seccomp_path); |
| |
| void |
| render_worker_jail_destroy(struct render_worker_jail *jail); |
| |
| int |
| render_worker_jail_get_sigchld_fd(const struct render_worker_jail *jail); |
| |
| bool |
| render_worker_jail_reap_workers(struct render_worker_jail *jail); |
| |
| void |
| render_worker_jail_detach_workers(struct render_worker_jail *jail); |
| |
| struct render_worker * |
| render_worker_create(struct render_worker_jail *jail, |
| int (*thread_func)(void *thread_data), |
| void *thread_data, |
| size_t thread_data_size); |
| |
| void |
| render_worker_destroy(struct render_worker_jail *jail, struct render_worker *worker); |
| |
| bool |
| render_worker_is_record(const struct render_worker *worker); |
| |
| #endif /* RENDER_WORKER_H */ |