Access to operating-system files

The DataBlade® API provides file-access functions for access to operating-system files from within a C UDR. These functions provide file management that is similar to what operating-system file-access functions provide.

The DataBlade API file-access functions call the corresponding operating-system functions to perform their tasks; however, the DataBlade API functions periodically yield the virtual processor to limit the effects of blocking I/O.
Restriction: Do not call operating-system file I/O functions from within a C UDR. Use these DataBlade API file-access functions instead because they are safer in a C UDR than their operating-system equivalents. For more information, see Avoid blocking I/O calls.
The following table lists the DataBlade API functions for the basic file-access operations and the analogous operating-system calls for these operations.
Table 1. DataBlade API file-access functions
File-access operation File-access function Operating-system call
Open an operating-system file and generate a file descriptor for the file mi_file_open() open()
Seek to a specified position to begin a read or write operation on a file up to 2Gb. mi_file_seek() seek()
Seek to a specified position to begin a read or write operation on a file greater than 2Gb. mi_file_seek8() seek8()
Obtain the current seek position on a file up to 2 GB. mi_file_tell() tell()
Obtain the current seek position on a file greater that 2 GB. mi_file_tell8() tell8()
Perform a read or write operation for a specified number of bytes mi_file_read(), mi_file_write() read(), write()
Obtain status information about a specified smart large object mi_file_sync() sync()
Close an operating-system file and deallocate the file descriptor mi_file_close() close()
Unlink (remove) an operating-system file mi_file_unlink() unlink()
Obtain an errno value for the file operation mi_file_errno() GLOBAL INT ERRNO;
Tip: The DataBlade API file-access functions execute in client LIBMI applications as well as C UDRs. For DataBlade API modules that you design to run in both client LIBMI applications and UDRs, use these file-access functions. For information about the behavior of these functions in a client LIBMI application, see Write a client LIBMI application.
The DataBlade API accesses operating-system files through file descriptors. These file descriptors are similar in purpose to operating-system file descriptors. The following table summarizes the memory durations for a file descriptor.
Memory duration Memory operation Function name
Duration of session (PER_SESSION) Constructor mi_file_open()
Duration of session (PER_SESSION) Destructor mi_file_close(), mi_file_unlink()