1 //  boost/system/linux_error.hpp  -------------------------------------------//
2 
3 //  Copyright Beman Dawes 2007
4 
5 //  Distributed under the Boost Software License, Version 1.0. (See accompanying
6 //  file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
7 
8 //  See library home page at http://www.boost.org/libs/system
9 
10 #ifndef BOOST_LINUX_ERROR_HPP
11 #define BOOST_LINUX_ERROR_HPP
12 
13 //  This header is effectively empty for compiles on operating systems where
14 //  it is not applicable.
15 
16 #if defined(linux) || defined(__linux) || defined(__linux__)
17 
18 #include <boost/system/error_code.hpp>
19 
20 namespace boost
21 {
22   namespace system
23   {
24     //  To construct an error_code after a API error:
25     //
26     //      error_code( errno, system_category() )
27 
28     //  User code should use the portable "posix" enums for POSIX errors; this
29     //  allows such code to be portable to non-POSIX systems. For the non-POSIX
30     //  errno values that POSIX-based systems typically provide in addition to
31     //  POSIX values, use the system specific enums below.
32 
33     namespace linux_error
34     {
35       enum linux_errno
36       {
37         advertise_error = EADV,
38         bad_exchange = EBADE,
39         bad_file_number = EBADFD,
40         bad_font_format = EBFONT,
41         bad_request_code = EBADRQC,
42         bad_request_descriptor = EBADR,
43         bad_slot = EBADSLT,
44         channel_range = ECHRNG,
45         communication_error = ECOMM,
46         dot_dot_error = EDOTDOT,
47         exchange_full = EXFULL,
48         host_down = EHOSTDOWN,
49         is_named_file_type= EISNAM,
50         key_expired = EKEYEXPIRED,
51         key_rejected = EKEYREJECTED,
52         key_revoked = EKEYREVOKED,
53         level2_halt= EL2HLT,
54         level2_no_syncronized= EL2NSYNC,
55         level3_halt = EL3HLT,
56         level3_reset = EL3RST,
57         link_range = ELNRNG,
58         medium_type = EMEDIUMTYPE,
59         no_anode= ENOANO,
60         no_block_device = ENOTBLK,
61         no_csi = ENOCSI,
62         no_key = ENOKEY,
63         no_medium = ENOMEDIUM,
64         no_network = ENONET,
65         no_package = ENOPKG,
66         not_avail = ENAVAIL,
67         not_named_file_type= ENOTNAM,
68         not_recoverable = ENOTRECOVERABLE,
69         not_unique = ENOTUNIQ,
70         owner_dead = EOWNERDEAD,
71         protocol_no_supported = EPFNOSUPPORT,
72         remote_address_changed = EREMCHG,
73         remote_io_error = EREMOTEIO,
74         remote_object = EREMOTE,
75         restart_needed = ERESTART,
76         shared_library_access = ELIBACC,
77         shared_library_bad = ELIBBAD,
78         shared_library_execute = ELIBEXEC,
79         shared_library_max_ = ELIBMAX,
80         shared_library_section= ELIBSCN,
81         shutdown = ESHUTDOWN,
82         socket_type_not_supported = ESOCKTNOSUPPORT,
83         srmount_error = ESRMNT,
84         stream_pipe_error = ESTRPIPE,
85         too_many_references = ETOOMANYREFS,
86         too_many_users = EUSERS,
87         unattached = EUNATCH,
88         unclean = EUCLEAN
89       };
90     }  // namespace linux_error
91 
92 # ifndef BOOST_SYSTEM_NO_DEPRECATED
93     namespace Linux = linux_error;
94 # endif
95 
96     template<> struct is_error_code_enum<linux_error::linux_errno>
97       { static const bool value = true; };
98 
99     namespace linux_error
100     {
make_error_code(linux_errno e)101       inline error_code make_error_code( linux_errno e )
102         { return error_code( e, system_category() ); }
103     }
104 
105   }  // namespace system
106 }  // namespace boost
107 
108 #endif  // Linux
109 
110 #endif  // BOOST_LINUX_ERROR_HPP
111