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