]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/fwp/fwp_utils.h
Make FWP not to eat EINTR error
[frescor/fwp.git] / fwp / lib / fwp / fwp_utils.h
index c3042ce50ff90ffbeaf96e4d32dce6b63dafe68d..7098c5b9deceb15ba0e0e1661c3b4b8536a4925c 100644 (file)
@@ -1,3 +1,48 @@
+/**************************************************************************/
+/* ---------------------------------------------------------------------- */
+/* Copyright (C) 2006 - 2008 FRESCOR consortium partners:                */
+/*                                                                       */
+/*   Universidad de Cantabria,              SPAIN                        */
+/*   University of York,                    UK                           */
+/*   Scuola Superiore Sant'Anna,            ITALY                        */
+/*   Kaiserslautern University,             GERMANY                      */
+/*   Univ. Politécnica  Valencia,           SPAIN                       */
+/*   Czech Technical University in Prague,  CZECH REPUBLIC               */
+/*   ENEA                                   SWEDEN                       */
+/*   Thales Communication S.A.              FRANCE                       */
+/*   Visual Tools S.A.                      SPAIN                        */
+/*   Rapita Systems Ltd                     UK                           */
+/*   Evidence                               ITALY                        */
+/*                                                                       */
+/*   See http://www.frescor.org for a link to partners' websites         */
+/*                                                                       */
+/*          FRESCOR project (FP6/2005/IST/5-034026) is funded            */
+/*       in part by the European Union Sixth Framework Programme         */
+/*       The European Union is not liable of any use that may be         */
+/*       made of this code.                                              */
+/*                                                                       */
+/*                                                                       */
+/*  This file is part of FWP (Frescor WLAN Protocol)                     */
+/*                                                                       */
+/* FWP is free software; you can redistribute it and/or modify it        */
+/* under terms of the GNU General Public License as published by the     */
+/* Free Software Foundation; either version 2, or (at your option) any   */
+/* later version.  FWP is distributed in the hope that it will be        */
+/* useful, but WITHOUT ANY WARRANTY; without even the implied warranty   */
+/* of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU   */
+/* General Public License for more details. You should have received a   */
+/* copy of the GNU General Public License along with FWP; see file       */
+/* COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,  */
+/* Cambridge, MA 02139, USA.                                             */
+/*                                                                       */
+/* As a special exception, including FWP header files in a file,         */
+/* instantiating FWP generics or templates, or linking other files       */
+/* with FWP objects to produce an executable application, does not       */
+/* by itself cause the resulting executable application to be covered    */
+/* by the GNU General Public License. This exception does not            */
+/* however invalidate any other reasons why the executable file might be  */
+/* covered by the GNU Public License.                                    */
+/**************************************************************************/
 #ifndef _FWP_UTILS_H
 #define _FWP_UTILS_H
 
@@ -45,9 +90,7 @@ _fwp_sendto(int s, const void *buf, size_t len, int flags,
            const fwp_sockaddr_t *sockaddr)
 {
        ssize_t ret;
-       while ((ret = sendto(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, sockaddr->addrlen)) < 0) {
-               if (errno != EINTR) break;
-       }
+       ret = sendto(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, sockaddr->addrlen);
        return ret;
 }
 
@@ -56,10 +99,8 @@ _fwp_recvfrom(int s, void *buf, size_t len, int flags,
              fwp_sockaddr_t *sockaddr)
 {
        ssize_t ret;
-       while ((ret = recvfrom(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, 
-               &sockaddr->addrlen)) < 0) {     
-                       if (errno != EINTR) break;
-       }
+       ret = recvfrom(s, buf, len, flags, (struct sockaddr*)&sockaddr->addr, 
+                      &sockaddr->addrlen);
        return ret;
 }
 
@@ -67,9 +108,7 @@ static inline ssize_t
 _fwp_send(int s, const void *buf, size_t len, int flags)
 {
        ssize_t ret;
-       while ((ret = send(s, buf, len, flags)) < 0) {
-               if (errno != EINTR) break;
-       }
+       ret = send(s, buf, len, flags);
        return ret;
 }
 
@@ -77,22 +116,19 @@ static inline ssize_t
 _fwp_recv(int s, void *buf, size_t len, int flags)
 {
        ssize_t ret;
-       while ((ret = recv(s, buf, len, flags)) < 0) {  
-               if (errno != EINTR) break;
-       }
+       ret = recv(s, buf, len, flags);
        return ret;
 }
 
-inline void fwp_timespec_add (struct timespec *sum, const struct timespec *left,
-             const struct timespec *right);
-
-inline void fwp_timespec_sub (struct timespec *diff, const struct timespec *left,
-             const struct timespec *right);
+void fwp_timespec_add (struct timespec *sum, const struct timespec *left, 
+                               const struct timespec *right);
+void fwp_timespec_sub (struct timespec *diff, const struct timespec *left,
+                               const struct timespec *right);
+void fwp_timespec_modulo(struct timespec *dividend, struct timespec *dividor,
+                               struct timespec *remainder);
 
 int fwp_set_rt_prio(int priority);
-
 int fwp_create_unix_socket(char *path, struct sockaddr_un *addr);
-
 int fwp_create_inet_socket(unsigned int port, struct sockaddr_in *addr);
 
 #endif /* _FWP_UTILS_H */