(linenum→info "unix/slp.c:2238")

glibc/2.7/misc/mmap64.c

    1: /* Copyright (C) 1997 Free Software Foundation, Inc.
    2:    This file is part of the GNU C Library.
    3: 
    4:    The GNU C Library is free software; you can redistribute it and/or
    5:    modify it under the terms of the GNU Lesser General Public
    6:    License as published by the Free Software Foundation; either
    7:    version 2.1 of the License, or (at your option) any later version.
    8: 
    9:    The GNU C Library is distributed in the hope that it will be useful,
   10:    but WITHOUT ANY WARRANTY; without even the implied warranty of
   11:    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   12:    Lesser General Public License for more details.
   13: 
   14:    You should have received a copy of the GNU Lesser General Public
   15:    License along with the GNU C Library; if not, write to the Free
   16:    Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
   17:    02111-1307 USA.  */
   18: 
   19: #include <errno.h>
   20: #include <sys/mman.h>
   21: #include <sys/types.h>
   22: 
   23: /* Map addresses starting near ADDR and extending for LEN bytes.  From
   24:    OFFSET into the file FD describes according to PROT and FLAGS.  If ADDR
   25:    is nonzero, it is the desired mapping address.  If the MAP_FIXED bit is
   26:    set in FLAGS, the mapping will be at ADDR exactly (which must be
   27:    page-aligned); otherwise the system chooses a convenient nearby address.
   28:    The return value is the actual mapping address chosen or MAP_FAILED
   29:    for errors (in which case `errno' is set).  A successful `mmap' call
   30:    deallocates any previous mapping for the affected region.  */
   31: 
   32: __ptr_t
   33: __mmap64 (__ptr_t addr, size_t len, int prot, int flags, int fd,
   34:           __off64_t offset)
   35: {
   36:   off_t small_offset = (off_t) offset;
   37: 
   38:   if (small_offset != offset)
   39:     {
   40:       /* We cannot do this since the offset is too large.  */
   41:       __set_errno (EOVERFLOW);
   42:       return MAP_FAILED;
   43:     }
   44: 
   45:   return __mmap (addr, len, prot, flags, fd, small_offset);
   46: }
   47: 
   48: weak_alias (__mmap64, mmap64)
Syntax (Markdown)