VirtualBox

source: vbox/trunk/include/iprt/errno.h@ 47344

Last change on this file since 47344 was 40824, checked in by vboxsync, 13 years ago

errno.h wrapper.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 7.8 KB
Line 
1/** @file
2 * IPRT - errno.h wrapper.
3 */
4
5/*
6 * Copyright (C) 2012 Oracle Corporation
7 *
8 * This file is part of VirtualBox Open Source Edition (OSE), as
9 * available from http://www.virtualbox.org. This file is free software;
10 * you can redistribute it and/or modify it under the terms of the GNU
11 * General Public License (GPL) as published by the Free Software
12 * Foundation, in version 2 as it comes in the "COPYING" file of the
13 * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
14 * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
15 *
16 * The contents of this file may alternatively be used under the terms
17 * of the Common Development and Distribution License Version 1.0
18 * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
19 * VirtualBox OSE distribution, in which case the provisions of the
20 * CDDL are applicable instead of those of the GPL.
21 *
22 * You may elect to license modified versions of this file under the
23 * terms and conditions of either the GPL or the CDDL or both.
24 */
25
26
27#ifndef ___iprt_errno_h___
28#define ___iprt_errno_h___
29
30#ifndef IPRT_NO_CRT
31# if defined(RT_OS_DARWIN) && defined(KERNEL)
32# include <sys/errno.h>
33# elif defined(RT_OS_LINUX) && defined(__KERNEL__)
34# include <linux/errno.h>
35# elif defined(RT_OS_FREEBSD) && defined(_KERNEL)
36# include <sys/errno.h>
37# else
38# include <errno.h>
39# endif
40#endif
41
42
43/*
44 * Supply missing errno values according to the current RT_OS_XXX definition.
45 *
46 * Note! These supplements are for making no-CRT mode, as well as making UNIXy
47 * code that makes used of odd errno defines internally, work smoothly.
48 *
49 * When adding more error codes, always check the following errno.h sources:
50 * - RT_OS_DARWIN: http://fxr.watson.org/fxr/source/bsd/sys/errno.h?v=xnu-1699.24.8
51 * - RT_OS_FREEBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=DFBSD
52 * - RT_OS_NETBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=NETBSD
53 * - RT_OS_OPENBSD: http://fxr.watson.org/fxr/source/sys/errno.h?v=OPENBSD
54 * - RT_OS_OS2: http://svn.netlabs.org/libc/browser/trunk/libc/include/sys/errno.h
55 * - RT_OS_LINUX: http://fxr.watson.org/fxr/source/include/asm-generic/errno.h?v=linux-2.6
56 * - RT_OS_SOLARIS: http://fxr.watson.org/fxr/source/common/sys/errno.h?v=OPENSOLARIS
57 * - RT_OS_WINDOWS: tools/win.x86/vcc/v8sp1/include/errno.h
58 */
59
60#if defined(RT_OS_DARWIN) \
61 || defined(RT_OS_FREEBSD) \
62 || defined(RT_OS_NETBSD) \
63 || defined(RT_OS_OPENBSD) \
64 || defined(RT_OS_OS2)
65# define RT_ERRNO_OS_BSD
66#endif
67#ifdef RT_OS_SOLARIS
68# define RT_ERRNO_OS_SYSV_HARDCORE /* ?? */
69#endif
70
71/* The relatively similar part. */
72#ifndef EPERM
73# define EPERM (1)
74#endif
75#ifndef ENOENT
76# define ENOENT (2)
77#endif
78#ifndef ESRCH
79# define ESRCH (3)
80#endif
81#ifndef EINTR
82# define EINTR (4)
83#endif
84#ifndef EIO
85# define EIO (5)
86#endif
87#ifndef ENXIO
88# define ENXIO (6)
89#endif
90#ifndef E2BIG
91# define E2BIG (7)
92#endif
93#ifndef ENOEXEC
94# define ENOEXEC (8)
95#endif
96#ifndef EBADF
97# define EBADF (9)
98#endif
99#ifndef ECHILD
100# define ECHILD (10)
101#endif
102#ifndef EAGAIN
103# if defined(RT_ERRNO_OS_BSD)
104# define EAGAIN (35)
105# else
106# define EAGAIN (11)
107# endif
108#endif
109#ifndef EWOULDBLOCK
110# define EWOULDBLOCK EAGAIN
111#endif
112#ifndef EDEADLK
113# if defined(RT_ERRNO_OS_BSD)
114# define EDEADLK (11)
115# elif defined(RT_OS_LINUX)
116# define EDEADLK (35)
117# elif defined(RT_OS_WINDOWS)
118# define EDEADLK (36)
119# else
120# define EDEADLK (45)
121# endif
122#endif
123#ifndef EDEADLOCK
124# define EDEADLOCK EDEADLK
125#endif
126#ifndef ENOMEM
127# define ENOMEM (12)
128#endif
129#ifndef EACCES
130# define EACCES (13)
131#endif
132#ifndef EFAULT
133# define EFAULT (14)
134#endif
135#ifndef ENOTBLK
136# define ENOTBLK (15)
137#endif
138#ifndef EBUSY
139# define EBUSY (16)
140#endif
141#ifndef EEXIST
142# define EEXIST (17)
143#endif
144#ifndef EXDEV
145# define EXDEV (18)
146#endif
147#ifndef ENODEV
148# define ENODEV (19)
149#endif
150#ifndef ENOTDIR
151# define ENOTDIR (20)
152#endif
153#ifndef EISDIR
154# define EISDIR (21)
155#endif
156#ifndef EINVAL
157# define EINVAL (22)
158#endif
159#ifndef ENFILE
160# define ENFILE (23)
161#endif
162#ifndef EMFILE
163# define EMFILE (24)
164#endif
165#ifndef ENOTTY
166# define ENOTTY (25)
167#endif
168#ifndef ETXTBSY
169# define ETXTBSY (26)
170#endif
171#ifndef EFBIG
172# define EFBIG (27)
173#endif
174#ifndef ENOSPC
175# define ENOSPC (28)
176#endif
177#ifndef ESPIPE
178# define ESPIPE (29)
179#endif
180#ifndef EROFS
181# define EROFS (30)
182#endif
183#ifndef EMLINK
184# define EMLINK (31)
185#endif
186#ifndef EPIPE
187# define EPIPE (32)
188#endif
189#ifndef EDOM
190# define EDOM (33)
191#endif
192#ifndef ERANGE
193# define ERANGE (34)
194#endif
195
196/* 35 - also EAGAIN on BSD and EDEADLK on Linux. */
197#ifndef ENOMSG
198# if defined(RT_OS_DARWIN)
199# define ENOMSG (91)
200# elif defined(RT_OS_FREEBSD)
201# define ENOMSG (83)
202# elif defined(RT_OS_LINUX)
203# define ENOMSG (42)
204# else
205# define ENOMSG (35)
206# endif
207#endif
208
209/* 36 - Also EDEADLK on Windows. */
210#ifndef EIDRM
211# if defined(RT_OS_DARWIN)
212# define EIDRM (90)
213# elif defined(RT_OS_FREEBSD) || defined(RT_OS_NETBSD)
214# define EIDRM (82)
215# elif defined(RT_OS_OPENBSD)
216# define EIDRM (89)
217# elif defined(RT_OS_LINUX)
218# define EIDRM (43)
219# elif defined(RT_OS_WINDOWS)
220# define EIDRM (600)
221# else
222# define EIDRM (36)
223# endif
224#endif
225#ifndef EINPROGRESS
226# if defined(RT_ERRNO_OS_BSD)
227# define EINPROGRESS (36)
228# elif defined(RT_OS_LINUX)
229# define EINPROGRESS (115)
230# else
231# define EINPROGRESS (150)
232# endif
233#endif
234#ifndef ENAMETOOLONG
235# if defined(RT_ERRNO_OS_BSD)
236# define ENAMETOOLONG (63)
237# elif defined(RT_OS_LINUX)
238# define ENAMETOOLONG (36)
239# else
240# define ENAMETOOLONG (78)
241# endif
242#endif
243
244/* 37 */
245#ifndef ECHRNG
246# if defined(RT_ERRNO_OS_SYSV_HARDCORE)
247# define ECHRNG (37)
248# else
249# define ECHRNG (599)
250# endif
251#endif
252#ifndef ENOLCK
253# if defined(RT_ERRNO_OS_BSD)
254# define ENOLCK (77)
255# elif defined(RT_OS_LINUX)
256# define ENOLCK (37)
257# else
258# define ENOLCK (46)
259# endif
260#endif
261#ifndef EALREADY
262# if defined(RT_ERRNO_OS_BSD)
263# define EALREADY (37)
264# elif defined(RT_OS_LINUX)
265# define EALREADY (114)
266# else
267# define EALREADY (149)
268# endif
269#endif
270
271/** @todo errno constants {37..44}. */
272
273/* 45 - also EDEADLK on Solaris, EL2NSYNC on Linux. */
274#ifndef ENOTSUP
275# if defined(RT_ERRNO_OS_BSD)
276# define ENOTSUP (45)
277# elif defined(RT_OS_LINUX)
278# define ENOTSUP (95)
279# else
280# define ENOTSUP (48)
281# endif
282#endif
283#ifndef EOPNOTSUPP
284# if defined(RT_ERRNO_OS_BSD)
285# define EOPNOTSUPP ENOTSUP
286# elif defined(RT_OS_LINUX)
287# define EOPNOTSUPP ENOTSUP
288# else
289# define EOPNOTSUPP (122)
290# endif
291#endif
292
293/** @todo errno constants {46..74}. */
294
295/* 75 - note that Solaris has constant with value 75. */
296#ifndef EOVERFLOW
297# if defined(RT_OS_OPENBSD)
298# define EOVERFLOW (87)
299# elif defined(RT_ERRNO_OS_BSD)
300# define EOVERFLOW (84)
301# elif defined(RT_OS_LINUX)
302# define EOVERFLOW (75)
303# else
304# define EOVERFLOW (79)
305# endif
306#endif
307#ifndef EPROGMISMATCH
308# if defined(RT_ERRNO_OS_BSD)
309# define EPROGMISMATCH (75)
310# else
311# define EPROGMISMATCH (598)
312# endif
313#endif
314
315/** @todo errno constants {76..}. */
316
317
318#endif
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette