The standard library Posix_Io api is a sub-API of the Posixlib api.
The above information is manually maintained and may contain errors.
api { eqtype File_Descriptor; eqtype Process_Id; make_pipe : Void -> {infd:File_Descriptor, outfd:File_Descriptor}; make_pipe__without_syscall_redirection : Void -> {infd:File_Descriptor, outfd:File_Descriptor}; dup : File_Descriptor -> File_Descriptor; dup2 : {new:File_Descriptor, old:File_Descriptor} -> Void; dup2__without_syscall_redirection : {new:File_Descriptor, old:File_Descriptor} -> Void; close : File_Descriptor -> Void; close__without_syscall_redirection : File_Descriptor -> Void; copy_file : {from:String, to:String} -> Int; file_contents_are_identical : (String , String) -> Bool; read_as_vector : {file_descriptor:File_Descriptor, max_bytes_to_read:Int} -> vector_of_one_byte_unts::Vector; read_into_buffer : {file_descriptor:File_Descriptor, read_buffer:rw_vector_slice_of_one_byte_unts::Slice} -> Int; stdout_redirect : Ref(Null_Or((String -> Void) ) ); stderr_redirect : Ref(Null_Or((String -> Void) ) ); write_string : (File_Descriptor , String) -> Int; write_vector : (File_Descriptor , vector_slice_of_one_byte_unts::Slice) -> Int; write_rw_vector : (File_Descriptor , rw_vector_slice_of_one_byte_unts::Slice) -> Int; read_as_vector__without_syscall_redirection : {file_descriptor:File_Descriptor, max_bytes_to_read:Int} -> vector_of_one_byte_unts::Vector; read_into_buffer__without_syscall_redirection : {file_descriptor:File_Descriptor, read_buffer:rw_vector_slice_of_one_byte_unts::Slice} -> Int; write_vector__without_syscall_redirection : (File_Descriptor , vector_slice_of_one_byte_unts::Slice) -> Int; write_rw_vector__without_syscall_redirection : (File_Descriptor , rw_vector_slice_of_one_byte_unts::Slice) -> Int; Whence = SEEK_CUR | SEEK_END | SEEK_SET; package fd : api { eqtype Flags; to_unt : Flags -> one_word_unt::Unt; from_unt : one_word_unt::Unt -> Flags; all : Flags; flags : List(Flags ) -> Flags; intersect : List(Flags ) -> Flags; clear : (Flags , Flags) -> Flags; all_set : (Flags , Flags) -> Bool; any_set : (Flags , Flags) -> Bool; cloexec : Flags;};; package flags : api { eqtype Flags; to_unt : Flags -> one_word_unt::Unt; from_unt : one_word_unt::Unt -> Flags; all : Flags; flags : List(Flags ) -> Flags; intersect : List(Flags ) -> Flags; clear : (Flags , Flags) -> Flags; all_set : (Flags , Flags) -> Bool; any_set : (Flags , Flags) -> Bool; append : Flags; nonblock : Flags; sync : Flags; rsync : Flags; dsync : Flags;};; dupfd : {base:File_Descriptor, old:File_Descriptor} -> File_Descriptor; getfd : File_Descriptor -> fd::Flags; setfd : (File_Descriptor , fd::Flags) -> Void; setfd__without_syscall_redirection : (File_Descriptor , fd::Flags) -> Void; getfl : File_Descriptor -> (flags::Flags , ?.posix_common::Open_Mode); setfl : (File_Descriptor , flags::Flags) -> Void; lseek : (File_Descriptor , Int , Whence) -> Int; fsync : File_Descriptor -> Void; Lock_Type = F_RDLCK | F_UNLCK | F_WRLCK; package flock : api { Flock; flock : {len:Int, locktype:Lock_Type, pid:Null_Or(Process_Id ), start:Int, whence:Whence} -> Flock; locktype : Flock -> Lock_Type; whence : Flock -> Whence; start : Flock -> Int; len : Flock -> Int; pid : Flock -> Null_Or(Process_Id );};; getlk : (File_Descriptor , flock::Flock) -> flock::Flock; setlk : (File_Descriptor , flock::Flock) -> flock::Flock; setlkw : (File_Descriptor , flock::Flock) -> flock::Flock; make_data_filereader : {file_descriptor:File_Descriptor, filename:String, ok_to_block:Bool} -> winix_base_data_file_io_driver_for_posix__premicrothread::Filereader; make_text_filereader : {file_descriptor:File_Descriptor, filename:String, ok_to_block:Bool} -> winix_base_text_file_io_driver_for_posix__premicrothread::Filereader; make_data_filewriter : {append_mode:Bool, best_io_quantum:Int, file_descriptor:File_Descriptor, filename:String, ok_to_block:Bool} -> winix_base_data_file_io_driver_for_posix__premicrothread::Filewriter; make_text_filewriter : {append_mode:Bool, best_io_quantum:Int, file_descriptor:File_Descriptor, filename:String, ok_to_block:Bool} -> winix_base_text_file_io_driver_for_posix__premicrothread::Filewriter; Sy_Int = Int; Sy_Unt = one_word_unt::Unt; osval2__syscall : String -> Sy_Int; set__osval2__ref : ({fun_name:String, io_call:String -> Sy_Int, lib_name:String} -> String -> Sy_Int) -> Void; make_pipe__syscall : Void -> (Sy_Int , Sy_Int); set__make_pipe__ref : ({fun_name:String, io_call:Void -> (Sy_Int , Sy_Int), lib_name:String} -> Void -> (Sy_Int , Sy_Int)) -> Void; dup__syscall : Sy_Int -> Sy_Int; set__dup__ref : ({fun_name:String, io_call:Sy_Int -> Sy_Int, lib_name:String} -> Sy_Int -> Sy_Int) -> Void; dup2__syscall : (Sy_Int , Sy_Int) -> Void; set__dup2__ref : ({fun_name:String, io_call:(Sy_Int , Sy_Int) -> Void, lib_name:String} -> (Sy_Int , Sy_Int) -> Void) -> Void; close__syscall : Sy_Int -> Void; set__close__ref : ({fun_name:String, io_call:Sy_Int -> Void, lib_name:String} -> Sy_Int -> Void) -> Void; read__syscall : (Int , Int) -> vector_of_one_byte_unts::Vector; set__read__ref : ( {fun_name:String, io_call:(Int , Int) -> vector_of_one_byte_unts::Vector, lib_name:String} -> (Int , Int) -> vector_of_one_byte_unts::Vector ) -> Void; readbuf__syscall : (Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int; set__readbuf__ref : ( {fun_name:String, io_call:(Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int, lib_name:String} -> (Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int ) -> Void; write_ro_slice__syscall : (Int , vector_of_one_byte_unts::Vector , Int , Int) -> Int; set__write_ro_slice__ref : ( {fun_name:String, io_call:(Int , vector_of_one_byte_unts::Vector , Int , Int) -> Int, lib_name:String} -> (Int , vector_of_one_byte_unts::Vector , Int , Int) -> Int ) -> Void; write_rw_slice__syscall : (Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int; set__write_rw_slice__ref : ( {fun_name:String, io_call:(Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int, lib_name:String} -> (Int , rw_vector_of_one_byte_unts::Rw_Vector , Int , Int) -> Int ) -> Void; fcntl_d__syscall : (Sy_Int , Sy_Int) -> Sy_Int; set__fcntl_d__ref : ( {fun_name:String, io_call:(Sy_Int , Sy_Int) -> Sy_Int, lib_name:String} -> (Sy_Int , Sy_Int) -> Sy_Int ) -> Void; fcntl_gfd__syscall : Sy_Int -> Sy_Unt; set__fcntl_gfd__ref : ({fun_name:String, io_call:Sy_Int -> Sy_Unt, lib_name:String} -> Sy_Int -> Sy_Unt) -> Void; fcntl_sfd__syscall : (Sy_Int , Sy_Unt) -> Void; set__fcntl_sfd__ref : ({fun_name:String, io_call:(Sy_Int , Sy_Unt) -> Void, lib_name:String} -> (Sy_Int , Sy_Unt) -> Void) -> Void; fcntl_gfl__syscall : Sy_Int -> (Sy_Unt , Sy_Unt); set__fcntl_gfl__ref : ( {fun_name:String, io_call:Sy_Int -> (Sy_Unt , Sy_Unt), lib_name:String} -> Sy_Int -> (Sy_Unt , Sy_Unt) ) -> Void; fcntl_sfl__syscall : (Sy_Int , Sy_Unt) -> Void; set__fcntl_sfl__ref : ({fun_name:String, io_call:(Sy_Int , Sy_Unt) -> Void, lib_name:String} -> (Sy_Int , Sy_Unt) -> Void) -> Void; Flock_Rep = (Sy_Int , Sy_Int , Int , Int , Sy_Int); fcntl_l__syscall : (Sy_Int , Sy_Int , Flock_Rep) -> Flock_Rep; set__fcntl_l__ref : ( {fun_name:String, io_call:(Sy_Int , Sy_Int , Flock_Rep) -> Flock_Rep, lib_name:String} -> (Sy_Int , Sy_Int , Flock_Rep) -> Flock_Rep ) -> Void; lseek__syscall : (Sy_Int , Int , Sy_Int) -> Int; set__lseek__ref : ( {fun_name:String, io_call:(Sy_Int , Int , Sy_Int) -> Int, lib_name:String} -> (Sy_Int , Int , Sy_Int) -> Int ) -> Void; fsync__syscall : Sy_Int -> Void; set__fsync__ref : ({fun_name:String, io_call:Sy_Int -> Void, lib_name:String} -> Sy_Int -> Void) -> Void;};