46 lines
1.6 KiB
Plaintext
46 lines
1.6 KiB
Plaintext
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
|
|
------------------------------------------
|