< prev index next >

src/hotspot/os/aix/os_aix.cpp

Print this page




1746       local_sem_wait();
1747 
1748       // were we externally suspended while we were waiting?
1749       threadIsSuspended = thread->handle_special_suspend_equivalent_condition();
1750       if (threadIsSuspended) {
1751         //
1752         // The semaphore has been incremented, but while we were waiting
1753         // another thread suspended us. We don't want to continue running
1754         // while suspended because that would surprise the thread that
1755         // suspended us.
1756         //
1757 
1758         local_sem_post();
1759 
1760         thread->java_suspend_self();
1761       }
1762     } while (threadIsSuspended);
1763   }
1764 }
1765 
1766 int os::signal_lookup() {
1767   return check_pending_signals(false);
1768 }
1769 
1770 int os::signal_wait() {
1771   return check_pending_signals(true);
1772 }
1773 
1774 ////////////////////////////////////////////////////////////////////////////////
1775 // Virtual Memory
1776 
1777 // We need to keep small simple bookkeeping for os::reserve_memory and friends.
1778 
1779 #define VMEM_MAPPED  1
1780 #define VMEM_SHMATED 2
1781 
1782 struct vmembk_t {
1783   int type;         // 1 - mmap, 2 - shmat
1784   char* addr;
1785   size_t size;      // Real size, may be larger than usersize.
1786   size_t pagesize;  // page size of area
1787   vmembk_t* next;
1788 
1789   bool contains_addr(char* p) const {




1746       local_sem_wait();
1747 
1748       // were we externally suspended while we were waiting?
1749       threadIsSuspended = thread->handle_special_suspend_equivalent_condition();
1750       if (threadIsSuspended) {
1751         //
1752         // The semaphore has been incremented, but while we were waiting
1753         // another thread suspended us. We don't want to continue running
1754         // while suspended because that would surprise the thread that
1755         // suspended us.
1756         //
1757 
1758         local_sem_post();
1759 
1760         thread->java_suspend_self();
1761       }
1762     } while (threadIsSuspended);
1763   }
1764 }
1765 




1766 int os::signal_wait() {
1767   return check_pending_signals(true);
1768 }
1769 
1770 ////////////////////////////////////////////////////////////////////////////////
1771 // Virtual Memory
1772 
1773 // We need to keep small simple bookkeeping for os::reserve_memory and friends.
1774 
1775 #define VMEM_MAPPED  1
1776 #define VMEM_SHMATED 2
1777 
1778 struct vmembk_t {
1779   int type;         // 1 - mmap, 2 - shmat
1780   char* addr;
1781   size_t size;      // Real size, may be larger than usersize.
1782   size_t pagesize;  // page size of area
1783   vmembk_t* next;
1784 
1785   bool contains_addr(char* p) const {


< prev index next >