/*
- * Copyright (C) 2004-2014 Andre Noll <maan@tuebingen.mpg.de>
+ * Copyright (C) 2004 Andre Noll <maan@tuebingen.mpg.de>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
#include <signal.h>
#include <sys/types.h>
+#include <regex.h>
#include "para.h"
#include "error.h"
#include "fd.h"
#include "list.h"
+#include "string.h"
#include "sched.h"
#include "signal.h"
* ready for reading, see select(2).
*
* \return This function either succeeds or calls exit(2) to terminate the
- * current process. On success, the file descriptor of the read end of the
- * signal pipe is returned.
+ * current process. On success, a signal task structure is returned.
*/
-int para_signal_init(void)
+struct signal_task *signal_init_or_die(void)
{
+ struct signal_task *st;
int ret;
+
+ PARA_NOTICE_LOG("setting up signal handling\n");
if (pipe(signal_pipe) < 0) {
ret = -ERRNO_TO_PARA_ERROR(errno);
goto err_out;
ret = mark_fd_nonblocking(signal_pipe[1]);
if (ret < 0)
goto err_out;
- return signal_pipe[0];
+ st = para_calloc(sizeof(*st));
+ st->fd = signal_pipe[0];
+ return st;
err_out:
PARA_EMERG_LOG("%s\n", para_strerror(-ret));
exit(EXIT_FAILURE);
}
/**
- * Close the write end of the signal pipe.
+ * Close the write end of the signal pipe, deallocate resources.
+ *
+ * \param st The pointer obtained earlier from signal_init_or_die().
*/
-void para_signal_shutdown(void)
+void signal_shutdown(struct signal_task *st)
{
close(signal_pipe[1]);
+ free(st);
}