mirror of
https://github.com/jart/cosmopolitan.git
synced 2025-05-30 17:22:27 +00:00
The organization of the source files is now much more rational. Old experiments that didn't work out are now deleted. Naming of things like files is now more intuitive.
34 lines
879 B
C
34 lines
879 B
C
#ifndef COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_
|
|
#define COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_
|
|
#include "libc/intrin/nopl.h"
|
|
#include "libc/thread/thread.h"
|
|
#include "libc/stdio/stdio.h"
|
|
#if !(__ASSEMBLER__ + __LINKER__ + 0)
|
|
COSMOPOLITAN_C_START_
|
|
|
|
struct StdioFlushHandles {
|
|
size_t i, n;
|
|
FILE **p;
|
|
};
|
|
|
|
struct StdioFlush {
|
|
struct StdioFlushHandles handles;
|
|
FILE *handles_initmem[8];
|
|
};
|
|
|
|
hidden extern struct StdioFlush __fflush;
|
|
|
|
void __fflush_lock(void);
|
|
void __fflush_unlock(void);
|
|
|
|
#ifdef _NOPL0
|
|
#define __fflush_lock() _NOPL0("__threadcalls", __fflush_lock)
|
|
#define __fflush_unlock() _NOPL0("__threadcalls", __fflush_unlock)
|
|
#else
|
|
#define __fflush_lock() (__threaded ? __fflush_lock() : 0)
|
|
#define __fflush_unlock() (__threaded ? __fflush_unlock() : 0)
|
|
#endif
|
|
|
|
COSMOPOLITAN_C_END_
|
|
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
|
|
#endif /* COSMOPOLITAN_LIBC_STDIO_FFLUSH_H_ */
|