Two aspects are involved in implementing ADIO: implementing an API on top of ADIO and implementing ADIO on a file system. The implementation may be done by using macros to eliminate the overhead of function calls (if it is not essential to check the correctness of function arguments).