Add doxygen documentation
[people/xl0/gpxe.git] / src / core / errno.c
1 #include "etherboot.h"
2 #include "errno.h"
3 #include "vsprintf.h"
4
5 /** @file
6  *
7  * Error codes and descriptions.
8  *
9  * This file provides the global variable errno
10  *
11  */
12
13 /**
14  * Global "last error" number.
15  *
16  * This is valid only when a function has just returned indicating a
17  * failure.
18  *
19  */
20 int errno;
21
22 static struct errortab errortab_start[0] __table_start(errortab);
23 static struct errortab errortab_end[0] __table_end(errortab);
24
25 /**
26  * Retrieve string representation of error number.
27  *
28  * @v errno             Error number
29  * @ret strerror        Pointer to error text
30  *
31  * If the error is not found in the linked-in error tables, generates
32  * a generic "Error 0x0000" message.
33  *
34  * The pointer returned by strerror() is valid only until the next
35  * call to strerror().
36  *
37  */
38 const char * strerror ( int errno ) {
39         static char *generic_message = "Error 0x0000";
40         struct errortab *errortab;
41
42         for ( errortab = errortab_start ; errortab < errortab_end ;
43               errortab++ ) {
44                 if ( errortab->errno == errno )
45                         return errortab->text;
46         }
47
48         sprintf ( generic_message + 8, "%hx", errno );
49         return generic_message;
50 }