This document is out-of-date as the process for generating unifyfs_list.txt has bugs which causes the generation of gotcha_map_unifyfs_list.h to have bugs as well. More information on this can be found in issue #172.
An updated guide and scripts needs to be created for writing and adding new wrappers to UnifyFS.
The files in client/check_fns/ folder help manage the set of wrappers that are implemented. In particular, they are used to enable a tool that detects I/O routines used by an application that are not yet supported in UnifyFS. They are also used to generate the code required for GOTCHA.
fakechroot_list.txt - lists I/O routines from fakechroot
gnulibc_list.txt - I/O routines from libc
cstdio_list.txt - I/O routines from stdio
posix_list.txt - I/O routines in POSIX
unifyfs_list.txt - list of wrappers in UnifyFS
unifyfs_unsupported_list.txt - list of wrappers in UnifyFS that are implemented, but not supported
This tool identifies the set of I/O calls used in an application by running nm on the executable. It reports any I/O routines used by the app, which are not supported by UnifyFS. If an application uses an I/O routine that is not supported, it likely cannot use UnifyFS. If the tool does not report unsupported wrappers, the app may work with UnifyFS but it is not guaranteed to work.
Building the GOTCHA List
python unifyfs_translate.py unifyfs_list
Commands to Build Files
The fakechroot_list.txt file lists I/O routines implemented in fakechroot. This list was generated using the following commands:
git clone https://github.com/fakechroot/fakechroot.git fakechroot.git cd fakechroot.git/src ls *.c > fakechroot_list.txt
The gnulibc_list.txt file lists I/O routines available in libc. This list was written by hand using information from http://www.gnu.org/software/libc/manual/html_node/I_002fO-Overview.html#I_002fO-Overview.
The cstdio_list.txt file lists I/O routines available in libstdio. This list was written by hand using information from http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf.
The unifyfs_list.txt file specifies the set of wrappers in UnifyFS. Most but not all such wrappers are supported. The command to build unifyfs list:
grep UNIFYFS_WRAP ../src/\*.c > unifyfs_list.txt
The unifyfs_unsupported_list.txt file specifies wrappers that are in UnifyFS, but are known to not actually be supported. This list is written by hand.