2011-05-19 15:21:42 +08:00
|
|
|
/*
|
|
|
|
* stdio_ext.h
|
|
|
|
*
|
|
|
|
* Definitions for I/O internal operations, originally from Solaris.
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifndef _STDIO_EXT_H_
|
|
|
|
#define _STDIO_EXT_H_
|
|
|
|
|
|
|
|
#ifdef __rtems__
|
|
|
|
#error "<stdio_ext.h> not supported"
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
2014-12-16 02:22:56 +08:00
|
|
|
#define FSETLOCKING_QUERY 0
|
|
|
|
#define FSETLOCKING_INTERNAL 1
|
|
|
|
#define FSETLOCKING_BYCALLER 2
|
|
|
|
|
2011-05-19 15:21:42 +08:00
|
|
|
_BEGIN_STD_C
|
|
|
|
|
|
|
|
void _EXFUN(__fpurge,(FILE *));
|
2014-12-16 02:22:56 +08:00
|
|
|
int _EXFUN(__fsetlocking,(FILE *, int));
|
2011-05-19 15:21:42 +08:00
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
/* TODO:
|
|
|
|
|
|
|
|
void _flushlbf (void);
|
|
|
|
*/
|
|
|
|
|
|
|
|
#ifdef __GNUC__
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE size_t
|
2013-08-02 15:52:09 +08:00
|
|
|
__fbufsize (FILE *__fp) { return (size_t) __fp->_bf._size; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__freading (FILE *__fp) { return (__fp->_flags & __SRD) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__fwriting (FILE *__fp) { return (__fp->_flags & __SWR) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__freadable (FILE *__fp) { return (__fp->_flags & (__SRD | __SRW)) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2014-12-12 00:53:32 +08:00
|
|
|
__fwritable (FILE *__fp) { return (__fp->_flags & (__SWR | __SRW)) != 0; }
|
2013-08-02 15:52:09 +08:00
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE int
|
2013-08-02 15:52:09 +08:00
|
|
|
__flbf (FILE *__fp) { return (__fp->_flags & __SLBF) != 0; }
|
|
|
|
|
2014-12-10 17:39:06 +08:00
|
|
|
_ELIDABLE_INLINE size_t
|
2013-08-02 15:52:09 +08:00
|
|
|
__fpending (FILE *__fp) { return __fp->_p - __fp->_bf._base; }
|
|
|
|
|
|
|
|
#else
|
|
|
|
|
2014-12-12 00:53:32 +08:00
|
|
|
size_t _EXFUN(__fbufsize,(FILE *));
|
|
|
|
int _EXFUN(__freading,(FILE *));
|
|
|
|
int _EXFUN(__fwriting,(FILE *));
|
|
|
|
int _EXFUN(__freadable,(FILE *));
|
|
|
|
int _EXFUN(__fwritable,(FILE *));
|
|
|
|
int _EXFUN(__flbf,(FILE *));
|
|
|
|
size_t _EXFUN(__fpending,(FILE *));
|
|
|
|
|
|
|
|
#ifndef __cplusplus
|
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
#define __fbufsize(__fp) ((size_t) (__fp)->_bf._size)
|
|
|
|
#define __freading(__fp) (((__fp)->_flags & __SRD) != 0)
|
|
|
|
#define __fwriting(__fp) (((__fp)->_flags & __SWR) != 0)
|
|
|
|
#define __freadable(__fp) (((__fp)->_flags & (__SRD | __SRW)) != 0)
|
2014-12-12 00:53:32 +08:00
|
|
|
#define __fwritable(__fp) (((__fp)->_flags & (__SWR | __SRW)) != 0)
|
2013-08-02 15:52:09 +08:00
|
|
|
#define __flbf(__fp) (((__fp)->_flags & __SLBF) != 0)
|
|
|
|
#define __fpending(__fp) ((size_t) ((__fp)->_p - (__fp)->_bf._base))
|
|
|
|
|
2014-12-12 00:53:32 +08:00
|
|
|
#endif /* __cplusplus */
|
|
|
|
|
2013-08-02 15:52:09 +08:00
|
|
|
#endif /* __GNUC__ */
|
|
|
|
|
2011-05-19 15:21:42 +08:00
|
|
|
_END_STD_C
|
|
|
|
|
|
|
|
#endif /* _STDIO_EXT_H_ */
|