[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Dazuko-devel] Patch 2/5
From: |
Lino Sanfilippo |
Subject: |
[Dazuko-devel] Patch 2/5 |
Date: |
Thu, 08 Jul 2010 18:38:00 +0200 |
User-agent: |
Icedove 1.5.0.14eol (X11/20090105) |
This patch enables behaviour compatible with BSD signal semantics by
making the read() calls
on the dazukofs devices restartable across signals.
Geschäftsführender Gesellschafter: Tjark Auerbach
Sitz der Gesellschaft: Tettnang
Handelsregister: Amtsgericht Ulm, HRB 630992
ALLGEMEINE GESCHÄFTSBEDINGUNGEN
Es gelten unsere Allgemeinen Geschäftsbedingungen
(AGB). Sie finden sie in der jeweils gültigen Fassung
im Internet unter http://www.avira.de/agb
***************************************************
diff -Nurp dazukofs-3.1.3-patch1/group_dev.c dazukofs-3.1.3-patch2/group_dev.c
--- dazukofs-3.1.3-patch1/group_dev.c 2010-05-30 12:58:12.000000000 +0200
+++ dazukofs-3.1.3-patch2/group_dev.c 2010-07-06 17:20:55.000000000 +0200
@@ -66,9 +66,7 @@ static ssize_t dazukofs_group_read(int g
err = dazukofs_get_event(group_id, &event_id, &fd, &pid);
if (err) {
/* convert some errors to acceptable read(2) errno values */
- if (err == -ERESTARTSYS)
- return -EINTR;
- else if (err == -ENFILE)
+ if (err == -ENFILE)
return -EIO;
return err;
}
@@ -125,8 +123,6 @@ static ssize_t dazukofs_group_write(int
if (ret == 0) {
*pos += length;
ret = length;
- } else if (ret == -ERESTARTSYS) {
- ret = -EINTR;
}
return ret;
diff -Nurp dazukofs-3.1.3-patch1/test/showfiles.c
dazukofs-3.1.3-patch2/test/showfiles.c
--- dazukofs-3.1.3-patch1/test/showfiles.c 2008-10-25 00:08:30.000000000
+0200
+++ dazukofs-3.1.3-patch2/test/showfiles.c 2010-07-06 17:27:01.000000000
+0200
@@ -25,7 +25,7 @@
#include <errno.h>
#include <signal.h>
-static int running = 1;
+static volatile sig_atomic_t running = 1;
static void print_access(struct dazukofs_access *acc)
{
@@ -48,12 +48,24 @@ static void sigterm(int sig)
int main(void)
{
+ struct sigaction sa;
dazukofs_handle_t hndl;
struct dazukofs_access acc;
- signal(SIGHUP, sigterm);
- signal(SIGINT, sigterm);
- signal(SIGTERM, sigterm);
+ memset(&sa, 0, sizeof(sa));
+ sa.sa_handler = sigterm;
+ if (sigaction(SIGHUP, &sa, NULL)) {
+ perror("install SIGHUP handler");
+ return -1;
+ }
+ if (sigaction(SIGINT, &sa, NULL)) {
+ perror("install SIGINT handler");
+ return -1;
+ }
+ if (sigaction(SIGTERM, &sa, NULL)) {
+ perror("install SIGTERM handler");
+ return -1;
+ }
hndl = dazukofs_open("dazukofs_example", DAZUKOFS_TRACK_GROUP);
if (!hndl) {
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Dazuko-devel] Patch 2/5,
Lino Sanfilippo <=