]> rtime.felk.cvut.cz Git - frescor/fwp.git/blob - frsh/frsh_error.c
compilation fixes
[frescor/fwp.git] / frsh / frsh_error.c
1 // -----------------------------------------------------------------------
2 //  Copyright (C) 2006 - 2008 FRESCOR consortium partners:
3 //
4 //    Universidad de Cantabria,              SPAIN
5 //    University of York,                    UK
6 //    Scuola Superiore Sant'Anna,            ITALY
7 //    Kaiserslautern University,             GERMANY
8 //    Univ. Politécnica  Valencia,           SPAIN
9 //    Czech Technical University in Prague,  CZECH REPUBLIC
10 //    ENEA                                   SWEDEN
11 //    Thales Communication S.A.              FRANCE
12 //    Visual Tools S.A.                      SPAIN
13 //    Rapita Systems Ltd                     UK
14 //    Evidence                               ITALY
15 //
16 //    See http://www.frescor.org for a link to partners' websites
17 //
18 //           FRESCOR project (FP6/2005/IST/5-034026) is funded
19 //        in part by the European Union Sixth Framework Programme
20 //        The European Union is not liable of any use that may be
21 //        made of this code.
22 //
23 //
24 //  based on previous work (FSF) done in the FIRST project
25 //
26 //   Copyright (C) 2005  Mälardalen University, SWEDEN
27 //                       Scuola Superiore S.Anna, ITALY
28 //                       Universidad de Cantabria, SPAIN
29 //                       University of York, UK
30 //
31 //   FSF API web pages: http://marte.unican.es/fsf/docs
32 //                      http://shark.sssup.it/contrib/first/docs/
33 //
34 //   This file is part of FRSH (FRescor ScHeduler)
35 //
36 //  FRSH is free software; you can redistribute it and/or modify it
37 //  under terms of the GNU General Public License as published by the
38 //  Free Software Foundation; either version 2, or (at your option) any
39 //  later version.  FRSH is distributed in the hope that it will be
40 //  useful, but WITHOUT ANY WARRANTY; without even the implied warranty
41 //  of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
42 //  General Public License for more details. You should have received a
43 //  copy of the GNU General Public License along with FRSH; see file
44 //  COPYING. If not, write to the Free Software Foundation, 675 Mass Ave,
45 //  Cambridge, MA 02139, USA.
46 //
47 //  As a special exception, including FRSH header files in a file,
48 //  instantiating FRSH generics or templates, or linking other files
49 //  with FRSH objects to produce an executable application, does not
50 //  by itself cause the resulting executable application to be covered
51 //  by the GNU General Public License. This exception does not
52 //  however invalidate any other reasons why the executable file might be
53 //  covered by the GNU Public License.
54 // -----------------------------------------------------------------------
55 //==============================================
56 //  ******** *******    ********  **      **
57 //  **///// /**////**  **//////  /**     /**
58 //  **      /**   /** /**        /**     /**
59 //  ******* /*******  /********* /**********
60 //  **////  /**///**  ////////** /**//////**
61 //  **      /**  //**        /** /**     /**
62 //  **      /**   //** ********  /**     /**
63 //  //       //     // ////////   //      // 
64 //
65 // FRSH(FRescor ScHeduler), pronounced "fresh"
66 //==============================================
67
68 #include <stdio.h>
69 #include <string.h>
70 #include "frsh_error.h"
71 //#include "frsh_time.h"
72
73 ////////////////////////////////////////////////////////////////////////
74 //           ERROR REPORTING
75 ////////////////////////////////////////////////////////////////////////
76
77 /* Use to debug an error condition */
78 /***********************************/
79 int global_error_condition = 0;
80
81
82
83 /* These variables get initialised in frsh_init() */
84 /**************************************************/
85 //fosa_abs_time_t frsh_trace_init_timespec;
86 //long frsh_trace_init_timemsec = -1;
87
88
89 //error codes to message section
90 static const int frsh_strerror_table_size = FRSH_ERR_LAST_VALUE-FRSH_ERR_BASE_VALUE;
91 static char * frsh_strerror_table[] = 
92 {
93     "TOO_MANY_TASKS                 ",
94     "BAD_ARGUMENT                   ",
95     "INVALID_SYNCH_OBJ_HANDLE       ",
96     "NO_RENEGOTIATION_REQUESTED     ",
97     "CONTRACT_REJECTED              ",
98     "NOT_SCHEDULED_CALLING_THREAD   ",
99     "NOT_BOUND_THREAD               ",
100     "UNKNOWN_SCHEDULED_THREAD       ",
101     "NOT_CONTRACTED_SERVER          ",
102     "NOT_SCHEDULED_THREAD           ",
103     "TOO_MANY_SERVICE_JOBS          ",
104     "TOO_MANY_SYNCH_OBJS            ",
105     "TOO_MANY_SERVERS_IN_SYNCH_OBJ  ",
106     "TOO_MANY_EVENTS_IN_SYNCH_OBJ   ",
107     "INTERNAL_ERROR                 ",
108     "TOO_MANY_SERVERS               ",
109     "INVALID_SCHEDULER_REPLY        ",
110     "TOO_MANY_PENDING_REPLENISHMENTS",
111     "SYSTEM_ALREADY_INITIALIZED     ",
112     "SHARED_OBJ_ALREADY_INITIALIZED ",
113     "SHARED_OBJ_NOT_INITIALIZED     ",
114     "SCHED_POLICY_NOT_COMPATIBLE    ",
115     "SERVER_WORKLOAD_NOT_COMPATIBLE ",
116     "ALREADY_BOUND                  ",
117     "WRONG_NETWORK                  ",
118     "TOO_LARGE                      ",
119     "BUFFER_FULL                    ",
120     "NO_SPACE                       ",
121     "NO_MESSAGES                    ",
122     "MODULE_NOT_SUPPORTED           ",
123     "SYSTEM_NOT_INITIALIZED         ",
124     "TOO_MANY_SHARED_OBJS           ",
125     "CONTRACT_LABEL_ALREADY_EXISTS  ",
126     "BUDGET_EXPIRED                 ",
127     "SHARED_OBJECT_NOT_PROTECTED    ",
128     "NOT_IMPLEMENTED                ",
129     "CONTRACT_TYPE_NOT_COMPATIBLE   ",
130     "CAPACITY_NOT_DECREASING        ",
131     "CONTRACT_LABEL_UNKNOWN         "
132 };
133
134
135
136 /**
137  *  frsh_strerror()
138  *
139  *  This function converts an error code to an error message that is
140  *  stored in the buffer starting at the location pointed to by
141  *  message. The size of this buffer is specified by the size
142  *  argument. If the error message is longer than size-1, it is
143  *  truncated to that length. Regardless of whether the message is
144  *  truncated or not, a final zero character that marks the end of the
145  *  string is stored in the buffer.  The function fails if the error
146  *  code passed does not correspond to any of the frsh error codes.
147  *   [@return:
148  *    FRSH_ERR_BAD_ARGUMENT :  error is not a valid value
149  *   ]
150  **/
151 int frsh_strerror (int error, char *message, size_t size)
152 {
153     char *s;
154 //printf("debug: error=%x, LAST=%x, BASE=%x\n", error, FRSH_ERR_LAST_VALUE, FRSH_ERR_BASE_VALUE);
155     if ((error > FRSH_ERR_LAST_VALUE) ||
156         (error <= FRSH_ERR_BASE_VALUE))
157         return FRSH_ERR_BAD_ARGUMENT;
158   
159     s = frsh_strerror_table[error - FRSH_ERR_BASE_VALUE -1];
160  
161     if ( message != NULL && size > 0) {
162         strncpy(message, s, size);
163         message[size-1] = '\0';
164     }
165  
166     return 0;
167 }
168
169 /* ------------------------------------------------------------------------------------ */
170 void my_frsh_strerror(int error, char *sss)
171 {
172     char       s[32];
173     frsh_strerror(error, s, 32);
174     printf("(%x ", error);
175     printf(s);
176     printf(") ");
177     printf(sss);
178 }