| Index: base/shared_memory.h | 
| diff --git a/base/shared_memory.h b/base/shared_memory.h | 
| index 3bfa003aa203ccd30eb8c45de52d395fc1a9d5a0..b44367a7fcc875e16e91e6e486f73c0316debd15 100644 | 
| --- a/base/shared_memory.h | 
| +++ b/base/shared_memory.h | 
| @@ -9,6 +9,7 @@ | 
|  | 
| #if defined(OS_POSIX) | 
| #include <semaphore.h> | 
| +#include "base/file_descriptor_posix.h" | 
| #endif | 
| #include <string> | 
|  | 
| @@ -23,7 +24,7 @@ namespace base { | 
| typedef HANDLE SharedMemoryHandle; | 
| typedef HANDLE SharedMemoryLock; | 
| #elif defined(OS_POSIX) | 
| -typedef int SharedMemoryHandle; | 
| +typedef FileDescriptor SharedMemoryHandle; | 
| // On POSIX, the lock is implemented as a lockf() on the mapped file, | 
| // so no additional member (or definition of SharedMemoryLock) is | 
| // needed. | 
| @@ -49,6 +50,10 @@ class SharedMemory { | 
| // Destructor.  Will close any open files. | 
| ~SharedMemory(); | 
|  | 
| +  // Return true iff the given handle is valid (i.e. not the distingished | 
| +  // invalid value; NULL for a HANDLE and -1 for a file descriptor) | 
| +  static bool IsHandleValid(const SharedMemoryHandle& handle); | 
| + | 
| // Creates or opens a shared memory segment based on a name. | 
| // If read_only is true, opens the memory as read-only. | 
| // If open_existing is true, and the shared memory already exists, | 
| @@ -92,7 +97,7 @@ class SharedMemory { | 
| // Get access to the underlying OS handle for this segment. | 
| // Use of this handle for anything other than an opaque | 
| // identifier is not portable. | 
| -  SharedMemoryHandle handle() const { return mapped_file_; } | 
| +  SharedMemoryHandle handle() const; | 
|  | 
| // Closes the open shared memory segment. | 
| // It is safe to call Close repeatedly. | 
| @@ -147,7 +152,11 @@ class SharedMemory { | 
| bool close_self); | 
|  | 
| std::wstring       name_; | 
| -  SharedMemoryHandle mapped_file_; | 
| +#if defined(OS_WIN) | 
| +  HANDLE mapped_file_; | 
| +#elif defined(OS_POSIX) | 
| +  int mapped_file_; | 
| +#endif | 
| void*              memory_; | 
| bool               read_only_; | 
| size_t             max_size_; | 
|  |