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