STASIS
A pipeline delivery generator
Loading...
Searching...
No Matches
multiprocessing.h
Go to the documentation of this file.
1
2#ifndef STASIS_MULTIPROCESSING_H
3#define STASIS_MULTIPROCESSING_H
4
5#include "core.h"
6#include "sem.h"
7#include "timespec.h"
8#include <signal.h>
9#include <sys/wait.h>
10#include <sys/mman.h>
11#include <fcntl.h>
12#include <sys/stat.h>
13#include <math.h>
14
16 struct timespec t_start;
17 struct timespec t_stop;
18 double duration;
19};
20
22 pid_t pid;
23 pid_t parent_pid;
24 int status;
26 int timeout;
27 time_t _startup;
28 char ident[255];
29 char *cmd;
30 size_t cmd_len;
31 char working_dir[PATH_MAX];
32 char log_file[PATH_MAX];
33 char parent_script[PATH_MAX];
36};
37
40 size_t num_used;
41 size_t num_alloc;
42 char ident[255];
43 char log_root[PATH_MAX];
45 struct Semaphore semaphore;
46};
47
49#define MP_POOL_TASK_STATUS_INITIAL (-1)
50
52#define MP_POOL_TASK_MAX 1000
53
55#define MP_POOL_PID_UNUSED 0
56
58#define MP_POOL_FAIL_FAST 1 << 1
59
101struct MultiProcessingPool *mp_pool_init(const char *ident, const char *log_root);
102
112struct MultiProcessingTask *mp_pool_task(struct MultiProcessingPool *pool, const char *ident, char *working_dir, char *cmd);
113
124int mp_pool_join(struct MultiProcessingPool *pool, size_t jobs, size_t flags);
125
132
138void mp_pool_free(struct MultiProcessingPool **pool);
139
140
141#endif //STASIS_MULTIPROCESSING_H
struct MultiProcessingPool * mp_pool_init(const char *ident, const char *log_root)
Definition multiprocessing.c:538
void mp_pool_show_summary(struct MultiProcessingPool *pool)
Definition multiprocessing.c:264
int mp_pool_join(struct MultiProcessingPool *pool, size_t jobs, size_t flags)
Definition multiprocessing.c:357
struct MultiProcessingTask * mp_pool_task(struct MultiProcessingPool *pool, const char *ident, char *working_dir, char *cmd)
Definition multiprocessing.c:178
void mp_pool_free(struct MultiProcessingPool **pool)
Definition multiprocessing.c:597
Definition multiprocessing.h:38
size_t num_used
Number of tasks populated in the task array.
Definition multiprocessing.h:40
size_t num_alloc
Number of tasks allocated by the task array.
Definition multiprocessing.h:41
char log_root[PATH_MAX]
Base directory to store stderr/stdout log files.
Definition multiprocessing.h:43
int status_interval
Report a pooled task is "running" every n seconds.
Definition multiprocessing.h:44
struct MultiProcessingTask * task
Array of tasks to execute.
Definition multiprocessing.h:39
char ident[255]
Identity of task pool.
Definition multiprocessing.h:42
Definition multiprocessing.h:21
struct MultiProcessingTimer interval_data
Progress report counters.
Definition multiprocessing.h:35
char working_dir[PATH_MAX]
Path to directory cmd should be executed in.
Definition multiprocessing.h:31
int signaled_by
Last signal received, if any.
Definition multiprocessing.h:25
size_t cmd_len
Length of command string (for mmap/munmap)
Definition multiprocessing.h:30
struct MultiProcessingTimer time_data
Wall-time counters.
Definition multiprocessing.h:34
char * cmd
Shell command(s) to be executed.
Definition multiprocessing.h:29
time_t _startup
Time elapsed since task started.
Definition multiprocessing.h:27
char parent_script[PATH_MAX]
Path to temporary script executing the task.
Definition multiprocessing.h:33
pid_t parent_pid
Program PID (parent process)
Definition multiprocessing.h:23
char ident[255]
Identity of the pool task.
Definition multiprocessing.h:28
int status
Child process exit status.
Definition multiprocessing.h:24
char log_file[PATH_MAX]
Full path to stdout/stderr log file.
Definition multiprocessing.h:32
int timeout
Seconds to elapse before killing the process.
Definition multiprocessing.h:26
pid_t pid
Program PID.
Definition multiprocessing.h:22
Definition multiprocessing.h:15
Definition sem.h:15