about summary refs log tree commit diff
path: root/libio/libioP.h
diff options
context:
space:
mode:
authorRoland McGrath <roland@gnu.org>2002-08-02 01:27:53 +0000
committerRoland McGrath <roland@gnu.org>2002-08-02 01:27:53 +0000
commite42637b67781ed47a1581c6062421de514560cb3 (patch)
tree357b08520e6b39410be8266299d4657a98c10dad /libio/libioP.h
parent0950889b810736fe7ad340a13a5ecf76672e1a84 (diff)
downloadglibc-e42637b67781ed47a1581c6062421de514560cb3.tar.gz
glibc-e42637b67781ed47a1581c6062421de514560cb3.tar.xz
glibc-e42637b67781ed47a1581c6062421de514560cb3.zip
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.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/libio/libioP.h b/libio/libioP.h
index bfb36c30ef..cb9e918468 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 *));