[haiku-commits] BRANCH mmadia-github.separate-build-environment - headers/build/os/support headers/build/config_build src/build/libroot

  • From: mmadia-github.separate-build-environment <community@xxxxxxxxxxxx>
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Wed, 1 Aug 2012 03:49:12 +0200 (CEST)

added 4 changesets to branch 
'refs/remotes/mmadia-github/separate-build-environment'
old head: f947591f46d646809e6c43f20bb687b4e2ece43c
new head: d29f97fb6348d8925ebf61e17e33d6df3d37e644

----------------------------------------------------------------------------

fef2095: Applied Ingo's changes to Errors.h from patch on #8730.

417f96e: Applied Ingo's changes to SupportDefs.h from patch on #8730.

3ae8e7e: Applied Ingo's changes to atomic.cpp from patch on #8730.

d29f97f: Applied Ingo's changes to config_build/types.h from patch on #8730.

                                        [ Matt Madia <mattmadia@xxxxxxxxx> ]

----------------------------------------------------------------------------

4 files changed, 749 insertions(+), 587 deletions(-)
headers/build/config_build/types.h     |  189 ++++---
headers/build/os/support/Errors.h      |  810 +++++++++++-----------------
headers/build/os/support/SupportDefs.h |  266 ++++++++-
src/build/libroot/atomic.cpp           |   71 +--

############################################################################

Commit:      fef2095a4f06ec260e4a6e79b55495dd7a958e8a

Author:      Matt Madia <mattmadia@xxxxxxxxx>
Date:        Tue Jul 31 20:46:52 2012 UTC

Ticket:      https://dev.haiku-os.org/ticket/8730

Applied Ingo's changes to Errors.h from patch on #8730.

----------------------------------------------------------------------------

diff --git a/headers/build/os/support/Errors.h 
b/headers/build/os/support/Errors.h
index 750a660..dbab6d1 100644
--- a/headers/build/os/support/Errors.h
+++ b/headers/build/os/support/Errors.h
@@ -1,499 +1,339 @@
-/******************************************************************************
-/
-/      File:                   Errors.h
-/
-/      Description:    Error code constants.
-/
-/      Copyright 1993-98, Be Incorporated
-/
-******************************************************************************/
+/*
+ * Copyright 2007-2012, Haiku, Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ */
+#ifndef _HAIKU_BUILD_ERRORS_H
+#define _HAIKU_BUILD_ERRORS_H
 
 
-#ifndef _ERRORS_H
-#define _ERRORS_H
-
-#include <errno.h>
 #include <limits.h>
 
-/*-------------------------------------------------------------*/
-/*----- Error baselines ---------------------------------------*/
-
-#define B_GENERAL_ERROR_BASE           INT_MIN
-#define B_OS_ERROR_BASE                                B_GENERAL_ERROR_BASE + 
0x1000
-#define B_APP_ERROR_BASE                       B_GENERAL_ERROR_BASE + 0x2000
-#define B_INTERFACE_ERROR_BASE         B_GENERAL_ERROR_BASE + 0x3000
-#define B_MEDIA_ERROR_BASE                     B_GENERAL_ERROR_BASE + 0x4000 
/* - 0x41ff */
-#define B_TRANSLATION_ERROR_BASE       B_GENERAL_ERROR_BASE + 0x4800 /* - 
0x48ff */
-#define B_MIDI_ERROR_BASE                      B_GENERAL_ERROR_BASE + 0x5000
-#define B_STORAGE_ERROR_BASE           B_GENERAL_ERROR_BASE + 0x6000
-#define B_POSIX_ERROR_BASE                     B_GENERAL_ERROR_BASE + 0x7000
-#define B_MAIL_ERROR_BASE                      B_GENERAL_ERROR_BASE + 0x8000
-#define B_PRINT_ERROR_BASE                     B_GENERAL_ERROR_BASE + 0x9000
-#define B_DEVICE_ERROR_BASE                    B_GENERAL_ERROR_BASE + 0xa000
-
-/*--- Developer-defined errors start at (B_ERRORS_END+1)----*/
-
-#define B_ERRORS_END           (B_GENERAL_ERROR_BASE + 0xffff)
-
-
-/*-------------------------------------------------------------*/
-/*----- General Errors ----------------------------------------*/
-enum {
-       B_NO_MEMORY = B_GENERAL_ERROR_BASE,
-       B_IO_ERROR,
-       B_PERMISSION_DENIED,
-       B_BAD_INDEX,
-       B_BAD_TYPE,
-       B_BAD_VALUE,
-       B_MISMATCHED_VALUES,
-       B_NAME_NOT_FOUND,
-       B_NAME_IN_USE,
-       B_TIMED_OUT,
-    B_INTERRUPTED,
-       B_WOULD_BLOCK,
-    B_CANCELED,
-       B_NO_INIT,
-       B_BUSY,
-       B_NOT_ALLOWED,
-       B_BAD_DATA,
-
-       B_ERROR = -1,
-       B_OK = 0,
-       B_NO_ERROR = 0
-};
-
-/*-------------------------------------------------------------*/
-/*----- Kernel Kit Errors -------------------------------------*/
-enum {
-       B_BAD_SEM_ID = B_OS_ERROR_BASE,
-       B_NO_MORE_SEMS,
-
-       B_BAD_THREAD_ID = B_OS_ERROR_BASE + 0x100,
-       B_NO_MORE_THREADS,
-       B_BAD_THREAD_STATE,
-       B_BAD_TEAM_ID,
-       B_NO_MORE_TEAMS,
-
-       B_BAD_PORT_ID = B_OS_ERROR_BASE + 0x200,
-       B_NO_MORE_PORTS,
-
-       B_BAD_IMAGE_ID = B_OS_ERROR_BASE + 0x300,
-       B_BAD_ADDRESS,
-       B_NOT_AN_EXECUTABLE,
-       B_MISSING_LIBRARY,
-       B_MISSING_SYMBOL,
-
-       B_DEBUGGER_ALREADY_INSTALLED = B_OS_ERROR_BASE + 0x400
-};
-
-
-/*-------------------------------------------------------------*/
-/*----- Application Kit Errors --------------------------------*/
-enum
-{
-       B_BAD_REPLY = B_APP_ERROR_BASE,
-       B_DUPLICATE_REPLY,
-       B_MESSAGE_TO_SELF,
-       B_BAD_HANDLER,
-       B_ALREADY_RUNNING,
-       B_LAUNCH_FAILED,
-       B_AMBIGUOUS_APP_LAUNCH,
-       B_UNKNOWN_MIME_TYPE,
-       B_BAD_SCRIPT_SYNTAX,
-       B_LAUNCH_FAILED_NO_RESOLVE_LINK,
-       B_LAUNCH_FAILED_EXECUTABLE,
-       B_LAUNCH_FAILED_APP_NOT_FOUND,
-       B_LAUNCH_FAILED_APP_IN_TRASH,
-       B_LAUNCH_FAILED_NO_PREFERRED_APP,
-       B_LAUNCH_FAILED_FILES_APP_NOT_FOUND,
-       B_BAD_MIME_SNIFFER_RULE,
-       B_NOT_A_MESSAGE,
-       B_SHUTDOWN_CANCELLED,
-       B_SHUTTING_DOWN
-};
-
-
-/*-------------------------------------------------------------*/
-/*----- Storage Kit/File System Errors ------------------------*/
-enum {
-       B_FILE_ERROR = B_STORAGE_ERROR_BASE,
-       B_FILE_NOT_FOUND,       /* discouraged; use B_ENTRY_NOT_FOUND in new 
code*/
-       B_FILE_EXISTS,
-       B_ENTRY_NOT_FOUND,
-       B_NAME_TOO_LONG,
-       B_NOT_A_DIRECTORY,
-       B_DIRECTORY_NOT_EMPTY,
-       B_DEVICE_FULL,
-       B_READ_ONLY_DEVICE,
-       B_IS_A_DIRECTORY,
-       B_NO_MORE_FDS,
-       B_CROSS_DEVICE_LINK,
-       B_LINK_LIMIT,
-       B_BUSTED_PIPE,
-       B_UNSUPPORTED,
-       B_PARTITION_TOO_SMALL
-};
-
-
-/*-------------------------------------------------------------*/
-/*----- POSIX Errors ------------------------------------------*/
-#define HAIKU_E2BIG                    (B_POSIX_ERROR_BASE + 1)
-#define HAIKU_ECHILD                   (B_POSIX_ERROR_BASE + 2)
-#define HAIKU_EDEADLK                  (B_POSIX_ERROR_BASE + 3)
-#define HAIKU_EFBIG                    (B_POSIX_ERROR_BASE + 4)
-#define HAIKU_EMLINK                   (B_POSIX_ERROR_BASE + 5)
-#define HAIKU_ENFILE                   (B_POSIX_ERROR_BASE + 6)
-#define HAIKU_ENODEV                   (B_POSIX_ERROR_BASE + 7)
-#define HAIKU_ENOLCK                   (B_POSIX_ERROR_BASE + 8)
-#define HAIKU_ENOSYS                   (B_POSIX_ERROR_BASE + 9)
-#define HAIKU_ENOTTY                   (B_POSIX_ERROR_BASE + 10)
-#define HAIKU_ENXIO                    (B_POSIX_ERROR_BASE + 11)
-#define HAIKU_ESPIPE                   (B_POSIX_ERROR_BASE + 12)
-#define HAIKU_ESRCH                    (B_POSIX_ERROR_BASE + 13)
-#define HAIKU_EFPOS                    (B_POSIX_ERROR_BASE + 14)
-#define HAIKU_ESIGPARM         (B_POSIX_ERROR_BASE + 15)
-#define HAIKU_EDOM                     (B_POSIX_ERROR_BASE + 16)
-#define HAIKU_ERANGE                   (B_POSIX_ERROR_BASE + 17)
-#define HAIKU_EPROTOTYPE               (B_POSIX_ERROR_BASE + 18)
-#define HAIKU_EPROTONOSUPPORT  (B_POSIX_ERROR_BASE + 19)
-#define HAIKU_EPFNOSUPPORT     (B_POSIX_ERROR_BASE + 20)
-#define HAIKU_EAFNOSUPPORT     (B_POSIX_ERROR_BASE + 21)
-#define HAIKU_EADDRINUSE               (B_POSIX_ERROR_BASE + 22)
-#define HAIKU_EADDRNOTAVAIL    (B_POSIX_ERROR_BASE + 23)
-#define HAIKU_ENETDOWN         (B_POSIX_ERROR_BASE + 24)
-#define HAIKU_ENETUNREACH              (B_POSIX_ERROR_BASE + 25)
-#define HAIKU_ENETRESET                (B_POSIX_ERROR_BASE + 26)
-#define HAIKU_ECONNABORTED     (B_POSIX_ERROR_BASE + 27)
-#define HAIKU_ECONNRESET               (B_POSIX_ERROR_BASE + 28)
-#define HAIKU_EISCONN                  (B_POSIX_ERROR_BASE + 29)
-#define HAIKU_ENOTCONN         (B_POSIX_ERROR_BASE + 30)
-#define HAIKU_ESHUTDOWN                (B_POSIX_ERROR_BASE + 31)
-#define HAIKU_ECONNREFUSED     (B_POSIX_ERROR_BASE + 32)
-#define HAIKU_EHOSTUNREACH     (B_POSIX_ERROR_BASE + 33)
-#define HAIKU_ENOPROTOOPT              (B_POSIX_ERROR_BASE + 34)
-#define HAIKU_ENOBUFS                  (B_POSIX_ERROR_BASE + 35)
-#define HAIKU_EINPROGRESS              (B_POSIX_ERROR_BASE + 36)
-#define HAIKU_EALREADY         (B_POSIX_ERROR_BASE + 37)
-#define HAIKU_EILSEQ          (B_POSIX_ERROR_BASE + 38)
-#define HAIKU_ENOMSG          (B_POSIX_ERROR_BASE + 39)
-#define HAIKU_ESTALE          (B_POSIX_ERROR_BASE + 40)
-#define HAIKU_EOVERFLOW       (B_POSIX_ERROR_BASE + 41)
-#define HAIKU_EMSGSIZE        (B_POSIX_ERROR_BASE + 42)
-#define HAIKU_EOPNOTSUPP      (B_POSIX_ERROR_BASE + 43)
-#define HAIKU_ENOTSOCK         (B_POSIX_ERROR_BASE + 44)
-#define HAIKU_EHOSTDOWN                (B_POSIX_ERROR_BASE + 45)
-#define HAIKU_EBADMSG                  (B_POSIX_ERROR_BASE + 46)
-#define HAIKU_ECANCELED                (B_POSIX_ERROR_BASE + 47)
-#define HAIKU_EDESTADDRREQ     (B_POSIX_ERROR_BASE + 48)
-#define HAIKU_EDQUOT                   (B_POSIX_ERROR_BASE + 49)
-#define HAIKU_EIDRM                    (B_POSIX_ERROR_BASE + 50)
-#define HAIKU_EMULTIHOP                (B_POSIX_ERROR_BASE + 51)
-#define HAIKU_ENODATA                  (B_POSIX_ERROR_BASE + 52)
-#define HAIKU_ENOLINK                  (B_POSIX_ERROR_BASE + 53)
-#define HAIKU_ENOSR                    (B_POSIX_ERROR_BASE + 54)
-#define HAIKU_ENOSTR                   (B_POSIX_ERROR_BASE + 55)
-#define HAIKU_ENOTSUP                  (B_POSIX_ERROR_BASE + 56)
-#define HAIKU_EPROTO                   (B_POSIX_ERROR_BASE + 57)
-#define HAIKU_ETIME                    (B_POSIX_ERROR_BASE + 58)
-#define HAIKU_ETXTBSY                  (B_POSIX_ERROR_BASE + 59)
-#define HAIKU_ENOATTR                  (B_POSIX_ERROR_BASE + 60)
-
-
-/*---- POSIX errors that can be mapped to BeOS error codes ----*/
-#define HAIKU_ENOMEM                   B_NO_MEMORY
-#define HAIKU_EACCES                   B_PERMISSION_DENIED
-#define HAIKU_EINTR                    B_INTERRUPTED
-#define HAIKU_EIO                              B_IO_ERROR
-#define HAIKU_EBUSY                    B_BUSY
-#define HAIKU_EFAULT                   B_BAD_ADDRESS
-#define HAIKU_ETIMEDOUT                B_TIMED_OUT
-#define HAIKU_EAGAIN                   B_WOULD_BLOCK   /* SysV compatibility */
-#define HAIKU_EWOULDBLOCK      B_WOULD_BLOCK   /* BSD compatibility */
-#define HAIKU_EBADF                    B_FILE_ERROR
-#define HAIKU_EEXIST                   B_FILE_EXISTS
-#define HAIKU_EINVAL                   B_BAD_VALUE
-#define HAIKU_ENAMETOOLONG     B_NAME_TOO_LONG
-#define HAIKU_ENOENT                   B_ENTRY_NOT_FOUND
-#define HAIKU_EPERM                    B_NOT_ALLOWED
-#define HAIKU_ENOTDIR                  B_NOT_A_DIRECTORY
-#define HAIKU_EISDIR                   B_IS_A_DIRECTORY
-#define HAIKU_ENOTEMPTY                B_DIRECTORY_NOT_EMPTY
-#define HAIKU_ENOSPC                   B_DEVICE_FULL
-#define HAIKU_EROFS                    B_READ_ONLY_DEVICE
-#define HAIKU_EMFILE                   B_NO_MORE_FDS
-#define HAIKU_EXDEV                    B_CROSS_DEVICE_LINK
-#define HAIKU_ELOOP                    B_LINK_LIMIT
-#define HAIKU_ENOEXEC                  B_NOT_AN_EXECUTABLE
-#define HAIKU_EPIPE                    B_BUSTED_PIPE
-
-#ifndef BUILDING_HAIKU_ERROR_MAPPER
-       #undef E2BIG
-       #undef ECHILD
-       #undef EDEADLK
-       #undef EFBIG
-       #undef EMLINK
-       #undef ENFILE
-       #undef ENODEV
-       #undef ENOLCK
-       #undef ENOSYS
-       #undef ENOTTY
-       #undef ENXIO
-       #undef ESPIPE
-       #undef ESRCH
-       #undef EFPOS
-       #undef ESIGPARM
-       #undef EDOM
-       #undef ERANGE
-       #undef EPROTOTYPE
-       #undef EPROTONOSUPPORT
-       #undef EPFNOSUPPORT
-       #undef EAFNOSUPPORT
-       #undef EADDRINUSE
-       #undef EADDRNOTAVAIL
-       #undef ENETDOWN
-       #undef ENETUNREACH
-       #undef ENETRESET
-       #undef ECONNABORTED
-       #undef ECONNRESET
-       #undef EISCONN
-       #undef ENOTCONN
-       #undef ESHUTDOWN
-       #undef ECONNREFUSED
-       #undef EHOSTUNREACH
-       #undef ENOPROTOOPT
-       #undef ENOBUFS
-       #undef EINPROGRESS
-       #undef EALREADY
-       #undef EILSEQ
-       #undef ENOMSG
-       #undef ESTALE
-       #undef EOVERFLOW
-       #undef EMSGSIZE
-       #undef EOPNOTSUPP
-       #undef ENOTSOCK
-       #undef EHOSTDOWN
-       #undef EBADMSG
-       #undef ECANCELED
-       #undef EDESTADDRREQ
-       #undef EDQUOT
-       #undef EIDRM
-       #undef EMULTIHOP
-       #undef ENODATA
-       #undef ENOLINK
-       #undef ENOSR
-       #undef ENOSTR
-       #undef ENOTSUP
-       #undef EPROTO
-       #undef ETIME
-       #undef ETXTBSY
-       #undef ENOMEM
-       #undef EACCES
-       #undef EINTR
-       #undef EIO
-       #undef EBUSY
-       #undef EFAULT
-       #undef ETIMEDOUT
-       #undef EAGAIN
-       #undef EWOULDBLOCK
-       #undef EBADF
-       #undef EEXIST
-       #undef EINVAL
-       #undef ENAMETOOLONG
-       #undef ENOENT
-       #undef EPERM
-       #undef ENOTDIR
-       #undef EISDIR
-       #undef ENOTEMPTY
-       #undef ENOSPC
-       #undef EROFS
-       #undef EMFILE
-       #undef EXDEV
-       #undef ELOOP
-       #undef ENOEXEC
-       #undef EPIPE
-       #undef ENOATTR
-
-       #define E2BIG HAIKU_E2BIG
-       #define ECHILD HAIKU_ECHILD
-       #define EDEADLK HAIKU_EDEADLK
-       #define EFBIG HAIKU_EFBIG
-       #define EMLINK HAIKU_EMLINK
-       #define ENFILE HAIKU_ENFILE
-       #define ENODEV HAIKU_ENODEV
-       #define ENOLCK HAIKU_ENOLCK
-       #define ENOSYS HAIKU_ENOSYS
-       #define ENOTTY HAIKU_ENOTTY
-       #define ENXIO HAIKU_ENXIO
-       #define ESPIPE HAIKU_ESPIPE
-       #define ESRCH HAIKU_ESRCH
-       #define EFPOS HAIKU_EFPOS
-       #define ESIGPARM HAIKU_ESIGPARM
-       #define EDOM HAIKU_EDOM
-       #define ERANGE HAIKU_ERANGE
-       #define EPROTOTYPE HAIKU_EPROTOTYPE
-       #define EPROTONOSUPPORT HAIKU_EPROTONOSUPPORT
-       #define EPFNOSUPPORT HAIKU_EPFNOSUPPORT
-       #define EAFNOSUPPORT HAIKU_EAFNOSUPPORT
-       #define EADDRINUSE HAIKU_EADDRINUSE
-       #define EADDRNOTAVAIL HAIKU_EADDRNOTAVAIL
-       #define ENETDOWN HAIKU_ENETDOWN
-       #define ENETUNREACH HAIKU_ENETUNREACH
-       #define ENETRESET HAIKU_ENETRESET
-       #define ECONNABORTED HAIKU_ECONNABORTED
-       #define ECONNRESET HAIKU_ECONNRESET
-       #define EISCONN HAIKU_EISCONN
-       #define ENOTCONN HAIKU_ENOTCONN
-       #define ESHUTDOWN HAIKU_ESHUTDOWN
-       #define ECONNREFUSED HAIKU_ECONNREFUSED
-       #define EHOSTUNREACH HAIKU_EHOSTUNREACH
-       #define ENOPROTOOPT HAIKU_ENOPROTOOPT
-       #define ENOBUFS HAIKU_ENOBUFS
-       #define EINPROGRESS HAIKU_EINPROGRESS
-       #define EALREADY HAIKU_EALREADY
-       #define EILSEQ HAIKU_EILSEQ
-       #define ENOMSG HAIKU_ENOMSG
-       #define ESTALE HAIKU_ESTALE
-       #define EOVERFLOW HAIKU_EOVERFLOW
-       #define EMSGSIZE HAIKU_EMSGSIZE
-       #define EOPNOTSUPP HAIKU_EOPNOTSUPP
-       #define ENOTSOCK HAIKU_ENOTSOCK
-       #define EHOSTDOWN HAIKU_EHOSTDOWN
-       #define EBADMSG HAIKU_EBADMSG
-       #define ECANCELED HAIKU_ECANCELED
-       #define EDESTADDRREQ HAIKU_EDESTADDRREQ
-       #define EDQUOT HAIKU_EDQUOT
-       #define EIDRM HAIKU_EIDRM
-       #define EMULTIHOP HAIKU_EMULTIHOP
-       #define ENODATA HAIKU_ENODATA
-       #define ENOLINK HAIKU_ENOLINK
-       #define ENOSR HAIKU_ENOSR
-       #define ENOSTR HAIKU_ENOSTR
-       #define ENOTSUP HAIKU_ENOTSUP
-       #define EPROTO HAIKU_EPROTO
-       #define ETIME HAIKU_ETIME
-       #define ETXTBSY HAIKU_ETXTBSY
-       #define ENOMEM HAIKU_ENOMEM
-       #define EACCES HAIKU_EACCES
-       #define EINTR HAIKU_EINTR
-       #define EIO HAIKU_EIO
-       #define EBUSY HAIKU_EBUSY
-       #define EFAULT HAIKU_EFAULT
-       #define ETIMEDOUT HAIKU_ETIMEDOUT
-       #define EAGAIN HAIKU_EAGAIN
-       #define EWOULDBLOCK HAIKU_EWOULDBLOCK
-       #define EBADF HAIKU_EBADF
-       #define EEXIST HAIKU_EEXIST
-       #define EINVAL HAIKU_EINVAL
-       #define ENAMETOOLONG HAIKU_ENAMETOOLONG
-       #define ENOENT HAIKU_ENOENT
-       #define EPERM HAIKU_EPERM
-       #define ENOTDIR HAIKU_ENOTDIR
-       #define EISDIR HAIKU_EISDIR
-       #define ENOTEMPTY HAIKU_ENOTEMPTY
-       #define ENOSPC HAIKU_ENOSPC
-       #define EROFS HAIKU_EROFS
-       #define EMFILE HAIKU_EMFILE
-       #define EXDEV HAIKU_EXDEV
-       #define ELOOP HAIKU_ELOOP
-       #define ENOEXEC HAIKU_ENOEXEC
-       #define EPIPE HAIKU_EPIPE
-       #define ENOATTR HAIKU_ENOATTR
-
-       #undef errno
-       #define errno (*_haiku_build_errno())
-
-#endif // ! BUILDING_HAIKU_ERROR_MAPPER
+
+/* Error baselines */
+#define HAIKU_BUILD_B_GENERAL_ERROR_BASE               HAIKU_BUILD_INT_MIN
+#define HAIKU_BUILD_B_OS_ERROR_BASE                            
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x1000)
+#define HAIKU_BUILD_B_APP_ERROR_BASE                   
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x2000)
+#define HAIKU_BUILD_B_INTERFACE_ERROR_BASE             
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x3000)
+#define HAIKU_BUILD_B_MEDIA_ERROR_BASE                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x4000)
+                                                                               
/* - 0x41ff */
+#define HAIKU_BUILD_B_TRANSLATION_ERROR_BASE   
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x4800)
+                                                                               
/* - 0x48ff */
+#define HAIKU_BUILD_B_MIDI_ERROR_BASE                  
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x5000)
+#define HAIKU_BUILD_B_STORAGE_ERROR_BASE               
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x6000)
+#define HAIKU_BUILD_B_POSIX_ERROR_BASE                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x7000)
+#define HAIKU_BUILD_B_MAIL_ERROR_BASE                  
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x8000)
+#define HAIKU_BUILD_B_PRINT_ERROR_BASE                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0x9000)
+#define HAIKU_BUILD_B_DEVICE_ERROR_BASE                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0xa000)
+
+/* Developer-defined errors start at (B_ERRORS_END+1) */
+#define HAIKU_BUILD_B_ERRORS_END                               
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0xffff)
+
+/* General Errors */
+#define HAIKU_BUILD_B_NO_MEMORY                                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_IO_ERROR                                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_PERMISSION_DENIED                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_BAD_INDEX                                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_BAD_TYPE                                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_BAD_VALUE                                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_MISMATCHED_VALUES                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_NAME_NOT_FOUND                   
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 7)
+#define HAIKU_BUILD_B_NAME_IN_USE                              
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 8)
+#define HAIKU_BUILD_B_TIMED_OUT                                        
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 9)
+#define HAIKU_BUILD_B_INTERRUPTED                              
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 10)
+#define HAIKU_BUILD_B_WOULD_BLOCK                              
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 11)
+#define HAIKU_BUILD_B_CANCELED                                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 12)
+#define HAIKU_BUILD_B_NO_INIT                                  
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 13)
+#define HAIKU_BUILD_B_NOT_INITIALIZED                  
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 13)
+#define HAIKU_BUILD_B_BUSY                                             
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 14)
+#define HAIKU_BUILD_B_NOT_ALLOWED                              
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 15)
+#define HAIKU_BUILD_B_BAD_DATA                                 
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 16)
+#define HAIKU_BUILD_B_DONT_DO_THAT                             
(HAIKU_BUILD_B_GENERAL_ERROR_BASE + 17)
+
+#define HAIKU_BUILD_B_ERROR                                            (-1)
+#define HAIKU_BUILD_B_OK                                               ((int)0)
+#define HAIKU_BUILD_B_NO_ERROR                                 ((int)0)
+
+/* Kernel Kit Errors */
+#define HAIKU_BUILD_B_BAD_SEM_ID                               
(HAIKU_BUILD_B_OS_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_NO_MORE_SEMS                             
(HAIKU_BUILD_B_OS_ERROR_BASE + 1)
+
+#define HAIKU_BUILD_B_BAD_THREAD_ID                            
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x100)
+#define HAIKU_BUILD_B_NO_MORE_THREADS                  
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x101)
+#define HAIKU_BUILD_B_BAD_THREAD_STATE                 
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x102)
+#define HAIKU_BUILD_B_BAD_TEAM_ID                              
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x103)
+#define HAIKU_BUILD_B_NO_MORE_TEAMS                            
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x104)
+
+#define HAIKU_BUILD_B_BAD_PORT_ID                              
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x200)
+#define HAIKU_BUILD_B_NO_MORE_PORTS                            
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x201)
+
+#define HAIKU_BUILD_B_BAD_IMAGE_ID                             
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x300)
+#define HAIKU_BUILD_B_BAD_ADDRESS                              
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x301)
+#define HAIKU_BUILD_B_NOT_AN_EXECUTABLE                        
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x302)
+#define HAIKU_BUILD_B_MISSING_LIBRARY                  
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x303)
+#define HAIKU_BUILD_B_MISSING_SYMBOL                   
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x304)
+
+#define HAIKU_BUILD_B_DEBUGGER_ALREADY_INSTALLED       
(HAIKU_BUILD_B_OS_ERROR_BASE + 0x400)
+
+/* Application Kit Errors */
+#define HAIKU_BUILD_B_BAD_REPLY                                                
        (HAIKU_BUILD_B_APP_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_DUPLICATE_REPLY                                  
(HAIKU_BUILD_B_APP_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_MESSAGE_TO_SELF                                  
(HAIKU_BUILD_B_APP_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_BAD_HANDLER                                              
(HAIKU_BUILD_B_APP_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_ALREADY_RUNNING                                  
(HAIKU_BUILD_B_APP_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_LAUNCH_FAILED                                            
(HAIKU_BUILD_B_APP_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_AMBIGUOUS_APP_LAUNCH                             
(HAIKU_BUILD_B_APP_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_UNKNOWN_MIME_TYPE                                        
(HAIKU_BUILD_B_APP_ERROR_BASE + 7)
+#define HAIKU_BUILD_B_BAD_SCRIPT_SYNTAX                                        
(HAIKU_BUILD_B_APP_ERROR_BASE + 8)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_NO_RESOLVE_LINK            
(HAIKU_BUILD_B_APP_ERROR_BASE + 9)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_EXECUTABLE                 
(HAIKU_BUILD_B_APP_ERROR_BASE + 10)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_APP_NOT_FOUND              
(HAIKU_BUILD_B_APP_ERROR_BASE + 11)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_APP_IN_TRASH               
(HAIKU_BUILD_B_APP_ERROR_BASE + 12)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_NO_PREFERRED_APP   
(HAIKU_BUILD_B_APP_ERROR_BASE + 13)
+#define HAIKU_BUILD_B_LAUNCH_FAILED_FILES_APP_NOT_FOUND        
(HAIKU_BUILD_B_APP_ERROR_BASE + 14)
+#define HAIKU_BUILD_B_BAD_MIME_SNIFFER_RULE                            
(HAIKU_BUILD_B_APP_ERROR_BASE + 15)
+#define HAIKU_BUILD_B_NOT_A_MESSAGE                                            
(HAIKU_BUILD_B_APP_ERROR_BASE + 16)
+#define HAIKU_BUILD_B_SHUTDOWN_CANCELLED                               
(HAIKU_BUILD_B_APP_ERROR_BASE + 17)
+#define HAIKU_BUILD_B_SHUTTING_DOWN                                            
(HAIKU_BUILD_B_APP_ERROR_BASE + 18)
+
+/* Storage Kit/File System Errors */
+#define HAIKU_BUILD_B_FILE_ERROR                                               
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_FILE_NOT_FOUND                                   
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 1)
+                       /* deprecated: use B_ENTRY_NOT_FOUND instead */
+#define HAIKU_BUILD_B_FILE_EXISTS                                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_ENTRY_NOT_FOUND                                  
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_NAME_TOO_LONG                                            
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_NOT_A_DIRECTORY                                  
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_DIRECTORY_NOT_EMPTY                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_DEVICE_FULL                                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 7)
+#define HAIKU_BUILD_B_READ_ONLY_DEVICE                                 
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 8)
+#define HAIKU_BUILD_B_IS_A_DIRECTORY                                   
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 9)
+#define HAIKU_BUILD_B_NO_MORE_FDS                                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 10)
+#define HAIKU_BUILD_B_CROSS_DEVICE_LINK                                        
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 11)
+#define HAIKU_BUILD_B_LINK_LIMIT                                               
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 12)
+#define HAIKU_BUILD_B_BUSTED_PIPE                                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 13)
+#define HAIKU_BUILD_B_UNSUPPORTED                                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 14)
+#define HAIKU_BUILD_B_PARTITION_TOO_SMALL                              
(HAIKU_BUILD_B_STORAGE_ERROR_BASE + 15)
+
+/* POSIX Errors */
+#ifdef HAIKU_BUILD_B_USE_POSITIVE_POSIX_ERRORS
+#      define HAIKU_BUILD_B_TO_POSIX_ERROR(error)              (-(error))
+#      define HAIKU_BUILD_B_FROM_POSIX_ERROR(error)    (-(error))
+#else
+#      define HAIKU_BUILD_B_TO_POSIX_ERROR(error)              (error)
+#      define HAIKU_BUILD_B_FROM_POSIX_ERROR(error)    (error)
+#endif
+
+#define HAIKU_BUILD_B_POSIX_ENOMEM     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 0)
+#define HAIKU_BUILD_E2BIG                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 1)
+#define HAIKU_BUILD_ECHILD                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 2)
+#define HAIKU_BUILD_EDEADLK                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 3)
+#define HAIKU_BUILD_EFBIG                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 4)
+#define HAIKU_BUILD_EMLINK                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 5)
+#define HAIKU_BUILD_ENFILE                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 6)
+#define HAIKU_BUILD_ENODEV                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 7)
+#define HAIKU_BUILD_ENOLCK                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 8)
+#define HAIKU_BUILD_ENOSYS                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 9)
+#define HAIKU_BUILD_ENOTTY                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 10)
+#define HAIKU_BUILD_ENXIO                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 11)
+#define HAIKU_BUILD_ESPIPE                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 12)
+#define HAIKU_BUILD_ESRCH                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 13)
+#define HAIKU_BUILD_EFPOS                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 14)
+#define HAIKU_BUILD_ESIGPARM           
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 15)
+#define HAIKU_BUILD_EDOM                       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 16)
+#define HAIKU_BUILD_ERANGE                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 17)
+#define HAIKU_BUILD_EPROTOTYPE         
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 18)
+#define HAIKU_BUILD_EPROTONOSUPPORT    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 19)
+#define HAIKU_BUILD_EPFNOSUPPORT       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 20)
+#define HAIKU_BUILD_EAFNOSUPPORT       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 21)
+#define HAIKU_BUILD_EADDRINUSE         
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 22)
+#define HAIKU_BUILD_EADDRNOTAVAIL      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 23)
+#define HAIKU_BUILD_ENETDOWN           
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 24)
+#define HAIKU_BUILD_ENETUNREACH                
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 25)
+#define HAIKU_BUILD_ENETRESET          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 26)
+#define HAIKU_BUILD_ECONNABORTED       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 27)
+#define HAIKU_BUILD_ECONNRESET         
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 28)
+#define HAIKU_BUILD_EISCONN                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 29)
+#define HAIKU_BUILD_ENOTCONN           
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 30)
+#define HAIKU_BUILD_ESHUTDOWN          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 31)
+#define HAIKU_BUILD_ECONNREFUSED       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 32)
+#define HAIKU_BUILD_EHOSTUNREACH       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 33)
+#define HAIKU_BUILD_ENOPROTOOPT                
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 34)
+#define HAIKU_BUILD_ENOBUFS                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 35)
+#define HAIKU_BUILD_EINPROGRESS                
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 36)
+#define HAIKU_BUILD_EALREADY           
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 37)
+#define HAIKU_BUILD_EILSEQ          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 38)
+#define HAIKU_BUILD_ENOMSG          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 39)
+#define HAIKU_BUILD_ESTALE          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 40)
+#define HAIKU_BUILD_EOVERFLOW       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 41)
+#define HAIKU_BUILD_EMSGSIZE        
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 42)
+#define HAIKU_BUILD_EOPNOTSUPP      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 43)
+#define HAIKU_BUILD_ENOTSOCK           
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 44)
+#define HAIKU_BUILD_EHOSTDOWN          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 45)
+#define        HAIKU_BUILD_EBADMSG                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 46)
+#define HAIKU_BUILD_ECANCELED          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 47)
+#define HAIKU_BUILD_EDESTADDRREQ       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 48)
+#define HAIKU_BUILD_EDQUOT                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 49)
+#define HAIKU_BUILD_EIDRM                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 50)
+#define HAIKU_BUILD_EMULTIHOP          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 51)
+#define HAIKU_BUILD_ENODATA                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 52)
+#define HAIKU_BUILD_ENOLINK                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 53)
+#define HAIKU_BUILD_ENOSR                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 54)
+#define HAIKU_BUILD_ENOSTR                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 55)
+#define HAIKU_BUILD_ENOTSUP                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 56)
+#define HAIKU_BUILD_EPROTO                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 57)
+#define HAIKU_BUILD_ETIME                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 58)
+#define HAIKU_BUILD_ETXTBSY                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 59)
+#define HAIKU_BUILD_ENOATTR                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_POSIX_ERROR_BASE + 60)
+
+/* B_NO_MEMORY (0x80000000) can't be negated, so it needs special handling */
+#ifdef HAIKU_BUILD_B_USE_POSITIVE_POSIX_ERRORS
+#      define HAIKU_BUILD_ENOMEM               HAIKU_BUILD_B_POSIX_ENOMEM
+#else
+#      define HAIKU_BUILD_ENOMEM               HAIKU_BUILD_B_NO_MEMORY
+#endif
+
+/* POSIX errors that can be mapped to BeOS error codes */
+#define HAIKU_BUILD_EACCES                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_PERMISSION_DENIED)
+#define HAIKU_BUILD_EINTR                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_INTERRUPTED)
+#define HAIKU_BUILD_EIO                                
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_IO_ERROR)
+#define HAIKU_BUILD_EBUSY                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_BUSY)
+#define HAIKU_BUILD_EFAULT                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_BAD_ADDRESS)
+#define HAIKU_BUILD_ETIMEDOUT          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_TIMED_OUT)
+#define HAIKU_BUILD_EAGAIN                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_WOULD_BLOCK) /* SysV compatibility */
+#define HAIKU_BUILD_EWOULDBLOCK        
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_WOULD_BLOCK) /* BSD compatibility */
+#define HAIKU_BUILD_EBADF                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_FILE_ERROR)
+#define HAIKU_BUILD_EEXIST                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_FILE_EXISTS)
+#define HAIKU_BUILD_EINVAL                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_BAD_VALUE)
+#define HAIKU_BUILD_ENAMETOOLONG       
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_NAME_TOO_LONG)
+#define HAIKU_BUILD_ENOENT                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_ENTRY_NOT_FOUND)
+#define HAIKU_BUILD_EPERM                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_NOT_ALLOWED)
+#define HAIKU_BUILD_ENOTDIR                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_NOT_A_DIRECTORY)
+#define HAIKU_BUILD_EISDIR                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_IS_A_DIRECTORY)
+#define HAIKU_BUILD_ENOTEMPTY          
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_DIRECTORY_NOT_EMPTY)
+#define HAIKU_BUILD_ENOSPC                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_DEVICE_FULL)
+#define HAIKU_BUILD_EROFS                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_READ_ONLY_DEVICE)
+#define HAIKU_BUILD_EMFILE                     
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_NO_MORE_FDS)
+#define HAIKU_BUILD_EXDEV                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_CROSS_DEVICE_LINK)
+#define HAIKU_BUILD_ELOOP                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_LINK_LIMIT)
+#define HAIKU_BUILD_ENOEXEC                    
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_NOT_AN_EXECUTABLE)
+#define HAIKU_BUILD_EPIPE                      
HAIKU_BUILD_B_TO_POSIX_ERROR(HAIKU_BUILD_B_BUSTED_PIPE)
+
+/* new error codes that can be mapped to POSIX errors */
+#define        HAIKU_BUILD_B_BUFFER_OVERFLOW                   
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_EOVERFLOW)
+#define HAIKU_BUILD_B_TOO_MANY_ARGS                            
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_E2BIG)
+#define        HAIKU_BUILD_B_FILE_TOO_LARGE                    
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_EFBIG)
+#define HAIKU_BUILD_B_RESULT_NOT_REPRESENTABLE 
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_ERANGE)
+#define        HAIKU_BUILD_B_DEVICE_NOT_FOUND                  
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_ENODEV)
+#define HAIKU_BUILD_B_NOT_SUPPORTED                            
HAIKU_BUILD_B_FROM_POSIX_ERROR(HAIKU_BUILD_EOPNOTSUPP)
+
+/* Media Kit Errors */
+#define HAIKU_BUILD_B_STREAM_NOT_FOUND                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_SERVER_NOT_FOUND                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_RESOURCE_NOT_FOUND                       
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_RESOURCE_UNAVAILABLE                     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_BAD_SUBSCRIBER                           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_SUBSCRIBER_NOT_ENTERED           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_BUFFER_NOT_AVAILABLE                     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_LAST_BUFFER_ERROR                                
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 7)
+
+#define HAIKU_BUILD_B_MEDIA_SYSTEM_FAILURE                     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 100)
+#define HAIKU_BUILD_B_MEDIA_BAD_NODE                           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 101)
+#define HAIKU_BUILD_B_MEDIA_NODE_BUSY                          
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 102)
+#define HAIKU_BUILD_B_MEDIA_BAD_FORMAT                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 103)
+#define HAIKU_BUILD_B_MEDIA_BAD_BUFFER                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 104)
+#define HAIKU_BUILD_B_MEDIA_TOO_MANY_NODES                     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 105)
+#define HAIKU_BUILD_B_MEDIA_TOO_MANY_BUFFERS           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 106)
+#define HAIKU_BUILD_B_MEDIA_NODE_ALREADY_EXISTS                
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 107)
+#define HAIKU_BUILD_B_MEDIA_BUFFER_ALREADY_EXISTS      
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 108)
+#define HAIKU_BUILD_B_MEDIA_CANNOT_SEEK                                
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 109)
+#define HAIKU_BUILD_B_MEDIA_CANNOT_CHANGE_RUN_MODE     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 110)
+#define HAIKU_BUILD_B_MEDIA_APP_ALREADY_REGISTERED     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 111)
+#define HAIKU_BUILD_B_MEDIA_APP_NOT_REGISTERED         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 112)
+#define HAIKU_BUILD_B_MEDIA_CANNOT_RECLAIM_BUFFERS     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 113)
+#define HAIKU_BUILD_B_MEDIA_BUFFERS_NOT_RECLAIMED      
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 114)
+#define HAIKU_BUILD_B_MEDIA_TIME_SOURCE_STOPPED                
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 115)
+#define HAIKU_BUILD_B_MEDIA_TIME_SOURCE_BUSY           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 116)
+#define HAIKU_BUILD_B_MEDIA_BAD_SOURCE                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 117)
+#define HAIKU_BUILD_B_MEDIA_BAD_DESTINATION                    
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 118)
+#define HAIKU_BUILD_B_MEDIA_ALREADY_CONNECTED          
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 119)
+#define HAIKU_BUILD_B_MEDIA_NOT_CONNECTED                      
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 120)
+#define HAIKU_BUILD_B_MEDIA_BAD_CLIP_FORMAT                    
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 121)
+#define HAIKU_BUILD_B_MEDIA_ADDON_FAILED                       
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 122)
+#define HAIKU_BUILD_B_MEDIA_ADDON_DISABLED                     
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 123)
+#define HAIKU_BUILD_B_MEDIA_CHANGE_IN_PROGRESS         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 124)
+#define HAIKU_BUILD_B_MEDIA_STALE_CHANGE_COUNT         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 125)
+#define HAIKU_BUILD_B_MEDIA_ADDON_RESTRICTED           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 126)
+#define HAIKU_BUILD_B_MEDIA_NO_HANDLER                         
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 127)
+#define HAIKU_BUILD_B_MEDIA_DUPLICATE_FORMAT           
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 128)
+#define HAIKU_BUILD_B_MEDIA_REALTIME_DISABLED          
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 129)
+#define HAIKU_BUILD_B_MEDIA_REALTIME_UNAVAILABLE       
(HAIKU_BUILD_B_MEDIA_ERROR_BASE + 130)
+
+/* Mail Kit Errors */
+#define HAIKU_BUILD_B_MAIL_NO_DAEMON                           
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_MAIL_UNKNOWN_USER                                
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_MAIL_WRONG_PASSWORD                      
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_MAIL_UNKNOWN_HOST                                
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_MAIL_ACCESS_ERROR                                
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_MAIL_UNKNOWN_FIELD                       
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_MAIL_NO_RECIPIENT                                
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_MAIL_INVALID_MAIL                                
(HAIKU_BUILD_B_MAIL_ERROR_BASE + 7)
+
+/* Printing Errors */
+#define HAIKU_BUILD_B_NO_PRINT_SERVER                          
(HAIKU_BUILD_B_PRINT_ERROR_BASE + 0)
+
+/* Device Kit Errors */
+#define HAIKU_BUILD_B_DEV_INVALID_IOCTL                                
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_DEV_NO_MEMORY                                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_DEV_BAD_DRIVE_NUM                                
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 2)
+#define HAIKU_BUILD_B_DEV_NO_MEDIA                                     
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 3)
+#define HAIKU_BUILD_B_DEV_UNREADABLE                           
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 4)
+#define HAIKU_BUILD_B_DEV_FORMAT_ERROR                         
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 5)
+#define HAIKU_BUILD_B_DEV_TIMEOUT                                      
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 6)
+#define HAIKU_BUILD_B_DEV_RECALIBRATE_ERROR                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 7)
+#define HAIKU_BUILD_B_DEV_SEEK_ERROR                           
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 8)
+#define HAIKU_BUILD_B_DEV_ID_ERROR                                     
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 9)
+#define HAIKU_BUILD_B_DEV_READ_ERROR                           
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 10)
+#define HAIKU_BUILD_B_DEV_WRITE_ERROR                          
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 11)
+#define HAIKU_BUILD_B_DEV_NOT_READY                                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 12)
+#define HAIKU_BUILD_B_DEV_MEDIA_CHANGED                                
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 13)
+#define HAIKU_BUILD_B_DEV_MEDIA_CHANGE_REQUESTED       
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 14)
+#define HAIKU_BUILD_B_DEV_RESOURCE_CONFLICT                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 15)
+#define HAIKU_BUILD_B_DEV_CONFIGURATION_ERROR          
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 16)
+#define HAIKU_BUILD_B_DEV_DISABLED_BY_USER                     
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 17)
+#define HAIKU_BUILD_B_DEV_DOOR_OPEN                                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 18)
+
+#define HAIKU_BUILD_B_DEV_INVALID_PIPE                         
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 19)
+#define HAIKU_BUILD_B_DEV_CRC_ERROR                                    
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 20)
+#define HAIKU_BUILD_B_DEV_STALLED                                      
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 21)
+#define HAIKU_BUILD_B_DEV_BAD_PID                                      
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 22)
+#define HAIKU_BUILD_B_DEV_UNEXPECTED_PID                       
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 23)
+#define HAIKU_BUILD_B_DEV_DATA_OVERRUN                         
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 24)
+#define HAIKU_BUILD_B_DEV_DATA_UNDERRUN                                
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 25)
+#define HAIKU_BUILD_B_DEV_FIFO_OVERRUN                         
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 26)
+#define HAIKU_BUILD_B_DEV_FIFO_UNDERRUN                                
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 27)
+#define HAIKU_BUILD_B_DEV_PENDING                                      
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 28)
+#define HAIKU_BUILD_B_DEV_MULTIPLE_ERRORS                      
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 29)
+#define HAIKU_BUILD_B_DEV_TOO_LATE                                     
(HAIKU_BUILD_B_DEVICE_ERROR_BASE + 30)
+
+/* Translation Kit Errors */
+#define HAIKU_BUILD_B_TRANSLATION_BASE_ERROR           
(HAIKU_BUILD_B_TRANSLATION_ERROR_BASE + 0)
+#define HAIKU_BUILD_B_NO_TRANSLATOR                                    
(HAIKU_BUILD_B_TRANSLATION_ERROR_BASE + 1)
+#define HAIKU_BUILD_B_ILLEGAL_DATA                                     
(HAIKU_BUILD_B_TRANSLATION_ERROR_BASE + 2)
+
+
+#define HAIKU_BUILD_B_TO_POSITIVE_ERROR(error) 
_haiku_build_to_positive_error(error)
+#define HAIKU_BUILD_B_TO_NEGATIVE_ERROR(error) 
_haiku_build_to_negative_error(error)
+
 
 #ifdef __cplusplus
 extern "C" {
 #endif
 
-extern int *_haiku_build_errno();
-extern int _haiku_to_host_error(int error);
+int _haiku_build_to_positive_error(int error);
+int _haiku_build_to_negative_error(int error);
 
 #ifdef __cplusplus
 }
 #endif
 
-
-/*---- new error codes that can be mapped to POSIX errors ----*/
-#define        B_BUFFER_OVERFLOW       HAIKU_EOVERFLOW
-#define B_TOO_MANY_ARGS                HAIKU_E2BIG
-#define        B_FILE_TOO_LARGE        HAIKU_EFBIG
-#define B_RESULT_NOT_REPRESENTABLE     HAIKU_ERANGE
-#define        B_DEVICE_NOT_FOUND      HAIKU_ENODEV
-#define B_NOT_SUPPORTED                HAIKU_EOPNOTSUPP
-
-/*-------------------------------------------------------------*/
-/*----- Media Kit Errors --------------------------------------*/
-enum {
-  B_STREAM_NOT_FOUND = B_MEDIA_ERROR_BASE,
-  B_SERVER_NOT_FOUND,
-  B_RESOURCE_NOT_FOUND,
-  B_RESOURCE_UNAVAILABLE,
-  B_BAD_SUBSCRIBER,
-  B_SUBSCRIBER_NOT_ENTERED,
-  B_BUFFER_NOT_AVAILABLE,
-  B_LAST_BUFFER_ERROR
-};
-
-/*-------------------------------------------------------------*/
-/*----- Mail Kit Errors ---------------------------------------*/
-enum
-{
-       B_MAIL_NO_DAEMON = B_MAIL_ERROR_BASE,
-       B_MAIL_UNKNOWN_USER,
-       B_MAIL_WRONG_PASSWORD,
-       B_MAIL_UNKNOWN_HOST,
-       B_MAIL_ACCESS_ERROR,
-       B_MAIL_UNKNOWN_FIELD,
-       B_MAIL_NO_RECIPIENT,
-       B_MAIL_INVALID_MAIL
-};
-
-/*-------------------------------------------------------------*/
-/*----- Printing Errors --------------------------------------*/
-enum
-{
-       B_NO_PRINT_SERVER = B_PRINT_ERROR_BASE
-};
-
-/*-------------------------------------------------------------*/
-/*----- Device Kit Errors -------------------------------------*/
-enum
-{
-       B_DEV_INVALID_IOCTL = B_DEVICE_ERROR_BASE,
-       B_DEV_NO_MEMORY,
-       B_DEV_BAD_DRIVE_NUM,
-       B_DEV_NO_MEDIA,
-       B_DEV_UNREADABLE,
-       B_DEV_FORMAT_ERROR,
-       B_DEV_TIMEOUT,
-       B_DEV_RECALIBRATE_ERROR,
-       B_DEV_SEEK_ERROR,
-       B_DEV_ID_ERROR,
-       B_DEV_READ_ERROR,
-       B_DEV_WRITE_ERROR,
-       B_DEV_NOT_READY,
-       B_DEV_MEDIA_CHANGED,
-       B_DEV_MEDIA_CHANGE_REQUESTED,
-       B_DEV_RESOURCE_CONFLICT,
-       B_DEV_CONFIGURATION_ERROR,
-       B_DEV_DISABLED_BY_USER,
-       B_DEV_DOOR_OPEN,
-
-       B_DEV_INVALID_PIPE,
-       B_DEV_CRC_ERROR,
-       B_DEV_STALLED,
-       B_DEV_BAD_PID,
-       B_DEV_UNEXPECTED_PID,
-       B_DEV_DATA_OVERRUN,
-       B_DEV_DATA_UNDERRUN,
-       B_DEV_FIFO_OVERRUN,
-       B_DEV_FIFO_UNDERRUN,
-       B_DEV_PENDING,
-       B_DEV_MULTIPLE_ERRORS,
-       B_DEV_TOO_LATE,
-};
-
-#endif /* _ERRORS_H */
+#endif /* _HAIKU_BUILD_ERRORS_H */

############################################################################

Commit:      417f96e6520028ff36e274dbbc7eecb4f69fc761

Author:      Matt Madia <mattmadia@xxxxxxxxx>
Date:        Tue Jul 31 20:49:20 2012 UTC

Ticket:      https://dev.haiku-os.org/ticket/8730

Applied Ingo's changes to SupportDefs.h from patch on #8730.

----------------------------------------------------------------------------

diff --git a/headers/build/os/support/SupportDefs.h 
b/headers/build/os/support/SupportDefs.h
index f400fd3..6c8f41c 100644
--- a/headers/build/os/support/SupportDefs.h
+++ b/headers/build/os/support/SupportDefs.h
@@ -1,2 +1,266 @@
+/*
+ * Copyright 2004-2012, Haiku, Inc. All Rights Reserved.
+ * Distributed under the terms of the MIT License.
+ *
+ * Author:
+ *             Erik Jaesler (erik@xxxxxxxxxxxxxx)
+ */
+#ifndef _HAIKU_BUILD_SUPPORT_DEFS_H
+#define _HAIKU_BUILD_SUPPORT_DEFS_H
+
+
 #include <config_build/types.h>
-#include <../os/support/SupportDefs.h>
+
+#include <BeBuild.h>
+#include <Errors.h>
+
+#include <inttypes.h>
+#include <sys/types.h>
+
+
+/* fixed-size integer types */
+typedef        __haiku_build_haiku_int8                        
haiku_build_int8;
+typedef __haiku_build_haiku_uint8                      haiku_build_uint8;
+typedef        __haiku_build_haiku_int16                       
haiku_build_int16;
+typedef __haiku_build_haiku_uint16                     haiku_build_uint16;
+typedef        __haiku_build_haiku_int32                       
haiku_build_int32;
+typedef __haiku_build_haiku_uint32                     haiku_build_uint32;
+typedef        __haiku_build_haiku_int64                       
haiku_build_int64;
+typedef __haiku_build_haiku_uint64                     haiku_build_uint64;
+
+/* shorthand types */
+typedef volatile haiku_build_int8              haiku_build_vint8;
+typedef volatile haiku_build_uint8                     haiku_build_vuint8;
+typedef volatile haiku_build_int16                     haiku_build_vint16;
+typedef volatile haiku_build_uint16                    haiku_build_vuint16;
+typedef volatile haiku_build_int32                     haiku_build_vint32;
+typedef volatile haiku_build_uint32                    haiku_build_vuint32;
+typedef volatile haiku_build_int64                     haiku_build_vint64;
+typedef volatile haiku_build_uint64                    haiku_build_vuint64;
+
+typedef volatile long                  haiku_build_vlong;
+typedef volatile int                   haiku_build_vint;
+typedef volatile short                 haiku_build_vshort;
+typedef volatile char                  haiku_build_vchar;
+
+typedef volatile unsigned long haiku_build_vulong;
+typedef volatile unsigned int  haiku_build_vuint;
+typedef volatile unsigned short        haiku_build_vushort;
+typedef volatile unsigned char haiku_build_vuchar;
+
+typedef unsigned char                  haiku_build_uchar;
+typedef unsigned short          haiku_build_unichar;
+
+/* descriptive types */
+typedef haiku_build_int32              haiku_build_status_t;
+typedef haiku_build_int64              haiku_build_bigtime_t;
+typedef haiku_build_int64              haiku_build_nanotime_t;
+typedef haiku_build_uint32             haiku_build_type_code;
+typedef haiku_build_uint32             haiku_build_perform_code;
+
+typedef __haiku_build_haiku_phys_addr_t                haiku_build_phys_addr_t;
+typedef haiku_build_phys_addr_t                                
haiku_build_phys_size_t;
+
+typedef        __haiku_build_haiku_generic_addr_t      
haiku_build_generic_addr_t;
+typedef        haiku_build_generic_addr_t                      
haiku_build_generic_size_t;
+
+
+/* printf()/scanf() format strings for [u]int* types */
+#define HAIKU_BUILD_B_PRId8                    "d"
+#define HAIKU_BUILD_B_PRIi8                    "i"
+#define HAIKU_BUILD_B_PRId16           "d"
+#define HAIKU_BUILD_B_PRIi16           "i"
+#define HAIKU_BUILD_B_PRId32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "d"
+#define HAIKU_BUILD_B_PRIi32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "i"
+#define HAIKU_BUILD_B_PRId64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "d"
+#define HAIKU_BUILD_B_PRIi64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "i"
+#define HAIKU_BUILD_B_PRIu8                    "u"
+#define HAIKU_BUILD_B_PRIo8                    "o"
+#define HAIKU_BUILD_B_PRIx8                    "x"
+#define HAIKU_BUILD_B_PRIX8                    "X"
+#define HAIKU_BUILD_B_PRIu16           "u"
+#define HAIKU_BUILD_B_PRIo16           "o"
+#define HAIKU_BUILD_B_PRIx16           "x"
+#define HAIKU_BUILD_B_PRIX16           "X"
+#define HAIKU_BUILD_B_PRIu32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "u"
+#define HAIKU_BUILD_B_PRIo32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "o"
+#define HAIKU_BUILD_B_PRIx32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "x"
+#define HAIKU_BUILD_B_PRIX32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "X"
+#define HAIKU_BUILD_B_PRIu64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "u"
+#define HAIKU_BUILD_B_PRIo64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "o"
+#define HAIKU_BUILD_B_PRIx64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "x"
+#define HAIKU_BUILD_B_PRIX64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "X"
+
+#define HAIKU_BUILD_B_SCNd8            "hhd"
+#define HAIKU_BUILD_B_SCNi8            "hhi"
+#define HAIKU_BUILD_B_SCNd16           "hd"
+#define HAIKU_BUILD_B_SCNi16           "hi"
+#define HAIKU_BUILD_B_SCNd32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "d"
+#define HAIKU_BUILD_B_SCNi32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "i"
+#define HAIKU_BUILD_B_SCNd64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "d"
+#define HAIKU_BUILD_B_SCNi64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "i"
+#define HAIKU_BUILD_B_SCNu8            "hhu"
+#define HAIKU_BUILD_B_SCNo8            "hho"
+#define HAIKU_BUILD_B_SCNx8            "hhx"
+#define HAIKU_BUILD_B_SCNu16           "hu"
+#define HAIKU_BUILD_B_SCNo16           "ho"
+#define HAIKU_BUILD_B_SCNx16           "hx"
+#define HAIKU_BUILD_B_SCNu32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "u"
+#define HAIKU_BUILD_B_SCNo32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "o"
+#define HAIKU_BUILD_B_SCNx32           __HAIKU_BUILD_HAIKU_PRI_PREFIX_32 "x"
+#define HAIKU_BUILD_B_SCNu64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "u"
+#define HAIKU_BUILD_B_SCNo64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "o"
+#define HAIKU_BUILD_B_SCNx64           __HAIKU_BUILD_HAIKU_PRI_PREFIX_64 "x"
+
+/* printf() format strings for some standard types */
+/* size_t */
+#define HAIKU_BUILD_B_PRIuSIZE         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "u"
+#define HAIKU_BUILD_B_PRIoSIZE         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "o"
+#define HAIKU_BUILD_B_PRIxSIZE         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "x"
+#define HAIKU_BUILD_B_PRIXSIZE         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "X"
+/* ssize_t */
+#define HAIKU_BUILD_B_PRIdSSIZE                
__HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "d"
+#define HAIKU_BUILD_B_PRIiSSIZE                
__HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "i"
+/* addr_t */
+#define HAIKU_BUILD_B_PRIuADDR         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "u"
+#define HAIKU_BUILD_B_PRIoADDR         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "o"
+#define HAIKU_BUILD_B_PRIxADDR         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "x"
+#define HAIKU_BUILD_B_PRIXADDR         __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR "X"
+/* phys_addr_t */
+#define HAIKU_BUILD_B_PRIuPHYSADDR     
__HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR "u"
+#define HAIKU_BUILD_B_PRIoPHYSADDR     
__HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR "o"
+#define HAIKU_BUILD_B_PRIxPHYSADDR     
__HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR "x"
+#define HAIKU_BUILD_B_PRIXPHYSADDR     
__HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR "X"
+/* generic_addr_t */
+#define HAIKU_BUILD_B_PRIuGENADDR      \
+       __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR "u"
+#define HAIKU_BUILD_B_PRIoGENADDR      \
+       __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR "o"
+#define HAIKU_BUILD_B_PRIxGENADDR      \
+       __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR "x"
+#define HAIKU_BUILD_B_PRIXGENADDR      \
+       __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR "X"
+/* off_t */
+#define HAIKU_BUILD_B_PRIdOFF          HAIKU_BUILD_B_PRId64
+#define HAIKU_BUILD_B_PRIiOFF          HAIKU_BUILD_B_PRIi64
+/* dev_t */
+#define HAIKU_BUILD_B_PRIdDEV          HAIKU_BUILD_B_PRId32
+#define HAIKU_BUILD_B_PRIiDEV          HAIKU_BUILD_B_PRIi32
+/* ino_t */
+#define HAIKU_BUILD_B_PRIdINO          HAIKU_BUILD_B_PRId64
+#define HAIKU_BUILD_B_PRIiINO          HAIKU_BUILD_B_PRIi64
+/* time_t */
+#define HAIKU_BUILD_B_PRIdTIME         HAIKU_BUILD_B_PRId32
+#define HAIKU_BUILD_B_PRIiTIME         HAIKU_BUILD_B_PRIi32
+
+
+/* Empty string ("") */
+#ifdef __cplusplus
+extern const char *HAIKU_BUILD_B_EMPTY_STRING;
+#endif
+
+
+/* min and max comparisons */
+#ifndef __cplusplus
+#      ifndef haiku_build_min
+#              define haiku_build_min(a,b) ((a)>(b)?(b):(a))
+#      endif
+#      ifndef haiku_build_max
+#              define haiku_build_max(a,b) ((a)>(b)?(a):(b))
+#      endif
+#endif
+
+/* min() and max() are functions in C++ */
+#define haiku_build_min_c(a,b) ((a)>(b)?(b):(a))
+#define haiku_build_max_c(a,b) ((a)>(b)?(a):(b))
+
+
+/* Grandfathering */
+#ifndef __cplusplus
+#      include <stdbool.h>
+#endif
+
+/*
+#ifndef HAIKU_BUILD_NULL
+#      define HAIKU_BUILD_NULL (0)
+#endif
+*/
+
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Atomic functions; previous value is returned */
+extern haiku_build_int32       haiku_build_atomic_set(haiku_build_vint32 
*value,
+                                                               
haiku_build_int32 newValue);
+extern haiku_build_int32       haiku_build_atomic_test_and_set(
+                                                               
haiku_build_vint32 *value,
+                                                               
haiku_build_int32 newValue,
+                                                               
haiku_build_int32 testAgainst);
+extern haiku_build_int32       haiku_build_atomic_add(haiku_build_vint32 
*value,
+                                                               
haiku_build_int32 addValue);
+extern haiku_build_int32       haiku_build_atomic_and(haiku_build_vint32 
*value,
+                                                               
haiku_build_int32 andValue);
+extern haiku_build_int32       haiku_build_atomic_or(haiku_build_vint32 *value,
+                                                               
haiku_build_int32 orValue);
+extern haiku_build_int32       haiku_build_atomic_get(haiku_build_vint32 
*value);
+
+extern haiku_build_int64       haiku_build_atomic_set64(haiku_build_vint64 
*value,
+                                                               
haiku_build_int64 newValue);
+extern haiku_build_int64       haiku_build_atomic_test_and_set64(
+                                                               
haiku_build_vint64 *value,
+                                                               
haiku_build_int64 newValue,
+                                                               
haiku_build_int64 testAgainst);
+extern haiku_build_int64       haiku_build_atomic_add64(haiku_build_vint64 
*value,
+                                                               
haiku_build_int64 addValue);
+extern haiku_build_int64       haiku_build_atomic_and64(haiku_build_vint64 
*value,
+                                                               
haiku_build_int64 andValue);
+extern haiku_build_int64       haiku_build_atomic_or64(haiku_build_vint64 
*value,
+                                                               
haiku_build_int64 orValue);
+extern haiku_build_int64       haiku_build_atomic_get64(haiku_build_vint64 
*value);
+
+/* Other stuff */
+extern void*   haiku_build_get_stack_frame(void);
+
+#ifdef __cplusplus
+}
+#endif
+
+/* Obsolete or discouraged API */
+
+/* use 'true' and 'false' */
+#ifndef FALSE
+#      define FALSE    0
+#endif
+#ifndef TRUE
+#      define TRUE             1
+#endif
+
+
+/* Use the built-in atomic functions, if requested and available. */
+
+#if defined(HAIKU_BUILD_B_USE_BUILTIN_ATOMIC_FUNCTIONS) && __GNUC__ >= 4
+
+#define haiku_build_atomic_test_and_set(valuePointer, newValue, testAgainst) \
+       __sync_val_compare_and_swap(valuePointer, testAgainst, newValue)
+#define haiku_build_atomic_add(valuePointer, addValue) \
+       __sync_fetch_and_add(valuePointer, addValue)
+#define haiku_build_atomic_and(valuePointer, andValue) \
+       __sync_fetch_and_and(valuePointer, andValue)
+#define haiku_build_atomic_or(valuePointer, orValue)   \
+       __sync_fetch_and_or(valuePointer, orValue)
+#define haiku_build_atomic_get(valuePointer)   \
+       __sync_fetch_and_or(valuePointer, 0)
+       // No equivalent to atomic_get(). We simulate it via atomic or. On most
+       // (all?) 32+ bit architectures aligned 32 bit reads will be atomic 
anyway,
+       // though.
+
+// Note: No equivalent for atomic_set(). It could be simulated by a
+// get + atomic test and set loop, but calling the atomic_set() implementation
+// might be faster.
+
+#endif // HAIKU_BUILD_B_USE_BUILTIN_ATOMIC_FUNCTIONS && __GNUC__ >= 4
+
+
+#endif /* _HAIKU_BUILD_SUPPORT_DEFS_H */

############################################################################

Commit:      3ae8e7e548a9b57b2323634638fce06f9f985311

Author:      Matt Madia <mattmadia@xxxxxxxxx>
Date:        Tue Jul 31 20:54:34 2012 UTC

Ticket:      https://dev.haiku-os.org/ticket/8730

Applied Ingo's changes to atomic.cpp from patch on #8730.

----------------------------------------------------------------------------

diff --git a/src/build/libroot/atomic.cpp b/src/build/libroot/atomic.cpp
index b929f16..7c3daaa 100644
--- a/src/build/libroot/atomic.cpp
+++ b/src/build/libroot/atomic.cpp
@@ -6,103 +6,104 @@
 #include <SupportDefs.h>
 
 
-int32
-atomic_set(vint32 *value, int32 newValue)
+haiku_build_int32
+_haiku_build_atomic_set(haiku_build_vint32 *value, haiku_build_int32 newValue)
 {
-       int32 oldValue = *value;
+       haiku_build_int32 oldValue = *value;
        *value = newValue;
        return oldValue;
 }
 
 
-int32
-atomic_test_and_set(vint32 *value, int32 newValue, int32 testAgainst)
+haiku_build_int32
+_haiku_build_atomic_test_and_set(haiku_build_vint32 *value,
+       haiku_build_int32 newValue, haiku_build_int32 testAgainst)
 {
-       int32 oldValue = *value;
+       haiku_build_int32 oldValue = *value;
        if (oldValue == testAgainst)
                *value = newValue;
        return oldValue;
 }
 
 
-int32
-atomic_add(vint32 *value, int32 addValue)
+haiku_build_int32
+_haiku_build_atomic_add(haiku_build_vint32 *value, haiku_build_int32 addValue)
 {
-       int32 oldValue = *value;
+       haiku_build_int32 oldValue = *value;
        *value += addValue;
        return oldValue;
 }
 
 
-int32
-atomic_and(vint32 *value, int32 andValue)
+haiku_build_int32
+_haiku_build_atomic_and(haiku_build_vint32 *value, haiku_build_int32 andValue)
 {
-       int32 oldValue = *value;
+       haiku_build_int32 oldValue = *value;
        *value &= andValue;
        return oldValue;
 }
 
 
-int32
-atomic_or(vint32 *value, int32 orValue)
+haiku_build_int32
+_haiku_build_atomic_or(haiku_build_vint32 *value, haiku_build_int32 orValue)
 {
-       int32 oldValue = *value;
+       haiku_build_int32 oldValue = *value;
        *value |= orValue;
        return oldValue;
 }
 
 
-int32
-atomic_get(vint32 *value)
+haiku_build_int32
+_haiku_build_atomic_get(haiku_build_vint32 *value)
 {
        return *value;
 }
 
 
-int64
-atomic_set64(vint64 *value, int64 newValue)
+haiku_build_int64
+_haiku_build_atomic_set64(haiku_build_vint64 *value, haiku_build_int64 
newValue)
 {
-       int64 oldValue = *value;
+       haiku_build_int64 oldValue = *value;
        *value = newValue;
        return oldValue;
 }
 
-int64
-atomic_test_and_set64(vint64 *value, int64 newValue, int64 testAgainst)
+haiku_build_int64
+_haiku_build_atomic_test_and_set64(haiku_build_vint64 *value,
+       haiku_build_int64 newValue, haiku_build_int64 testAgainst)
 {
-       int64 oldValue = *value;
+       haiku_build_int64 oldValue = *value;
        if (oldValue == testAgainst)
                *value = newValue;
        return oldValue;
 }
 
-int64
-atomic_add64(vint64 *value, int64 addValue)
+haiku_build_int64
+_haiku_build_atomic_add64(haiku_build_vint64 *value, haiku_build_int64 
addValue)
 {
-       int64 oldValue = *value;
+       haiku_build_int64 oldValue = *value;
        *value += addValue;
        return oldValue;
 }
 
-int64
-atomic_and64(vint64 *value, int64 andValue)
+haiku_build_int64
+_haiku_build_atomic_and64(haiku_build_vint64 *value, haiku_build_int64 
andValue)
 {
-       int64 oldValue = *value;
+       haiku_build_int64 oldValue = *value;
        *value &= andValue;
        return oldValue;
 }
 
-int64
-atomic_or64(vint64 *value, int64 orValue)
+haiku_build_int64
+_haiku_build_atomic_or64(haiku_build_vint64 *value, haiku_build_int64 orValue)
 {
-       int64 oldValue = *value;
+       haiku_build_int64 oldValue = *value;
        *value |= orValue;
        return oldValue;
 }
 
-int64
-atomic_get64(vint64 *value)
+haiku_build_int64
+_haiku_build_atomic_get64(haiku_build_vint64 *value)
 {
        return *value;
 }
-

############################################################################

Commit:      d29f97fb6348d8925ebf61e17e33d6df3d37e644

Author:      Matt Madia <mattmadia@xxxxxxxxx>
Date:        Tue Jul 31 21:14:21 2012 UTC

Ticket:      https://dev.haiku-os.org/ticket/8730

Applied Ingo's changes to config_build/types.h from patch on #8730.

----------------------------------------------------------------------------

diff --git a/headers/build/config_build/types.h 
b/headers/build/config_build/types.h
index 960e1ce..53da55d 100644
--- a/headers/build/config_build/types.h
+++ b/headers/build/config_build/types.h
@@ -6,9 +6,9 @@
 #define _CONFIG_BUILD_TYPES_H
 
 
-#include <config_build/HaikuConfig.h>
+#include <HaikuBuild.h>
 
-#include <inttypes.h>
+#include <config_build/HaikuConfig.h>
 
 
 /* fixed-width types -- the __haiku_std_[u]int* types correspond to the POSIX
@@ -16,97 +16,154 @@
    __HAIKU_BEOS_COMPATIBLE_TYPES is not defined both sets are identical. Once
    we drop compatibility for good, we can consolidate the types.
 */
-typedef int8_t                         __haiku_std_int8;
-typedef uint8_t                                __haiku_std_uint8;
-typedef int16_t                                __haiku_std_int16;
-typedef uint16_t                       __haiku_std_uint16;
-typedef int32_t                                __haiku_std_int32;
-typedef uint32_t                       __haiku_std_uint32;
-typedef int64_t                                __haiku_std_int64;
-typedef uint64_t                       __haiku_std_uint64;
-
-typedef __haiku_std_int8       __haiku_int8;
-typedef __haiku_std_uint8      __haiku_uint8;
-typedef __haiku_std_int16      __haiku_int16;
-typedef __haiku_std_uint16     __haiku_uint16;
-typedef __haiku_std_int32      __haiku_int32;
-typedef __haiku_std_uint32     __haiku_uint32;
-typedef __haiku_std_int64      __haiku_int64;
-typedef __haiku_std_uint64     __haiku_uint64;
+typedef _HAIKU_BUILD_FEATURE_int8      __haiku_build_haiku_std_int8;
+typedef _HAIKU_BUILD_FEATURE_uint8     __haiku_build_haiku_std_uint8;
+typedef _HAIKU_BUILD_FEATURE_int16     __haiku_build_haiku_std_int16;
+typedef _HAIKU_BUILD_FEATURE_uint16    __haiku_build_haiku_std_uint16;
+typedef _HAIKU_BUILD_FEATURE_int32     __haiku_build_haiku_std_int32;
+typedef _HAIKU_BUILD_FEATURE_uint32    __haiku_build_haiku_std_uint32;
+typedef _HAIKU_BUILD_FEATURE_int64     __haiku_build_haiku_std_int64;
+typedef _HAIKU_BUILD_FEATURE_uint64    __haiku_build_haiku_std_uint64;
+
+typedef __haiku_build_haiku_std_int8   __haiku_build_haiku_int8;
+typedef __haiku_build_haiku_std_uint8  __haiku_build_haiku_uint8;
+typedef __haiku_build_haiku_std_int16  __haiku_build_haiku_int16;
+typedef __haiku_build_haiku_std_uint16 __haiku_build_haiku_uint16;
+typedef __haiku_build_haiku_std_int32  __haiku_build_haiku_int32;
+typedef __haiku_build_haiku_std_uint32 __haiku_build_haiku_uint32;
+typedef __haiku_build_haiku_std_int64  __haiku_build_haiku_int64;
+typedef __haiku_build_haiku_std_uint64 __haiku_build_haiku_uint64;
 
 /* address types */
-#ifdef __HAIKU_ARCH_64_BIT
-       typedef __haiku_int64   __haiku_saddr_t;
-       typedef __haiku_uint64  __haiku_addr_t;
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_64_BIT
+       typedef __haiku_build_haiku_int64       __haiku_build_haiku_saddr_t;
+       typedef __haiku_build_haiku_uint64      __haiku_build_haiku_addr_t;
 #else
-       typedef __haiku_int32   __haiku_saddr_t;
-       typedef __haiku_uint32  __haiku_addr_t;
+       typedef __haiku_build_haiku_int32       __haiku_build_haiku_saddr_t;
+       typedef __haiku_build_haiku_uint32      __haiku_build_haiku_addr_t;
 #endif
 
-#ifdef __HAIKU_ARCH_PHYSICAL_64_BIT
-       typedef __haiku_int64   __haiku_phys_saddr_t;
-       typedef __haiku_uint64  __haiku_phys_addr_t;
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_PHYSICAL_64_BIT
+       typedef __haiku_build_haiku_int64       
__haiku_build_haiku_phys_saddr_t;
+       typedef __haiku_build_haiku_uint64      __haiku_build_haiku_phys_addr_t;
 #else
-       typedef __haiku_int32   __haiku_phys_saddr_t;
-       typedef __haiku_uint32  __haiku_phys_addr_t;
+       typedef __haiku_build_haiku_int32       
__haiku_build_haiku_phys_saddr_t;
+       typedef __haiku_build_haiku_uint32      __haiku_build_haiku_phys_addr_t;
 #endif
 
 /* address type limits */
-#ifdef __HAIKU_ARCH_64_BIT
-#      define __HAIKU_SADDR_MAX                (9223372036854775807LL)
-#      define __HAIKU_ADDR_MAX                 (18446744073709551615ULL)
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_64_BIT
+#      define __HAIKU_BUILD_HAIKU_SADDR_MAX            (9223372036854775807LL)
+#      define __HAIKU_BUILD_HAIKU_ADDR_MAX                     
(18446744073709551615ULL)
 #else
-#      define __HAIKU_SADDR_MAX                (2147483647)
-#      define __HAIKU_ADDR_MAX                 (4294967295U)
+#      define __HAIKU_BUILD_HAIKU_SADDR_MAX            (2147483647)
+#      define __HAIKU_BUILD_HAIKU_ADDR_MAX                     (4294967295U)
 #endif
-#define __HAIKU_SADDR_MIN                      (-__HAIKU_SADDR_MAX-1)
+#define __HAIKU_BUILD_HAIKU_SADDR_MIN          
(-__HAIKU_BUILD_HAIKU_SADDR_MAX-1)
 
-#ifdef __HAIKU_ARCH_PHYSICAL_64_BIT
-#      define __HAIKU_PHYS_SADDR_MAX   (9223372036854775807LL)
-#      define __HAIKU_PHYS_ADDR_MAX    (18446744073709551615ULL)
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_PHYSICAL_64_BIT
+#      define __HAIKU_BUILD_HAIKU_PHYS_SADDR_MAX       (9223372036854775807LL)
+#      define __HAIKU_BUILD_HAIKU_PHYS_ADDR_MAX        
(18446744073709551615ULL)
 #else
-#      define __HAIKU_PHYS_SADDR_MAX   (2147483647)
-#      define __HAIKU_PHYS_ADDR_MAX    (4294967295U)
+#      define __HAIKU_BUILD_HAIKU_PHYS_SADDR_MAX       (2147483647)
+#      define __HAIKU_BUILD_HAIKU_PHYS_ADDR_MAX        (4294967295U)
 #endif
-#define __HAIKU_PHYS_SADDR_MIN         (-__HAIKU_SADDR_MAX-1)
+#define __HAIKU_BUILD_HAIKU_PHYS_SADDR_MIN     
(-__HAIKU_BUILD_HAIKU_SADDR_MAX-1)
 
 
 /* printf()/scanf() format prefixes */
-/* TODO: The following are only guesses! We should define them in the
-   build/host headers. */
-#define        __HAIKU_STD_PRI_PREFIX_32       ""
-#ifdef __HAIKU_ARCH_64_BIT
-#      define __HAIKU_STD_PRI_PREFIX_64        "l"
+#define        __HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_32   \
+       _HAIKU_BUILD_FEATURE_FORMAT_PREFIX_int32
+#define __HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_64  \
+       _HAIKU_BUILD_FEATURE_FORMAT_PREFIX_int64
+
+#define        __HAIKU_BUILD_HAIKU_PRI_PREFIX_32       \
+       __HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_32
+#define        __HAIKU_BUILD_HAIKU_PRI_PREFIX_64       \
+       __HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_64
+
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_64_BIT
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR      \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_64
 #else
-#      define __HAIKU_STD_PRI_PREFIX_64        "ll"
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR      \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_32
 #endif
 
-#define        __HAIKU_PRI_PREFIX_32           __HAIKU_STD_PRI_PREFIX_32
-#define        __HAIKU_PRI_PREFIX_64           __HAIKU_STD_PRI_PREFIX_64
-
-#ifdef __HAIKU_ARCH_64_BIT
-#      define __HAIKU_PRI_PREFIX_ADDR  __HAIKU_PRI_PREFIX_64
+#ifdef __HAIKU_BUILD_HAIKU_ARCH_PHYSICAL_64_BIT
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_64
 #else
-#      define __HAIKU_PRI_PREFIX_ADDR  __HAIKU_PRI_PREFIX_32
-#endif
-
-#ifdef __HAIKU_ARCH_PHYSICAL_64_BIT
-#      define __HAIKU_PRI_PREFIX_PHYS_ADDR     __HAIKU_PRI_PREFIX_64
-#else
-#      define __HAIKU_PRI_PREFIX_PHYS_ADDR     __HAIKU_PRI_PREFIX_32
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_32
 #endif
 
 
 /* a generic address type wide enough for virtual and physical addresses */
-#if __HAIKU_ARCH_BITS >= __HAIKU_ARCH_PHYSICAL_BITS
-       typedef __haiku_addr_t                                  
__haiku_generic_addr_t;
-#      define __HAIKU_GENERIC_ADDR_MAX                 __HAIKU_ADDR_MAX
-#      define __HAIKU_PRI_PREFIX_GENERIC_ADDR  __HAIKU_PRI_PREFIX_ADDR
+#if __HAIKU_BUILD_HAIKU_ARCH_BITS >= __HAIKU_BUILD_HAIKU_ARCH_PHYSICAL_BITS
+       typedef __haiku_build_haiku_addr_t              
__haiku_build_haiku_generic_addr_t;
+#      define __HAIKU_BUILD_HAIKU_GENERIC_ADDR_MAX                     \
+               __HAIKU_BUILD_HAIKU_ADDR_MAX
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR      \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR
 #else
-       typedef __haiku_phys_addr_t                             
__haiku_generic_addr_t;
-#      define __HAIKU_GENERIC_ADDR_MAX                 __HAIKU_PHYS_ADDR_MAX
-#      define __HAIKU_PRI_PREFIX_GENERIC_ADDR  __HAIKU_PRI_PREFIX_PHYS_ADDR
+       typedef __haiku_build_haiku_phys_addr_t 
__haiku_build_haiku_generic_addr_t;
+#      define __HAIKU_BUILD_HAIKU_GENERIC_ADDR_MAX                     \
+               __HAIKU_BUILD_HAIKU_PHYS_ADDR_MAX
+#      define __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR      \
+               __HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR
 #endif
 
 
+/* map the macros/types, if not building the libroot mapper functions */
+
+#ifndef _HAIKU_BUILD_LIBROOT_FUNCTION_WRAPPER
+
+typedef __haiku_build_haiku_std_int8   __haiku_std_int8;
+typedef __haiku_build_haiku_std_uint8  __haiku_std_uint8;
+typedef __haiku_build_haiku_std_int16  __haiku_std_int16;
+typedef __haiku_build_haiku_std_uint16 __haiku_std_uint16;
+typedef __haiku_build_haiku_std_int32  __haiku_std_int32;
+typedef __haiku_build_haiku_std_uint32 __haiku_std_uint32;
+typedef __haiku_build_haiku_std_int64  __haiku_std_int64;
+typedef __haiku_build_haiku_std_uint64 __haiku_std_uint64;
+
+typedef __haiku_build_haiku_int8       __haiku_int8;
+typedef __haiku_build_haiku_uint8      __haiku_uint8;
+typedef __haiku_build_haiku_int16      __haiku_int16;
+typedef __haiku_build_haiku_uint16     __haiku_uint16;
+typedef __haiku_build_haiku_int32      __haiku_int32;
+typedef __haiku_build_haiku_uint32     __haiku_uint32;
+typedef __haiku_build_haiku_int64      __haiku_int64;
+typedef __haiku_build_haiku_uint64     __haiku_uint64;
+
+typedef        __haiku_build_haiku_saddr_t                     __haiku_saddr_t;
+typedef        __haiku_build_haiku_addr_t                      __haiku_addr_t;
+typedef        __haiku_build_haiku_phys_saddr_t        __haiku_phys_saddr_t;
+typedef        __haiku_build_haiku_phys_addr_t         __haiku_phys_addr_t;
+
+#define __HAIKU_SADDR_MAX      __HAIKU_BUILD_HAIKU_SADDR_MAX
+#define __HAIKU_ADDR_MAX       __HAIKU_BUILD_HAIKU_ADDR_MAX
+#define __HAIKU_SADDR_MIN      __HAIKU_BUILD_HAIKU_SADDR_MIN
+
+#define __HAIKU_PHYS_SADDR_MAX __HAIKU_BUILD_HAIKU_PHYS_SADDR_MAX
+#define __HAIKU_PHYS_ADDR_MAX  __HAIKU_BUILD_HAIKU_PHYS_ADDR_MAX
+#define __HAIKU_PHYS_SADDR_MIN __HAIKU_BUILD_HAIKU_PHYS_SADDR_MIN
+
+#define        __HAIKU_STD_PRI_PREFIX_32       
__HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_32
+#define __HAIKU_STD_PRI_PREFIX_64      __HAIKU_BUILD_HAIKU_STD_PRI_PREFIX_64
+
+#define        __HAIKU_PRI_PREFIX_32   __HAIKU_BUILD_HAIKU_PRI_PREFIX_32
+#define        __HAIKU_PRI_PREFIX_64   __HAIKU_BUILD_HAIKU_PRI_PREFIX_64
+
+#define __HAIKU_PRI_PREFIX_ADDR                        
__HAIKU_BUILD_HAIKU_PRI_PREFIX_ADDR
+#define __HAIKU_PRI_PREFIX_PHYS_ADDR   __HAIKU_BUILD_HAIKU_PRI_PREFIX_PHYS_ADDR
+
+typedef __haiku_build_haiku_generic_addr_t             __haiku_generic_addr_t;
+#define __HAIKU_GENERIC_ADDR_MAX       __HAIKU_BUILD_HAIKU_GENERIC_ADDR_MAX
+#define __HAIKU_PRI_PREFIX_GENERIC_ADDR                \
+       __HAIKU_BUILD_HAIKU_PRI_PREFIX_GENERIC_ADDR
+
+#endif /* _HAIKU_BUILD_LIBROOT_FUNCTION_WRAPPER */
+
 #endif /* _CONFIG_BUILD_TYPES_H */


Other related posts: