diff options
author | Roland McGrath <roland@gnu.org> | 2002-08-02 01:27:53 +0000 |
---|---|---|
committer | Roland McGrath <roland@gnu.org> | 2002-08-02 01:27:53 +0000 |
commit | e42637b67781ed47a1581c6062421de514560cb3 (patch) | |
tree | 357b08520e6b39410be8266299d4657a98c10dad /libio/libioP.h | |
parent | 0950889b810736fe7ad340a13a5ecf76672e1a84 (diff) | |
download | glibc-e42637b67781ed47a1581c6062421de514560cb3.zip glibc-e42637b67781ed47a1581c6062421de514560cb3.tar.gz glibc-e42637b67781ed47a1581c6062421de514560cb3.tar.bz2 |
2002-07-31 Roland McGrath <roland@frob.com>
* libio/fileops.c (decide_maybe_mmap): New static function.
Code taken from libio/iofopen.c:__fopen_maybe_mmap to try to
mmap the file contents. Then switch the jump tables to the mmap
tables if it worked, or the vanilla file tables if not.
(_IO_file_underflow_maybe_mmap): New function.
(_IO_file_seekoff_maybe_mmap): New function.
(_IO_file_xsgetn_maybe_mmap): New function.
(_IO_file_jumps_maybe_mmap): New variable, jump table using those.
* libio/libioP.h: Declare those.
* libio/wfileops.c (_IO_wfile_underflow_maybe_mmap): New function.
(_IO_wfile_jumps_maybe_mmap): New variable, jump table using that.
* libio/iofopen.c (__fopen_maybe_mmap): Don't try to mmap here.
If the stream is read-only, set its jump tables to those new ones.
* libio/iofdopen.c (_IO_new_fdopen) [_G_HAVE_MMAP]: Set the initial
jump tables to the maybe_mmap ones, and don't call __fopen_maybe_mmap.
We need the tables set before _IO_file_attach.
Diffstat (limited to 'libio/libioP.h')
-rw-r--r-- | libio/libioP.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libio/libioP.h b/libio/libioP.h index bfb36c3..cb9e918 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -425,8 +425,10 @@ extern void _IO_default_imbue __P ((_IO_FILE *, void *)); extern struct _IO_jump_t _IO_file_jumps; extern struct _IO_jump_t _IO_file_jumps_mmap attribute_hidden; +extern struct _IO_jump_t _IO_file_jumps_maybe_mmap attribute_hidden; extern struct _IO_jump_t _IO_wfile_jumps attribute_hidden; extern struct _IO_jump_t _IO_wfile_jumps_mmap attribute_hidden; +extern struct _IO_jump_t _IO_wfile_jumps_maybe_mmap attribute_hidden; extern struct _IO_jump_t _IO_old_file_jumps attribute_hidden; extern struct _IO_jump_t _IO_streambuf_jumps; extern struct _IO_jump_t _IO_proc_jumps attribute_hidden; @@ -498,6 +500,8 @@ extern _IO_FILE* _IO_file_setbuf __P ((_IO_FILE *, char *, _IO_ssize_t)); extern _IO_off64_t _IO_file_seekoff __P ((_IO_FILE *, _IO_off64_t, int, int)); extern _IO_off64_t _IO_file_seekoff_mmap __P ((_IO_FILE *, _IO_off64_t, int, int)); +extern _IO_off64_t _IO_file_seekoff_maybe_mmap __P ((_IO_FILE *, _IO_off64_t, + int, int)); extern _IO_size_t _IO_file_xsputn __P ((_IO_FILE *, const void *, _IO_size_t)); extern _IO_size_t _IO_file_xsgetn __P ((_IO_FILE *, void *, _IO_size_t)); extern int _IO_file_stat __P ((_IO_FILE *, void *)); @@ -505,6 +509,7 @@ extern int _IO_file_close __P ((_IO_FILE *)); extern int _IO_file_close_mmap __P ((_IO_FILE *)); extern int _IO_file_underflow __P ((_IO_FILE *)); extern int _IO_file_underflow_mmap __P ((_IO_FILE *)); +extern int _IO_file_underflow_maybe_mmap __P ((_IO_FILE *)); extern int _IO_file_overflow __P ((_IO_FILE *, int)); #define _IO_file_is_open(__fp) ((__fp)->_fileno != -1) extern void _IO_file_init __P ((struct _IO_FILE_plus *)); |