mirror of git://sourceware.org/git/glibc.git
(_IO_file_jumps_mmap): Use it. (_IO_file_underflow_mmap): Rewritten. If after EOF or fflush, repeat the stat check and resize the mapped buffer as necessary. 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. * libio/tst-mmap-eofsync.c: New file. * libio/tst-mmap-fflushsync.c: New file. * libio/bug-mmap-fflush.c: New file. * libio/tst-mmap2-eofsync.c: New file. * libio/Makefile (tests): Add them. * libio/wfileops.c (_IO_wfile_underflow_mmap): Don't set EOF bit when _IO_file_underflow_mmap fails, it already set the appropriate bit. |
||
|---|---|---|
| .. | ||
| bits | ||
| .cvsignore | ||
| Banner | ||
| Depend | ||
| Makefile | ||
| Versions | ||
| __fbufsize.c | ||
| __flbf.c | ||
| __fpending.c | ||
| __fpurge.c | ||
| __freadable.c | ||
| __freading.c | ||
| __fsetlocking.c | ||
| __fwritable.c | ||
| __fwriting.c | ||
| bug-fseek.c | ||
| bug-mmap-fflush.c | ||
| bug-rewind.c | ||
| bug-ungetc.c | ||
| bug-ungetwc1.c | ||
| bug-ungetwc2.c | ||
| clearerr.c | ||
| clearerr_u.c | ||
| fcloseall.c | ||
| feof.c | ||
| feof_u.c | ||
| ferror.c | ||
| ferror_u.c | ||
| filedoalloc.c | ||
| fileno.c | ||
| fileops.c | ||
| fmemopen.c | ||
| fputc.c | ||
| fputc_u.c | ||
| fputwc.c | ||
| fputwc_u.c | ||
| freopen.c | ||
| freopen64.c | ||
| fseek.c | ||
| fseeko.c | ||
| fseeko64.c | ||
| ftello.c | ||
| ftello64.c | ||
| fwide.c | ||
| fwprintf.c | ||
| fwscanf.c | ||
| genops.c | ||
| getc.c | ||
| getc_u.c | ||
| getchar.c | ||
| getchar_u.c | ||
| getwc.c | ||
| getwc_u.c | ||
| getwchar.c | ||
| getwchar_u.c | ||
| iofclose.c | ||
| iofdopen.c | ||
| iofflush.c | ||
| iofflush_u.c | ||
| iofgetpos.c | ||
| iofgetpos64.c | ||
| iofgets.c | ||
| iofgets_u.c | ||
| iofgetws.c | ||
| iofgetws_u.c | ||
| iofopen.c | ||
| iofopen64.c | ||
| iofopncook.c | ||
| iofputs.c | ||
| iofputs_u.c | ||
| iofputws.c | ||
| iofputws_u.c | ||
| iofread.c | ||
| iofread_u.c | ||
| iofsetpos.c | ||
| iofsetpos64.c | ||
| ioftell.c | ||
| iofwide.c | ||
| iofwrite.c | ||
| iofwrite_u.c | ||
| iogetdelim.c | ||
| iogetline.c | ||
| iogets.c | ||
| iogetwline.c | ||
| iolibio.h | ||
| iopadn.c | ||
| iopopen.c | ||
| ioputs.c | ||
| ioseekoff.c | ||
| ioseekpos.c | ||
| iosetbuffer.c | ||
| iosetvbuf.c | ||
| ioungetc.c | ||
| ioungetwc.c | ||
| iovdprintf.c | ||
| iovsprintf.c | ||
| iovsscanf.c | ||
| iovswscanf.c | ||
| iowpadn.c | ||
| libio.h | ||
| libioP.h | ||
| memstream.c | ||
| obprintf.c | ||
| oldfileops.c | ||
| oldiofclose.c | ||
| oldiofdopen.c | ||
| oldiofgetpos.c | ||
| oldiofgetpos64.c | ||
| oldiofopen.c | ||
| oldiofsetpos.c | ||
| oldiofsetpos64.c | ||
| oldiopopen.c | ||
| oldpclose.c | ||
| oldstdfiles.c | ||
| oldtmpfile.c | ||
| pclose.c | ||
| peekc.c | ||
| putc.c | ||
| putc_u.c | ||
| putchar.c | ||
| putchar_u.c | ||
| putwc.c | ||
| putwc_u.c | ||
| putwchar.c | ||
| putwchar_u.c | ||
| rewind.c | ||
| setbuf.c | ||
| setlinebuf.c | ||
| stdfiles.c | ||
| stdio.c | ||
| stdio.h | ||
| strfile.h | ||
| strops.c | ||
| swprintf.c | ||
| swscanf.c | ||
| test-fmemopen.c | ||
| test-freopen.c | ||
| test-freopen.sh | ||
| tst-atime.c | ||
| tst-eof.c | ||
| tst-ext.c | ||
| tst-fgetws.c | ||
| tst-fopenloc.c | ||
| tst-freopen.c | ||
| tst-mmap-eofsync.c | ||
| tst-mmap-fflushsync.c | ||
| tst-mmap-setvbuf.c | ||
| tst-mmap2-eofsync.c | ||
| tst-sscanf.c | ||
| tst-swscanf.c | ||
| tst-ungetwc1.c | ||
| tst-ungetwc2.c | ||
| tst-widetext.c | ||
| tst-widetext.input | ||
| tst_getwc.c | ||
| tst_getwc.input | ||
| tst_putwc.c | ||
| tst_swprintf.c | ||
| tst_swscanf.c | ||
| tst_wprintf.c | ||
| tst_wprintf2.c | ||
| tst_wscanf.c | ||
| tst_wscanf.input | ||
| vasprintf.c | ||
| vscanf.c | ||
| vsnprintf.c | ||
| vswprintf.c | ||
| vwprintf.c | ||
| vwscanf.c | ||
| wfiledoalloc.c | ||
| wfileops.c | ||
| wgenops.c | ||
| wprintf.c | ||
| wscanf.c | ||
| wstrops.c | ||