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