home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / nspr30-e.zip / nspr30-e / include / md / _macos.h < prev    next >
C/C++ Source or Header  |  1998-11-02  |  16KB  |  567 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. #ifndef prmacos_h___
  20. #define prmacos_h___
  21.  
  22. //
  23. // This file contains all changes and additions which need to be made to the NSPR runtime 
  24. // for the Macintosh platform (specifically the Metrowerks environment).  This file should 
  25. // only be incluced in Macintosh builds.
  26. //
  27.  
  28. #define PR_DLL_SUFFIX        ""
  29. #define _PR_NO_PREEMPT    1
  30.  
  31. #include "prinit.h"
  32. #include "prio.h"
  33. #include "prlong.h"
  34. #include "prlock.h"
  35. #include "prcvar.h"
  36. #include "prsem.h"
  37. #include "prthread.h"
  38. #include "prtime.h"
  39. #include "prproces.h"
  40.  
  41. #if !defined(MAC_NSPR_STANDALONE)
  42. #include "macstdlibextras.h"
  43. #endif
  44.  
  45. #include <stddef.h>
  46. #include <setjmp.h>
  47. #include <Errors.h>
  48.  
  49. struct _MDProcess {
  50.     PRInt8 notused;
  51. };
  52.  
  53. struct _MDThread {
  54.     jmp_buf jb;
  55.     int osErrCode;
  56.     PRLock        *asyncIOLock;
  57.     PRCondVar    *asyncIOCVar;
  58.     void *cookie;
  59.     PRBool notifyPending;
  60. };
  61.  
  62. struct _MDThreadStack {
  63.     PRInt8 notused;
  64. };
  65.  
  66. struct _MDLock {
  67.     PRInt8 notused;
  68. };
  69.  
  70. struct _MDCVar {
  71.     PRInt8 notused;
  72. };
  73.  
  74. struct _MDSemaphore {
  75.     PRInt8 notused;
  76. };
  77.  
  78. struct _MDSegment {
  79.     PRInt8 notused;
  80. };
  81.  
  82. struct _MDCPU {
  83.     PRInt8 notused;
  84. };
  85.  
  86. struct _MDFileDesc {
  87.     PRInt32 osfd;
  88. };
  89.  
  90. /*
  91. ** Iinitialization Related definitions
  92. */
  93.  
  94. #define _MD_EARLY_INIT        _MD_EarlyInit
  95. #define _MD_FINAL_INIT        _MD_FinalInit
  96.  
  97. /*
  98. ** Interrupts Related definitions
  99. */
  100.  
  101. #define _MD_START_INTERRUPTS            _MD_StartInterrupts
  102. #define _MD_STOP_INTERRUPTS                _MD_StopInterrupts
  103. #define _MD_BLOCK_CLOCK_INTERRUPTS()
  104. #define _MD_UNBLOCK_CLOCK_INTERRUPTS()
  105. #define _MD_DISABLE_CLOCK_INTERRUPTS()
  106. #define _MD_ENABLE_CLOCK_INTERRUPTS()
  107.  
  108. /*
  109. ** CPU Related definitions
  110. */
  111.  
  112. #define _MD_PAUSE_CPU        _MD_PauseCPU
  113. #define _MD_CLEANUP_BEFORE_EXIT()
  114. #define _MD_EXIT(status)    exit(status)
  115. #define _MD_INIT_CPUS()
  116. #define _MD_INIT_RUNNING_CPU(cpu)
  117.  
  118. /*
  119. ** Process Related definitions
  120. */
  121.  
  122. extern struct PRProcess * _MD_CreateProcess(
  123.     const char *path,
  124.     char *const *argv,
  125.     char *const *envp,
  126.     const PRProcessAttr *attr);
  127. #define _MD_CREATE_PROCESS _MD_CreateProcess
  128.  
  129. extern PRStatus _MD_DetachProcess(PRProcess *process);
  130. #define _MD_DETACH_PROCESS _MD_DetachProcess
  131.  
  132. extern PRStatus _MD_WaitProcess(PRProcess *process, PRInt32 *exitCode);
  133. #define _MD_WAIT_PROCESS _MD_WaitProcess
  134.  
  135. extern PRStatus _MD_KillProcess(PRProcess *process);
  136. #define _MD_KILL_PROCESS _MD_KillProcess
  137.  
  138. /*
  139. ** Memory Segments Related definitions
  140. */
  141.  
  142. #define _MD_INIT_SEGS()
  143.  
  144. /*
  145. ** Thread Stacks Debugging Related definitions
  146. */
  147.  
  148. #define _MD_INIT_STACK        _MD_InitStack
  149. #define _MD_CLEAR_STACK        _MD_ClearStack
  150.  
  151. /*
  152. ** Locks Related definitions
  153. */
  154.  
  155. #define _MD_INIT_LOCKS()
  156. #define _MD_NEW_LOCK(lock) (PR_SUCCESS)
  157. #define _MD_FREE_LOCK(lock)
  158. #define _MD_LOCK(lock)
  159. #define _MD_UNLOCK(lock)
  160.  
  161. /*
  162. ** Thread Related definitions
  163. */
  164.  
  165. PR_EXTERN(PRThread *) PR_GetPrimaryThread();
  166.  
  167. #if defined(powerc) || defined(__powerc)
  168. #define _MD_GET_PC(_t) (*((PRUint32 *)((_t)->md.jb)))
  169. #define _MD_GET_SP(_t) (*((PRUint32 *)((_t)->md.jb) + 2))
  170. #define _MD_GET_TOC(_t) (*((PRUint32 *)((_t)->md.jb) + 3))
  171. #define INIT_STACKPTR(stackTop) ((unsigned char*)stackTop - 128)
  172. #define kDefaultMacintoshStackSize 58 * 1024
  173. #define PR_NUM_GCREGS 70
  174. #else
  175. #define _MD_GET_PC(_t) (*((PRUint32 *)((_t)->md.jb) + 6))
  176. #define _MD_GET_SP(_t) (*((PRUint32 *)((_t)->md.jb) + 12))
  177. #define INIT_STACKPTR(stackTop) ((unsigned char*)stackTop - 4)
  178. #define kDefaultMacintoshStackSize 58 * 1024
  179. #define PR_NUM_GCREGS 13
  180. #endif
  181.  
  182. #define _MD_DEFAULT_STACK_SIZE kDefaultMacintoshStackSize
  183.  
  184. /*
  185. ** Initialize the thread machine dependent data structure
  186. */
  187. extern PRStatus _MD_InitThread(PRThread *thread);
  188. #define _MD_INIT_THREAD    _MD_InitThread
  189.  
  190. /*
  191. ** Clean-up the thread machine dependent data structure
  192. */
  193. #define    _MD_CLEAN_THREAD(_thread)                        \
  194.     PR_BEGIN_MACRO                                          \
  195.     PR_DestroyCondVar(_thread->md.asyncIOCVar);            \
  196.     PR_DestroyLock(_thread->md.asyncIOLock);            \
  197.     PR_END_MACRO
  198.  
  199.  
  200. /*
  201. ** Initialize the thread context preparing it to execute _main.
  202. */
  203. #if defined(powerc) || defined(__powerc)
  204. #define _MD_INIT_CONTEXT(_thread, _sp, _main, _status)    \
  205.     PR_BEGIN_MACRO                                          \
  206.      unsigned char *sp;                                    \
  207.      unsigned long *tvect;                                \
  208.     long **jb = (_thread)->md.jb;                          \
  209.     *((PRBool *)_status) = PR_TRUE;                      \
  210.     (void) setjmp(jb);                                      \
  211.     sp = INIT_STACKPTR(_sp);                            \
  212.     (_MD_GET_SP(_thread)) = (long) sp;                   \
  213.     tvect = (unsigned long *)_main;                        \
  214.     (_MD_GET_PC(_thread)) = (int) *tvect;               \
  215.     (_MD_GET_TOC(_thread)) = (int) *(tvect+1);           \
  216.     _thread->no_sched = 0;                              \
  217.     PR_END_MACRO
  218. #else
  219. #define _MD_INIT_CONTEXT(_thread, _sp, _main, _status)    \
  220.     PR_BEGIN_MACRO                                          \
  221.      unsigned char *sp;                                    \
  222.     long **jb = (_thread)->md.jb;                          \
  223.     *((PRBool *)_status) = PR_TRUE;                      \
  224.     (void) setjmp(jb);                                      \
  225.     sp = INIT_STACKPTR(_sp);                            \
  226.     (_MD_GET_SP(_thread)) = (long) sp;                   \
  227.     (_MD_GET_PC(_thread)) = (int) _main;                   \
  228.     _thread->no_sched = 0;                              \
  229.     PR_END_MACRO
  230. #endif
  231.  
  232. /*
  233. ** Switch away from the current thread context by saving its state and
  234. ** calling the thread scheduler. Reload cpu when we come back from the
  235. ** context switch because it might have changed.
  236. */
  237. /*        ResetTimer();    before _PR_Schedule()                   */
  238. #define _MD_SWITCH_CONTEXT(_thread)        \
  239.     PR_BEGIN_MACRO                         \
  240.     PR_ASSERT(_thread->no_sched);       \
  241.     if (!setjmp(_thread->md.jb)) {         \
  242.         _MD_SET_LAST_THREAD(_thread);   \
  243.         _PR_Schedule();                    \
  244.     } else {                            \
  245.         PR_ASSERT(_MD_LAST_THREAD() !=_MD_CURRENT_THREAD()); \
  246.         _MD_LAST_THREAD()->no_sched = 0; \
  247.     }                                      \
  248.     PR_END_MACRO
  249.  
  250. /*
  251. ** Restore a thread context that was saved by _MD_SWITCH_CONTEXT or
  252. ** initialized by _MD_INIT_CONTEXT.
  253. */
  254. #define _MD_RESTORE_CONTEXT(_newThread)        \
  255.     PR_BEGIN_MACRO                            \
  256.     long **jb = (_newThread)->md.jb;        \
  257.     _MD_SET_CURRENT_THREAD(_newThread);     \
  258.     _newThread->no_sched = 1;                \
  259.     longjmp(jb, 1);                            \
  260.     PR_END_MACRO
  261.  
  262.  
  263. #define _MD_ERRNO()     _MD_CURRENT_THREAD()->md.osErrCode
  264.  
  265. extern PRStatus _MD_wait(PRThread *thread, PRIntervalTime timeout);
  266. #define _MD_WAIT    _MD_wait
  267.  
  268. /*
  269. ** Combined thread model related definitions
  270. */
  271.  
  272. #define _MD_CREATE_THREAD(a,b,c,d,e,f) (PR_SUCCESS)
  273. #define _MD_WAKEUP_WAITER(a)
  274. #define _MD_SET_PRIORITY(a,b)
  275.  
  276. /*
  277. ** File I/O Related definitions
  278. */
  279.  
  280. extern PRInt32 _PR_MD_WRITE_SYNC(PRFileDesc *fd, void *buf, PRInt32 amount);
  281. #define    _PR_MD_WRITE_SYNC _MD_WRITE_SYNC
  282.  
  283. struct _MDDir {
  284.     short        ioVRefNum;
  285.     long        ioDirID;
  286.     short        ioFDirIndex;
  287.     char        *currentEntryName;
  288. };
  289.  
  290. #define PR_DIRECTORY_SEPARATOR        '/'
  291. #define PR_DIRECTORY_SEPARATOR_STR    "/"
  292. #define PR_PATH_SEPARATOR        ':'
  293. #define PR_PATH_SEPARATOR_STR        ":"
  294.  
  295. typedef enum IOOperation {
  296.     READ_ASYNC,
  297.     WRITE_ASYNC
  298. } IOOperation;
  299.  
  300.  
  301. #define _MD_INIT_IO()
  302.  
  303. #define _MD_OPEN                     _MD_Open
  304. #define _MD_CLOSE_FILE                 FSClose
  305. #define _MD_READ(fd,buf,amount)     ReadWriteProc(fd,buf,amount,READ_ASYNC)
  306. #define _MD_WRITE(fd,buf,amount)     ReadWriteProc(fd,buf,amount,WRITE_ASYNC)
  307. #define _MD_WRITE_SYNC(fd,buf,amount) WriteSyncProc(fd,buf,amount)
  308. #define _MD_GET_FILE_ERROR()         _PR_MD_CURRENT_THREAD()->md.osErrCode
  309. #define _MD_LSEEK                     _MD_LSeek
  310. #define _MD_FSYNC                     _MD_FSync
  311.  
  312. /* to be implemented */
  313. #define _MD_LSEEK64(a,b,c)           LL_ZERO
  314. #define _MD_GETOPENFILEINFO64(fd,info)   -1
  315. #define _MD_GETFILEINFO64(fd,info)   -1
  316.  
  317. #define _MD_IOQ_LOCK()
  318. #define _MD_IOQ_UNLOCK()
  319.  
  320. /*
  321. ** File Manipulation definitions
  322. */
  323.  
  324. #define    _MD_RENAME             _MD_Rename
  325. #define    _MD_ACCESS             _MD_Access
  326.  
  327. #define    _MD_GETFILEINFO     _MD_GetFileInfo
  328. #define    _MD_GETOPENFILEINFO _MD_GetOpenFileInfo
  329.  
  330. #define    _MD_STAT             _MD_Stat
  331.  
  332. #define    _MD_DELETE             _MD_Delete
  333.  
  334. extern PRStatus _MD_LockFile(PRInt32 osfd);
  335. #define    _MD_LOCKFILE         _MD_LockFile
  336. extern PRStatus _MD_TLockFile(PRInt32 osfd);
  337. #define    _MD_TLOCKFILE         _MD_TLockFile
  338. extern PRStatus _MD_UnlockFile(PRInt32 osfd);
  339. #define    _MD_UNLOCKFILE        _MD_UnlockFile
  340.  
  341. /* 
  342. ** Directory enumeration related definitions 
  343. */
  344.  
  345. extern PRStatus _MD_OpenDir(struct _MDDir *md,const char *name);
  346. #define    _MD_OPEN_DIR         _MD_OpenDir
  347.  
  348. extern char* _MD_ReadDir(struct _MDDir *md,PRIntn flags);
  349. #define    _MD_READ_DIR         _MD_ReadDir
  350.  
  351. #define    _MD_CLOSE_DIR         _MD_CloseDir
  352.  
  353. #define    _MD_MKDIR             _MD_MkDir
  354. #define    _MD_RMDIR             _MD_Delete
  355.  
  356. /*
  357. ** Socket I/O Related definitions
  358. */
  359.  
  360. #define _MD_SOCKET             _MD_socket
  361. #define _MD_BIND            _MD_bind
  362. #define _MD_LISTEN            _MD_listen
  363. #define _MD_GETSOCKNAME        _MD_getsockname
  364.  
  365. extern PRStatus _MD_getsockopt(PRFileDesc *fd, PRInt32 level, PRInt32 optname, char* optval, PRInt32* optlen);
  366. #define _MD_GETSOCKOPT        _MD_getsockopt
  367.  
  368. extern PRStatus _MD_setsockopt(PRFileDesc *fd, PRInt32 level, PRInt32 optname, const char* optval, PRInt32 optlen);
  369. #define _MD_SETSOCKOPT        _MD_setsockopt
  370.  
  371. #define _MD_SOCKETAVAILABLE    _MD_socketavailable
  372. #define _MD_ACCEPT            _MD_accept
  373. #define _MD_CONNECT            _MD_connect
  374. #define _MD_SEND            _MD_send
  375. #define _MD_RECV            _MD_recv
  376. #define _MD_CLOSE_SOCKET    _MD_closesocket
  377. #define _MD_SENDTO            _MD_sendto
  378. #define _MD_RECVFROM        _MD_recvfrom
  379. #define _MD_PR_POLL            _MD_poll
  380. #define _MD_MAKE_NONBLOCK    _MD_makenonblock
  381.  
  382. #define _MD_GET_SOCKET_ERROR()         _PR_MD_CURRENT_THREAD()->md.osErrCode
  383.  
  384. #define _PR_MD_MAP_SELECT_ERROR(x)     (x)
  385. /*
  386. ** Netdb Related definitions
  387. */
  388. extern PRStatus _MD_gethostname(char *name, int namelen);
  389. #define _MD_GETHOSTNAME        _MD_gethostname
  390.  
  391. /* 
  392.     XXX _MD_WRITEV, _MD_SHUTDOWN & _MD_GETPEERNAME not done yet!!!
  393. */
  394. #define _MD_WRITEV            _MD_writev
  395. #define _MD_SHUTDOWN        _MD_shutdown
  396. #define _MD_GETPEERNAME        _MD_getpeername
  397.  
  398.  
  399. #ifdef OLD_MACSOCK_LIBRARY
  400. #define _MD_SOCKET             macsock_socket
  401. #define _MD_LISTEN            macsock_listen
  402. #define _MD_SEND(fd,buf,amount,flags,timeout)    macsock_send(fd->secret->md.osfd,buf,amount,flags)
  403. #define _MD_SENDTO(fd,buf,amount,flags,addr,addrlen,timeout)    macsock_sendto(fd->secret->md.osfd,buf,amount,flags,(struct sockaddr *)addr,addrlen)
  404. #define _MD_RECV(fd,buf,amount,flags,timeout)    macsock_recv(fd->secret->md.osfd,buf,amount,flags)
  405. #define _MD_RECVFROM(fd,buf,amount,flags,addr,addrlen,timeout)    macsock_recvfrom(fd->secret->md.osfd,buf,amount,flags,(struct sockaddr *)addr,addrlen)
  406. #define _MD_CLOSE_SOCKET    macsock_close
  407. #define _MD_SHUTDOWN(a,b)    (0)
  408.  
  409. #define _MD_ACCEPT(fd,addr,addrlen,timeout)    macsock_accept(fd->secret->md.osfd,(struct sockaddr *)addr,addrlen)
  410. #define _MD_CONNECT(fd,name,namelen,timeout)    macsock_connect(fd->secret->md.osfd,(struct sockaddr *)name,namelen)
  411. #define _MD_BIND(fd,name,namelen)                macsock_bind(fd->secret->md.osfd,(struct sockaddr *)name,namelen)
  412. #define _MD_GETSOCKNAME(fd,name,namelen)        macsock_getsockname(fd->secret->md.osfd,(struct sockaddr *)name,namelen)
  413. #define _MD_GETPEERNAME(fd,name,namelen)        macsock_getpeername(fd->secret->md.osfd,(struct sockaddr *)name,namelen)
  414. #define _MD_GETSOCKOPT(fd,level,optname,optval,optlen)        macsock_getsockopt(fd->secret->md.osfd,level,optname,optval,optlen)
  415. #define _MD_SETSOCKOPT(fd,level,optname,optval,optlen)        macsock_setsockopt(fd->secret->md.osfd,level,optname,optval,optlen)
  416. #define _MD_SOCKETAVAILABLE(fd,bytes)        macsock_socketavailable(fd->secret->md.osfd,bytes)
  417. #endif
  418.  
  419. /*
  420. ** Memory Segements Related definitions
  421. */
  422.  
  423. #define _MD_INIT_SEGS()        
  424. #define _MD_ALLOC_SEGMENT    _MD_AllocSegment
  425. #define _MD_FREE_SEGMENT    _MD_FreeSegment
  426.  
  427. /*
  428. ** Time Related definitions
  429. */
  430.  
  431. #define kMacTimerInMiliSecs                8L
  432. #define _MD_GET_INTERVAL                 _MD_GetInterval
  433. #define _MD_INTERVAL_PER_SEC()             (PR_MSEC_PER_SEC/kMacTimerInMiliSecs)
  434. #define _MD_INTERVAL_INIT()
  435.  
  436. /*
  437. ** Environemnt Related definitions
  438. */
  439.  
  440. extern char *_MD_GetEnv(const char *name);
  441. #define _MD_GET_ENV            _MD_GetEnv
  442.  
  443. extern int _MD_PutEnv(const char *variableCopy);
  444. #define _MD_PUT_ENV            _MD_PutEnv
  445.  
  446. /*
  447. ** Following is old stuff to be looked at.
  448. */
  449.  
  450. #define GCPTR
  451. #define CALLBACK
  452. typedef int (*FARPROC)();
  453. #define gcmemcpy(a,b,c) memcpy(a,b,c)
  454.  
  455.  
  456. #define MAX_NON_PRIMARY_TIME_SLICES     6
  457.  
  458. extern long gTimeSlicesOnNonPrimaryThread;
  459. extern struct PRThread *gPrimaryThread;
  460.  
  461. typedef short PROSFD;
  462.  
  463. // Errors not found in the Mac StdCLib
  464. #define EACCES          13          // Permission denied
  465. #define ENOENT            -43            // No such file or directory
  466. #define _OS_INVALID_FD_VALUE -1
  467.  
  468. #define    STDERR_FILENO    2
  469.  
  470. #if !defined(MAC_NSPR_STANDALONE)
  471. #define PATH_SEPARATOR                     ':'
  472. #define PATH_SEPARATOR_STR                ":"
  473. #define DIRECTORY_SEPARATOR                '/'
  474. #define DIRECTORY_SEPARATOR_STR            "/"
  475. #endif
  476.  
  477. #define UNIX_THIS_DIRECTORY_STR            "./"
  478. #define UNIX_PARENT_DIRECTORY_STR        "../"
  479.  
  480.  
  481. // Alias a few names
  482. #define getenv    PR_GetEnv
  483. #define putenv    _MD_PutEnv
  484.  
  485. #if defined(MAC_NSPR_STANDALONE)
  486. typedef unsigned char (*MemoryCacheFlusherProc)(size_t size);
  487. typedef void (*PreAllocationHookProc)(void);
  488.  
  489. extern char *strdup(const char *source);
  490.  
  491. extern void InstallPreAllocationHook(PreAllocationHookProc newHook);
  492. extern void InstallMemoryCacheFlusher(MemoryCacheFlusherProc newFlusher);
  493. #endif
  494.  
  495. extern char *PR_GetDLLSearchPath(void);
  496.  
  497. #if defined(MAC_NSPR_STANDALONE)
  498. extern int strcmp(const char *str1, const char *str2);
  499. extern int strcasecmp(const char *str1, const char *str2);
  500. #endif
  501.  
  502. extern void MapFullToPartialMacFile(char *);
  503. extern char *MapPartialToFullMacFile(const char *);
  504.  
  505. extern void ResetTimer(void);
  506. extern void PR_PeriodicIdle(void);
  507. extern void ActivateTimer(void);
  508. extern void DeactivateTimer(void);
  509. extern void PR_InitMemory(void);
  510.  
  511. extern struct hostent *gethostbyaddr(const void *addr, int addrlen, int type);
  512.  
  513. extern short GetVolumeRefNumFromName(const char *);
  514.  
  515. #include <stdio.h>            // Needed to get FILE typedef
  516. extern FILE *_OS_FOPEN(const char *filename, const char *mode);
  517. //
  518. //    Macintosh only private parts.
  519. //
  520.  
  521. #define    dprintTrace            ";dprintf;doTrace"
  522. #define    dprintNoTrace        ";dprintf"
  523. extern void dprintf(const char *format, ...);
  524.  
  525.  
  526. // Entry into the memory system's cache flushing
  527. #if defined(MAC_NSPR_STANDALONE)
  528. extern PRUint8 CallCacheFlushers(size_t blockSize);
  529. #endif
  530.  
  531. #if defined(MAC_NSPR_STANDALONE)
  532. extern void* reallocSmaller(void* block, size_t newSize);
  533. #endif
  534.  
  535.  
  536. /*
  537. ** PR_GetSystemInfo related definitions
  538. */
  539. #define _PR_SI_SYSNAME          "MacOS"
  540. #define _PR_SI_ARCHITECTURE     "PowerPC"
  541.  
  542. /*
  543.  * Memory-mapped files
  544.  */
  545.  
  546. struct _MDFileMap {
  547.     PRInt8 unused;
  548. };
  549.  
  550. extern PRStatus _MD_CreateFileMap(struct PRFileMap *fmap, PRInt64 size);
  551. #define _MD_CREATE_FILE_MAP _MD_CreateFileMap
  552.  
  553. extern void * _MD_MemMap(struct PRFileMap *fmap, PRInt64 offset,
  554.         PRUint32 len);
  555. #define _MD_MEM_MAP _MD_MemMap
  556.  
  557. extern PRStatus _MD_MemUnmap(void *addr, PRUint32 size);
  558. #define _MD_MEM_UNMAP _MD_MemUnmap
  559.  
  560. extern PRStatus _MD_CloseFileMap(struct PRFileMap *fmap);
  561. #define _MD_CLOSE_FILE_MAP _MD_CloseFileMap
  562.  
  563. extern void SetLogFileTypeCreator(const char *logFile);
  564. extern int _MD_mac_get_nonblocking_connect_error(PRInt32 osfd);
  565.  
  566. #endif /* prmacos_h___ */
  567.