GlusterFS Porting Guide ----------------------- * General setup The configure script will detect the target platform for the build. All platform-specific CFLAGS, macro definitions should be done in configure.ac Platform-specific code can be written like this: #ifdef GF_DARWIN_HOST_OS /* some code specific to Darwin */ #endif * Coding guidelines In general, avoid glibc extensions. For example, nested functions don't work on Mac OS X. It is best to stick to C99. When using library calls and system calls, pay attention to the portability notes. As far as possible stick to POSIX-specified behavior. Do not use anything expressly permitted by the specification. For example, some fields in structures may be present only on certain platforms. Avoid use of such things. Do not pass values of constants such as F_*, O_*, errno values, etc. across platforms. Please refer compat-errno.h for more details about errno handling inside glusterfs for cross platform. * Specific issues - The argp library is available only on Linux through glibc, but for other platforms glusterfs has already included argp-standalone library which will statically linked during the glusterfs build. - Extended attribute calls (setxattr, listxattr, etc.) have differing prototypes on different platforms. See compat.h for macro definitions to resolve this, also read out the specific extended attribute documentation for your platforms. ------------------------------------------ Last revised: Thu Feb 28 13:58:07 IST 2008 ------------------------------------------