1#ifndef __XRDSYS_PLATFORM_H__
2#define __XRDSYS_PLATFORM_H__
41#define MAXNAMELEN NAME_MAX
44#include <AvailabilityMacros.h>
46#define fdatasync(x) fsync(x)
47#define MAXNAMELEN NAME_MAX
49# define dirent64 dirent
52#define off64_t int64_t
54#if (!defined(MAC_OS_X_VERSION_10_5) || \
55 MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_5)
66#define posix_memalign(memp, algn, sz) \
67 ((*memp = memalign(algn, sz)) ? 0 : ENOMEM)
68#define __USE_LEGACY_PROTOTYPES__ 1
71#if defined(__linux__) || defined(__APPLE__) || defined(__FreeBSD__)
75#if !defined(__FreeBSD__)
76#define F_DUP2FD F_DUPFD
80#define STATFS_BUFF struct statfs
84#define FLOCK_t struct flock
86typedef off_t offset_t;
88#define GTZ_NULL (struct timezone *)0
93#define STATFS_BUFF struct statvfs
99#define FLOCK_t flock_t
101#define GTZ_NULL (void *)0
107#define SHMDT_t const void *
113#include <AvailabilityMacros.h>
124#define memalign(pgsz,amt) valloc(amt)
125#define posix_memalign(memp, algn, sz) \
126 ((*memp = memalign(algn, sz)) ? 0 : ENOMEM)
127#define SHMDT_t void *
129#define EDEADLOCK EDEADLK
135typedef off_t off64_t;
136#define memalign(pgsz,amt) valloc(amt)
142#if defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || \
143 defined(__IEEE_BIG_ENDIAN) || \
144 (defined(__BYTE_ORDER) && __BYTE_ORDER == __BIG_ENDIAN)
145#define Xrd_Big_Endian
147#define htonll(_x_) _x_
150#define h2nll(_x_, _y_) memcpy((void *)&_y_,(const void *)&_x_,sizeof(long long))
153#define ntohll(_x_) _x_
156#define n2hll(_x_, _y_) memcpy((void *)&_y_,(const void *)&_x_,sizeof(long long))
159#elif defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || \
160 defined(__IEEE_LITTLE_ENDIAN) || \
161 (defined(__BYTE_ORDER) && __BYTE_ORDER == __LITTLE_ENDIAN)
162#if !defined(__GNUC__) || defined(__APPLE__)
164#if !defined(__sun) || (defined(__sun) && (!defined(_LP64) || defined(__SunOS_5_10)))
165extern "C" unsigned long long Swap_n2hll(
unsigned long long x);
167#define htonll(_x_) Swap_n2hll(_x_)
170#define ntohll(_x_) Swap_n2hll(_x_)
177#define htonll(_x_) __bswap_64(_x_)
180#define ntohll(_x_) __bswap_64(_x_)
186#define h2nll(_x_, _y_) memcpy((void *)&_y_,(const void *)&_x_,sizeof(long long));\
190#define n2hll(_x_, _y_) memcpy((void *)&_y_,(const void *)&_x_,sizeof(long long));\
196#error Unable to determine target architecture endianness!
202{
extern size_t strlcpy(
char *dst,
const char *src,
size_t size);}
208#if defined(__solaris__) && !defined(__linux__)
209# if __GNUC__ >= 3 || __GNUC_MINOR__ >= 90
213#if defined(__linux__)
214# include <features.h>
215# if __GNU_LIBRARY__ == 6
221#if defined(__MACH__) && defined(__i386__)
224#if defined(_AIX) || \
225 (defined(XR__SUNGCC3) && !defined(__arch64__))
226# define SOCKLEN_t size_t
227#elif defined(XR__GLIBC) || \
228 defined(__FreeBSD__) || \
229 (defined(XR__SUNGCC3) && defined(__arch64__)) || defined(__APPLE__) || \
230 (defined(__sun) && defined(_SOCKLEN_T))
232# define SOCKLEN_t socklen_t
234#elif !defined(SOCKLEN_t)
235# define SOCKLEN_t int
239#define PTR2INT(x) static_cast<int>((long long)x)
241#define PTR2INT(x) int(x)
245#include "XrdSys/XrdWin32.hh"
246#define Netdata_t void *
247#define Sokdata_t char *
248#define IOV_INIT(data,dlen) dlen,data
249#define MAKEDIR(path,mode) mkdir(path)
250#define net_errno WSAGetLastError()
253#define Netdata_t char *
254#define Sokdata_t void *
255#define IOV_INIT(data,dlen) data,dlen
256#define MAKEDIR(path,mode) mkdir(path,mode)
257#define net_errno errno
261#define MAXNAMELEN 256
262#define MAXPATHLEN 1024
264#include <sys/param.h>
265#if defined(__FreeBSD__)
266#define MAXNAMELEN 256
271#define XRDABS(x) (x < 0 ? -x : x)
274#define LT_MODULE_EXT ".so"