#include "base64.h"
#include "hash.h"
#include "str.h"
+#include "llist.h"
#include "hostpid.h"
#include "env-util.h"
#include "fd-close-on-exec.h"
i_assert(fd[0] == -1);
break;
}
-
+
+ DLLIST_PREPEND(&service->processes, process);
process->refcount = 1;
process->pid = pid;
process->uid = uid;
struct service *service = process->service;
struct service_list *service_list = service->list;
+ DLLIST_REMOVE(&service->processes, process);
hash_table_remove(service_pids, &process->pid);
if (process->available_count > 0)
#define SERVICE_PROCESS_H
struct service_process {
+ struct service_process *prev, *next;
struct service *service;
int refcount;
/* all listeners, even those that aren't currently listening */
ARRAY_DEFINE(listeners, struct service_listener *);
+ /* linked list of all processes belonging to this service */
+ struct service_process *processes;
/* number of processes currently created for this service */
unsigned int process_count;