projects
/
paraslash.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
afh.h: Trivial whitespace fix.
[paraslash.git]
/
signal.c
diff --git
a/signal.c
b/signal.c
index 3b202a2c8ba6a62b23fa46f7e99ed207c4f08750..5d6e6e45dcd8e728c1bfcc6e08899bf08d4fc512 100644
(file)
--- a/
signal.c
+++ b/
signal.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (C) 2004
-2013 Andre Noll <maan@systemlinux.org
>
+ * Copyright (C) 2004
Andre Noll <maan@tuebingen.mpg.de
>
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
*
* Licensed under the GPL v2. For licencing details see COPYING.
*/
@@
-7,10
+7,15
@@
#include <signal.h>
#include <sys/types.h>
#include <signal.h>
#include <sys/types.h>
+#include <regex.h>
#include "para.h"
#include "error.h"
#include "fd.h"
#include "para.h"
#include "error.h"
#include "fd.h"
+#include "list.h"
+#include "string.h"
+#include "sched.h"
+#include "signal.h"
static int signal_pipe[2];
static int signal_pipe[2];
@@
-29,12
+34,14
@@
static int signal_pipe[2];
* ready for reading, see select(2).
*
* \return This function either succeeds or calls exit(2) to terminate the
* 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;
int ret;
+
+ PARA_NOTICE_LOG("setting up signal handling\n");
if (pipe(signal_pipe) < 0) {
ret = -ERRNO_TO_PARA_ERROR(errno);
goto err_out;
if (pipe(signal_pipe) < 0) {
ret = -ERRNO_TO_PARA_ERROR(errno);
goto err_out;
@@
-45,7
+52,9
@@
int para_signal_init(void)
ret = mark_fd_nonblocking(signal_pipe[1]);
if (ret < 0)
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);
err_out:
PARA_EMERG_LOG("%s\n", para_strerror(-ret));
exit(EXIT_FAILURE);
@@
-220,9
+229,12
@@
int para_next_signal(fd_set *rfds)
}
/**
}
/**
- * 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]);
{
close(signal_pipe[1]);
+ free(st);
}
}