dazuko-devel
[Top][All Lists]
Advanced

[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) {

reply via email to

[Prev in Thread] Current Thread [Next in Thread]