1 //----------------------------------------------------------------------
2 // Copyright (C) 2006 - 2007 by the FRESCOR consortium:
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
11 // Thales Communication S.A. FRANCE
12 // Visual Tools S.A. SPAIN
13 // Rapita Systems Ltd UK
16 // See http://www.frescor.org
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
24 // based on previous work (FSF) done in the FIRST project
26 // Copyright (C) 2005 Mälardalen University, SWEDEN
27 // Scuola Superiore S.Anna, ITALY
28 // Universidad de Cantabria, SPAIN
29 // University of York, UK
31 // This file is part of FRSH (FRescor ScHeduler)
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.
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 // // // // //////// // //
62 // FRSH(FRescor ScHeduler), pronounced "fresh"
63 //==============================================
69 #include "frsh_internal.h"
72 ////////////////////////////////////////////////////////////////////////
74 ////////////////////////////////////////////////////////////////////////
76 /* Use to debug an error condition */
77 /***********************************/
78 int global_error_condition = 0;
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;
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[] =
94 "INVALID_SYNCH_OBJ_HANDLE ",
95 "NO_RENEGOTIATION_REQUESTED ",
97 "NOT_SCHEDULED_CALLING_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 ",
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 ",
121 "MODULE_NOT_SUPPORTED ",
122 "SYSTEM_NOT_INITIALIZED ",
123 "TOO_MANY_SHARED_OBJS ",
124 "CONTRACT_LABEL_ALREADY_EXISTS ",
126 "SHARED_OBJECT_NOT_PROTECTED ",
128 "CONTRACT_TYPE_NOT_COMPATIBLE ",
129 "CAPACITY_NOT_DECREASING ",
130 "CONTRACT_LABEL_UNKNOWN "
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.
147 * FRSH_ERR_BAD_ARGUMENT : error is not a valid value
150 int frsh_strerror (int error, char *message, size_t size)
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;
158 s = frsh_strerror_table[error - FRSH_ERR_BASE_VALUE -1];
160 if ( message != NULL && size > 0) {
161 strncpy(message, s, size);
162 message[size-1] = '\0';
168 /* ------------------------------------------------------------------------------------ */
169 void my_frsh_strerror(int error, char *sss)
172 frsh_strerror(error, s, 32);
173 printf("(%x ", error);