Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(422)

Side by Side Diff: nspr/pr/include/private/primpl.h

Issue 200653003: Update to NSPR 4.10.4. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/deps/third_party/nss/
Patch Set: Created 6 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « nspr/pr/include/prinit.h ('k') | nspr/pr/src/md/windows/w95thred.c » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
2 /* This Source Code Form is subject to the terms of the Mozilla Public 2 /* This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this 3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 4 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
5 5
6 #ifndef primpl_h___ 6 #ifndef primpl_h___
7 #define primpl_h___ 7 #define primpl_h___
8 8
9 /* 9 /*
10 * HP-UX 10.10's pthread.h (DCE threads) includes dce/cma.h, which 10 * HP-UX 10.10's pthread.h (DCE threads) includes dce/cma.h, which
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after
532 NSPR_API(void) _PR_PauseCPU(void); 532 NSPR_API(void) _PR_PauseCPU(void);
533 533
534 /************************************************************************/ 534 /************************************************************************/
535 535
536 #define _PR_LOCK_LOCK(_lock) \ 536 #define _PR_LOCK_LOCK(_lock) \
537 _PR_MD_LOCK(&(_lock)->ilock); 537 _PR_MD_LOCK(&(_lock)->ilock);
538 #define _PR_LOCK_UNLOCK(_lock) \ 538 #define _PR_LOCK_UNLOCK(_lock) \
539 _PR_MD_UNLOCK(&(_lock)->ilock); 539 _PR_MD_UNLOCK(&(_lock)->ilock);
540 540
541 extern void _PR_UnblockLockWaiter(PRLock *lock); 541 extern void _PR_UnblockLockWaiter(PRLock *lock);
542 extern PRStatus _PR_InitLock(PRLock *lock);
543 extern void _PR_FreeLock(PRLock *lock);
542 544
543 #define _PR_LOCK_PTR(_qp) \ 545 #define _PR_LOCK_PTR(_qp) \
544 ((PRLock*) ((char*) (_qp) - offsetof(PRLock,links))) 546 ((PRLock*) ((char*) (_qp) - offsetof(PRLock,links)))
545 547
546 /************************************************************************/ 548 /************************************************************************/
547 549
548 #define _PR_CVAR_LOCK(_cvar) \ 550 #define _PR_CVAR_LOCK(_cvar) \
549 _PR_MD_LOCK(&(_cvar)->ilock); 551 _PR_MD_LOCK(&(_cvar)->ilock);
550 #define _PR_CVAR_UNLOCK(_cvar) \ 552 #define _PR_CVAR_UNLOCK(_cvar) \
551 _PR_MD_UNLOCK(&(_cvar)->ilock); 553 _PR_MD_UNLOCK(&(_cvar)->ilock);
552 554
555 extern PRStatus _PR_InitCondVar(PRCondVar *cvar, PRLock *lock);
556 extern void _PR_FreeCondVar(PRCondVar *cvar);
553 extern PRStatus _PR_WaitCondVar( 557 extern PRStatus _PR_WaitCondVar(
554 PRThread *thread, PRCondVar *cvar, PRLock *lock, PRIntervalTime timeout); 558 PRThread *thread, PRCondVar *cvar, PRLock *lock, PRIntervalTime timeout);
559 extern void _PR_NotifyCondVar(PRCondVar *cvar, PRThread *me);
555 extern PRUint32 _PR_CondVarToString(PRCondVar *cvar, char *buf, PRUint32 buflen) ; 560 extern PRUint32 _PR_CondVarToString(PRCondVar *cvar, char *buf, PRUint32 buflen) ;
556 561
557 NSPR_API(void) _PR_Notify(PRMonitor *mon, PRBool all, PRBool sticky); 562 NSPR_API(void) _PR_Notify(PRMonitor *mon, PRBool all, PRBool sticky);
558 563
559 /* PRThread.flags */ 564 /* PRThread.flags */
560 #define _PR_SYSTEM 0x01 565 #define _PR_SYSTEM 0x01
561 #define _PR_INTERRUPT 0x02 566 #define _PR_INTERRUPT 0x02
562 #define _PR_ATTACHED 0x04 /* created via PR_AttachThread */ 567 #define _PR_ATTACHED 0x04 /* created via PR_AttachThread */
563 #define _PR_PRIMORDIAL 0x08 /* the thread that called PR_Init */ 568 #define _PR_PRIMORDIAL 0x08 /* the thread that called PR_Init */
564 #define _PR_ON_SLEEPQ 0x10 /* thread is on the sleepQ */ 569 #define _PR_ON_SLEEPQ 0x10 /* thread is on the sleepQ */
(...skipping 848 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 #else /* not pthreads or Be threads */ 1418 #else /* not pthreads or Be threads */
1414 PRCList links; /* linkage for PRThread.lockList */ 1419 PRCList links; /* linkage for PRThread.lockList */
1415 struct PRThread *owner; /* current lock owner */ 1420 struct PRThread *owner; /* current lock owner */
1416 PRCList waitQ; /* list of threads waiting for lock */ 1421 PRCList waitQ; /* list of threads waiting for lock */
1417 PRThreadPriority priority; /* priority of lock */ 1422 PRThreadPriority priority; /* priority of lock */
1418 PRThreadPriority boostPriority; /* boosted priority of lock owner */ 1423 PRThreadPriority boostPriority; /* boosted priority of lock owner */
1419 _MDLock ilock; /* Internal Lock to protect user-level field s */ 1424 _MDLock ilock; /* Internal Lock to protect user-level field s */
1420 #endif 1425 #endif
1421 }; 1426 };
1422 1427
1423 extern void _PR_InitLocks(void);
1424
1425 struct PRCondVar { 1428 struct PRCondVar {
1426 PRLock *lock; /* associated lock that protects the condition * / 1429 PRLock *lock; /* associated lock that protects the condition * /
1427 #if defined(_PR_PTHREADS) 1430 #if defined(_PR_PTHREADS)
1428 pthread_cond_t cv; /* underlying pthreads condition */ 1431 pthread_cond_t cv; /* underlying pthreads condition */
1429 PRInt32 notify_pending; /* CV has destroy pending notification */ 1432 PRInt32 notify_pending; /* CV has destroy pending notification */
1430 #elif defined(_PR_BTHREADS) 1433 #elif defined(_PR_BTHREADS)
1431 sem_id sem; /* the underlying lock */ 1434 sem_id sem; /* the underlying lock */
1432 sem_id handshakeSem; /* the lock for 'notify'-threads waiting for con firmation */ 1435 sem_id handshakeSem; /* the lock for 'notify'-threads waiting for con firmation */
1433 sem_id signalSem; /* the lock for threads waiting for someone to n otify */ 1436 sem_id signalSem; /* the lock for threads waiting for someone to n otify */
1434 volatile int32 nw; /* the number waiting */ 1437 volatile int32 nw; /* the number waiting */
1435 volatile int32 ns; /* the number signalling */ 1438 volatile int32 ns; /* the number signalling */
1436 long signalBenCount; /* the number waiting on the underlying sem */ 1439 long signalBenCount; /* the number waiting on the underlying sem */
1437 #else /* not pthreads or Be threads */ 1440 #else /* not pthreads or Be threads */
1438 PRCList condQ; /* Condition variable wait Q */ 1441 PRCList condQ; /* Condition variable wait Q */
1439 _MDLock ilock; /* Internal Lock to protect condQ */ 1442 _MDLock ilock; /* Internal Lock to protect condQ */
1440 _MDCVar md; 1443 _MDCVar md;
1441 #endif 1444 #endif
1442 }; 1445 };
1443 1446
1444 /************************************************************************/ 1447 /************************************************************************/
1445 1448
1446 struct PRMonitor { 1449 struct PRMonitor {
1447 const char* name; /* monitor name for debugging */ 1450 const char* name; /* monitor name for debugging */
1448 #if defined(_PR_PTHREADS) 1451 #if defined(_PR_PTHREADS)
1449 PRLock lock; /* the lock structure */ 1452 pthread_mutex_t lock; /* lock is only held when accessing fields
1450 pthread_t owner; /* the owner of the lock or invalid */ 1453 * of the PRMonitor, instead of being held
1451 PRCondVar *cvar; /* condition variable queue */ 1454 * while the monitor is entered. The only
1455 * exception is notifyTimes, which is
1456 * protected by the monitor. */
1457 pthread_t owner; /* the owner of the monitor or invalid */
1458 pthread_cond_t entryCV; /* for threads waiting to enter the monitor */
1459
1460 pthread_cond_t waitCV; /* for threads waiting on the monitor */
1461 PRInt32 refCount; /* reference count, an atomic variable.
1462 * PR_NewMonitor adds a reference to the
1463 * newly created PRMonitor, and
1464 * PR_DestroyMonitor releases that reference.
1465 * PR_ExitMonitor adds a reference before
1466 * unlocking the internal lock if it needs to
1467 * signal entryCV, and releases the reference
1468 * after signaling entryCV. */
1452 #else /* defined(_PR_PTHREADS) */ 1469 #else /* defined(_PR_PTHREADS) */
1453 PRCondVar *cvar; /* associated lock and condition variable queue */ 1470 PRLock lock; /* lock is only held when accessing fields
1471 * of the PRMonitor, instead of being held
1472 * while the monitor is entered. The only
1473 * exception is notifyTimes, which is
1474 * protected by the monitor. */
1475 PRThread *owner; /* the owner of the monitor or invalid */
1476 PRCondVar entryCV; /* for threads waiting to enter the monitor */
1477
1478 PRCondVar waitCV; /* for threads waiting on the monitor */
1454 #endif /* defined(_PR_PTHREADS) */ 1479 #endif /* defined(_PR_PTHREADS) */
1455 PRUint32 entryCount; /* # of times re-entered */ 1480 PRUint32 entryCount; /* # of times re-entered */
1481 PRIntn notifyTimes; /* number of pending notifies for waitCV.
1482 * The special value -1 means a broadcast
1483 * (PR_NotifyAll). */
1456 }; 1484 };
1457 1485
1458 /************************************************************************/ 1486 /************************************************************************/
1459 1487
1460 struct PRSemaphore { 1488 struct PRSemaphore {
1461 #if defined(_PR_BTHREADS) 1489 #if defined(_PR_BTHREADS)
1462 sem_id sem; 1490 sem_id sem;
1463 int32 benaphoreCount; 1491 int32 benaphoreCount;
1464 #else 1492 #else
1465 PRCondVar *cvar; /* associated lock and condition variable queue */ 1493 PRCondVar *cvar; /* associated lock and condition variable queue */
1466 PRUintn count; /* the value of the counting semaphore */ 1494 PRUintn count; /* the value of the counting semaphore */
1467 PRUint32 waiters; /* threads waiting on the semaphore */ 1495 PRUint32 waiters; /* threads waiting on the semaphore */
1468 #if defined(_PR_PTHREADS) 1496 #if defined(_PR_PTHREADS)
1469 #else /* defined(_PR_PTHREADS) */ 1497 #else /* defined(_PR_PTHREADS) */
1470 _MDSemaphore md; 1498 _MDSemaphore md;
1471 #endif /* defined(_PR_PTHREADS) */ 1499 #endif /* defined(_PR_PTHREADS) */
1472 #endif /* defined(_PR_BTHREADS) */ 1500 #endif /* defined(_PR_BTHREADS) */
1473 }; 1501 };
1474 1502
1475 NSPR_API(void) _PR_InitSem(void);
1476
1477 /*************************************************************************/ 1503 /*************************************************************************/
1478 1504
1479 struct PRSem { 1505 struct PRSem {
1480 #ifdef _PR_HAVE_POSIX_SEMAPHORES 1506 #ifdef _PR_HAVE_POSIX_SEMAPHORES
1481 sem_t *sem; 1507 sem_t *sem;
1482 #elif defined(_PR_HAVE_SYSV_SEMAPHORES) 1508 #elif defined(_PR_HAVE_SYSV_SEMAPHORES)
1483 int semid; 1509 int semid;
1484 #elif defined(WIN32) 1510 #elif defined(WIN32)
1485 HANDLE sem; 1511 HANDLE sem;
1486 #else 1512 #else
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
1548 void **privateData; /* private data vector or NULL */ 1574 void **privateData; /* private data vector or NULL */
1549 PRErrorCode errorCode; /* current NSPR error code | zero */ 1575 PRErrorCode errorCode; /* current NSPR error code | zero */
1550 PRInt32 osErrorCode; /* mapping of errorCode | zero */ 1576 PRInt32 osErrorCode; /* mapping of errorCode | zero */
1551 PRIntn errorStringLength; /* textLength from last call to PR_SetErrorT ext() */ 1577 PRIntn errorStringLength; /* textLength from last call to PR_SetErrorT ext() */
1552 PRInt32 errorStringSize; /* malloc()'d size of buffer | zero */ 1578 PRInt32 errorStringSize; /* malloc()'d size of buffer | zero */
1553 char *errorString; /* current error string | NULL */ 1579 char *errorString; /* current error string | NULL */
1554 char *name; /* thread's name */ 1580 char *name; /* thread's name */
1555 1581
1556 #if defined(_PR_PTHREADS) 1582 #if defined(_PR_PTHREADS)
1557 pthread_t id; /* pthread identifier for the thread */ 1583 pthread_t id; /* pthread identifier for the thread */
1584 PRBool idSet; /* whether 'id' has been set. Protected by
1585 * pt_book.ml. */
1558 #ifdef _PR_NICE_PRIORITY_SCHEDULING 1586 #ifdef _PR_NICE_PRIORITY_SCHEDULING
1559 pid_t tid; /* Linux-specific kernel thread ID */ 1587 pid_t tid; /* Linux-specific kernel thread ID */
1560 #endif 1588 #endif
1561 PRBool okToDelete; /* ok to delete the PRThread struct? */ 1589 PRBool okToDelete; /* ok to delete the PRThread struct? */
1562 PRCondVar *waiting; /* where the thread is waiting | NULL */ 1590 PRCondVar *waiting; /* where the thread is waiting | NULL */
1563 void *sp; /* recorded sp for garbage collection */ 1591 void *sp; /* recorded sp for garbage collection */
1564 PRThread *next, *prev; /* simple linked list of all threads */ 1592 PRThread *next, *prev; /* simple linked list of all threads */
1565 PRUint32 suspend; /* used to store suspend and resume flags */ 1593 PRUint32 suspend; /* used to store suspend and resume flags */
1566 #ifdef PT_NO_SIGTIMEDWAIT 1594 #ifdef PT_NO_SIGTIMEDWAIT
1567 pthread_mutex_t suspendResumeMutex; 1595 pthread_mutex_t suspendResumeMutex;
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1738 _MDDir md; 1766 _MDDir md;
1739 }; 1767 };
1740 1768
1741 #ifdef MOZ_UNICODE 1769 #ifdef MOZ_UNICODE
1742 struct PRDirUTF16 { 1770 struct PRDirUTF16 {
1743 PRDirEntry d; 1771 PRDirEntry d;
1744 _MDDirUTF16 md; 1772 _MDDirUTF16 md;
1745 }; 1773 };
1746 #endif /* MOZ_UNICODE */ 1774 #endif /* MOZ_UNICODE */
1747 1775
1776 extern void _PR_InitLocks(void);
1748 extern void _PR_InitSegs(void); 1777 extern void _PR_InitSegs(void);
1749 extern void _PR_InitStacks(void); 1778 extern void _PR_InitStacks(void);
1750 extern void _PR_InitTPD(void); 1779 extern void _PR_InitTPD(void);
1751 extern void _PR_InitMem(void); 1780 extern void _PR_InitMem(void);
1752 extern void _PR_InitEnv(void); 1781 extern void _PR_InitEnv(void);
1753 extern void _PR_InitCMon(void); 1782 extern void _PR_InitCMon(void);
1754 extern void _PR_InitIO(void); 1783 extern void _PR_InitIO(void);
1755 extern void _PR_InitLog(void); 1784 extern void _PR_InitLog(void);
1756 extern void _PR_InitNet(void); 1785 extern void _PR_InitNet(void);
1757 extern void _PR_InitClock(void); 1786 extern void _PR_InitClock(void);
1758 extern void _PR_InitLinker(void); 1787 extern void _PR_InitLinker(void);
1759 extern void _PR_InitAtomic(void); 1788 extern void _PR_InitAtomic(void);
1760 extern void _PR_InitCPUs(void); 1789 extern void _PR_InitCPUs(void);
1761 extern void _PR_InitDtoa(void); 1790 extern void _PR_InitDtoa(void);
1762 extern void _PR_InitTime(void); 1791 extern void _PR_InitTime(void);
1763 extern void _PR_InitMW(void); 1792 extern void _PR_InitMW(void);
1764 extern void _PR_InitRWLocks(void); 1793 extern void _PR_InitRWLocks(void);
1765 extern void _PR_NotifyCondVar(PRCondVar *cvar, PRThread *me);
1766 extern void _PR_CleanupThread(PRThread *thread); 1794 extern void _PR_CleanupThread(PRThread *thread);
1767 extern void _PR_CleanupCallOnce(void); 1795 extern void _PR_CleanupCallOnce(void);
1768 extern void _PR_CleanupMW(void); 1796 extern void _PR_CleanupMW(void);
1769 extern void _PR_CleanupTime(void); 1797 extern void _PR_CleanupTime(void);
1770 extern void _PR_CleanupDtoa(void); 1798 extern void _PR_CleanupDtoa(void);
1771 extern void _PR_ShutdownLinker(void); 1799 extern void _PR_ShutdownLinker(void);
1772 extern void _PR_CleanupEnv(void); 1800 extern void _PR_CleanupEnv(void);
1773 extern void _PR_CleanupIO(void); 1801 extern void _PR_CleanupIO(void);
1774 extern void _PR_CleanupCMon(void); 1802 extern void _PR_CleanupCMon(void);
1775 extern void _PR_CleanupNet(void); 1803 extern void _PR_CleanupNet(void);
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
2114 2142
2115 extern ConnectListNode connectList[64]; 2143 extern ConnectListNode connectList[64];
2116 2144
2117 extern PRUint32 connectCount; 2145 extern PRUint32 connectCount;
2118 2146
2119 #endif /* XP_BEOS */ 2147 #endif /* XP_BEOS */
2120 2148
2121 PR_END_EXTERN_C 2149 PR_END_EXTERN_C
2122 2150
2123 #endif /* primpl_h___ */ 2151 #endif /* primpl_h___ */
OLDNEW
« no previous file with comments | « nspr/pr/include/prinit.h ('k') | nspr/pr/src/md/windows/w95thred.c » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698