static int parent_count;
static int job_request_fd[2];
static int job_get_permission_fd[2];
+static int epoll_fd;
static unsigned int max_jobs;
static unsigned int job_count;
static unsigned int jobs_pending;
if (ret)
return ret;
+ epoll_fd = epoll_create(1);
+ if (epoll_fd == -1) {
+ pr_err("Failed to epoll_create(): %m\n");
+ return -1;
+ }
+
+ ev.events = EPOLLIN;
+ ev.data.fd = job_request_fd[0];
+ ret = epoll_ctl(epoll_fd, EPOLL_CTL_ADD, job_request_fd[0], &ev);
+ if (ret) {
+ pr_err("Failed to add epoll_fd: %m\n");
+ return -1;
+ }
+
if (max_jobs_requested > 0) {
max_jobs = max_jobs_requested;
goto no_count_cpus;
int poll_job_requests(int timeout)
{
struct epoll_event event;
- static int epollfd;
int ret;
int pid;
- if (!epollfd) {
- struct epoll_event ev;
-
- epollfd = epoll_create(1);
- if (epollfd == -1) {
- pr_err("Failed to epoll_create(): %m\n");
- return -1;
- }
-
- ev.events = EPOLLIN;
- ev.data.fd = job_request_fd[0];
- epoll_ctl(epollfd, EPOLL_CTL_ADD, job_request_fd[0], &ev);
- }
-
/* Convert positive seconds to milliseconds */
timeout = timeout > 0 ? 1000 * timeout : timeout;
- ret = epoll_wait(epollfd, &event, 1, timeout);
+ ret = epoll_wait(epoll_fd, &event, 1, timeout);
if (ret == -1) {
if (errno != EINTR) {