|
|
|
/*
|
|
|
|
* 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 */
|