3 /* OS glue functions declaration <_PDCLIB_glue.h>
5 This file is part of the Public Domain C Library (PDCLib).
6 Permission is granted to use, modify, and / or redistribute at will.
10 #define _PDCLIB_INT_H _PDCLIB_INT_H
11 #include <_PDCLIB_int.h>
14 /* -------------------------------------------------------------------------- */
15 /* OS "glue", part 2 */
16 /* These are the functions you will have to touch, as they are where PDCLib */
17 /* interfaces with the operating system. */
18 /* They operate on data types partially defined by _PDCLIB_config.h. */
19 /* -------------------------------------------------------------------------- */
23 /* A system call that terminates the calling process, returning a given status
26 void _PDCLIB_Exit( int status ) _PDCLIB_NORETURN;
28 /* A system call that adds n pages of memory to the process heap (if n is
29 positive), or releases n pages from the process heap (if n is negative).
30 Return a (void *) pointing to the *former* end-of-heap if successful, NULL
33 void * _PDCLIB_allocpages( int n );
38 /* A system call that opens a file identified by name in a given mode. Return
39 a file descriptor uniquely identifying that file.
40 (The mode is the return value of the _PDCLIB_filemode() function.)
42 _PDCLIB_fd_t _PDCLIB_open( char const * const filename, unsigned int mode );
44 /* A system call that writes a stream's buffer.
45 Returns 0 on success, EOF on write error.
46 Sets stream error flags and errno appropriately on error.
48 int _PDCLIB_flushbuffer( struct _PDCLIB_file_t * stream );
50 /* A system call that fills a stream's buffer.
51 Returns 0 on success, EOF on read error / EOF.
52 Sets stream EOF / error flags and errno appropriately on error.
54 int _PDCLIB_fillbuffer( struct _PDCLIB_file_t * stream );
56 /* A system call that repositions within a file. Returns new offset on success,
59 _PDCLIB_int64_t _PDCLIB_seek( struct _PDCLIB_file_t * stream, _PDCLIB_int64_t offset, int whence );
61 /* A system call that closes a file identified by given file descriptor. Return
62 zero on success, non-zero otherwise.
64 int _PDCLIB_close( _PDCLIB_fd_t fd );
66 /* A system call that removes a file identified by name. Return zero on success,
69 int _PDCLIB_remove( const char * filename );
71 /* A system call that renames a file from given old name to given new name.
72 Return zero on success, non-zero otherwise. In case of failure, the file
73 must still be accessible by old name. Any handling of open files etc. is
74 done by standard rename() already.
76 int _PDCLIB_rename( const char * old, const char * new );