home *** CD-ROM | disk | FTP | other *** search
/ Tools / WinSN5.0Ver.iso / NETSCAP.50 / WIN1998.ZIP / ns / nsprpub / pr / src / io / prmmap.c < prev    next >
Encoding:
C/C++ Source or Header  |  1998-04-08  |  1.9 KB  |  70 lines

  1. /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
  2. /*
  3.  * The contents of this file are subject to the Netscape Public License
  4.  * Version 1.0 (the "NPL"); you may not use this file except in
  5.  * compliance with the NPL.  You may obtain a copy of the NPL at
  6.  * http://www.mozilla.org/NPL/
  7.  * 
  8.  * Software distributed under the NPL is distributed on an "AS IS" basis,
  9.  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
  10.  * for the specific language governing rights and limitations under the
  11.  * NPL.
  12.  * 
  13.  * The Initial Developer of this code under the NPL is Netscape
  14.  * Communications Corporation.  Portions created by Netscape are
  15.  * Copyright (C) 1998 Netscape Communications Corporation.  All Rights
  16.  * Reserved.
  17.  */
  18.  
  19. /*
  20.  *********************************************************************
  21.  *
  22.  * Memory-mapped files
  23.  *
  24.  *********************************************************************
  25.  */
  26.  
  27. #include "primpl.h"
  28.  
  29. PR_IMPLEMENT(PRFileMap *) PR_CreateFileMap(
  30.     PRFileDesc *fd,
  31.     PRInt64 size,
  32.     PRFileMapProtect prot)
  33. {
  34.     PRFileMap *fmap;
  35.  
  36.     PR_ASSERT(prot == PR_PROT_READONLY || prot == PR_PROT_READWRITE
  37.             || prot == PR_PROT_WRITECOPY);
  38.     fmap = PR_NEWZAP(PRFileMap);
  39.     if (NULL == fmap) {
  40.     PR_SetError(PR_OUT_OF_MEMORY_ERROR, 0);
  41.     return NULL;
  42.     }
  43.     fmap->fd = fd;
  44.     fmap->prot = prot;
  45.     if (_PR_MD_CREATE_FILE_MAP(fmap, size) == PR_SUCCESS) {
  46.     return fmap;
  47.     } else {
  48.     PR_DELETE(fmap);
  49.     return NULL;
  50.     }
  51. }
  52.  
  53. PR_IMPLEMENT(void *) PR_MemMap(
  54.     PRFileMap *fmap,
  55.     PRInt64 offset,
  56.     PRUint32 len)
  57. {
  58.     return _PR_MD_MEM_MAP(fmap, offset, len);
  59. }
  60.  
  61. PR_IMPLEMENT(PRStatus) PR_MemUnmap(void *addr, PRUint32 len)
  62. {
  63.     return _PR_MD_MEM_UNMAP(addr, len);
  64. }
  65.  
  66. PR_IMPLEMENT(PRStatus) PR_CloseFileMap(PRFileMap *fmap)
  67. {
  68.     return _PR_MD_CLOSE_FILE_MAP(fmap);
  69. }
  70.