From 104b62b9e97c44388a2094235e471f894b94ee39 Mon Sep 17 00:00:00 2001 From: "avi@google.com" Date: Thu, 11 Dec 2008 19:51:24 +0000 Subject: We need to loop on waiting as there are plenty of reasons why it might not take. Review URL: http://codereview.chromium.org/14002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@6813 0039d316-1c4b-4281-b951-d872f2087c98 --- base/shared_memory_posix.cc | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/base/shared_memory_posix.cc b/base/shared_memory_posix.cc index 6731f68..a1193aa 100644 --- a/base/shared_memory_posix.cc +++ b/base/shared_memory_posix.cc @@ -4,6 +4,7 @@ #include "base/shared_memory.h" +#include #include #include @@ -163,12 +164,15 @@ void SharedMemory::Close() { void SharedMemory::Lock() { DCHECK(lock_ != NULL); - sem_wait(lock_); + while(sem_wait(lock_) < 0) { + DCHECK(errno == EAGAIN || errno == EINTR); + } } void SharedMemory::Unlock() { DCHECK(lock_ != NULL); - sem_post(lock_); + int result = sem_post(lock_); + DCHECK(result == 0); } } // namespace base -- cgit v1.1