]> rtime.felk.cvut.cz Git - frescor/fwp.git/blobdiff - fwp/lib/fwp/fwp_utils.c
Bug fix in vres tx thread. Fixed budgeting.
[frescor/fwp.git] / fwp / lib / fwp / fwp_utils.c
index 083bcb26497ab2761c8cf25554a5d391bd4b3fff..28ef3abf04ed0693db35db1062e8bc396136c0a1 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.                                    */
+/**************************************************************************/
 #include "fwp_utils.h"
 
 #include <sched.h>
@@ -33,6 +78,18 @@ inline void fwp_timespec_sub (struct timespec *diff, const struct timespec *left
        }
 }
 
+void fwp_timespec_modulo(struct timespec *remainder, struct timespec *dividend, 
+                               struct timespec *dividor)
+{
+       long long a, b, res;
+
+       a = dividend->tv_sec * SEC_TO_USEC + dividend->tv_nsec / USEC_TO_NSEC;
+       b = dividor->tv_sec * SEC_TO_USEC + dividor->tv_nsec / USEC_TO_NSEC;
+       res = a % b;
+       remainder->tv_sec = res / SEC_TO_USEC;
+       remainder->tv_nsec = ( res % SEC_TO_USEC ) * USEC_TO_NSEC;
+}
+
 int fwp_set_rt_prio(int priority)
 {
        int maxpri, minpri;
@@ -67,8 +124,8 @@ int fwp_set_rt_prio(int priority)
        param.sched_priority = priority;
 
        if (sched_setscheduler(0, SCHED_FIFO, &param) == -1) {
-               FWP_ERROR("sched_setscheduler call failed: %s\n", 
-                               strerror(errno));
+               /*FWP_ERROR("sched_setscheduler call failed: %s\n", 
+                               strerror(errno));*/
                return -1;
        }