diff options
Diffstat (limited to 'ipc/chromium/src/chrome/common')
-rw-r--r-- | ipc/chromium/src/chrome/common/ipc_channel_posix.cc | 11 | ||||
-rw-r--r-- | ipc/chromium/src/chrome/common/transport_dib.h | 8 |
2 files changed, 14 insertions, 5 deletions
diff --git a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc index 0d3a2b16c..9a8858656 100644 --- a/ipc/chromium/src/chrome/common/ipc_channel_posix.cc +++ b/ipc/chromium/src/chrome/common/ipc_channel_posix.cc @@ -8,6 +8,7 @@ #include <errno.h> #include <fcntl.h> +#include <limits.h> #if defined(OS_MACOSX) #include <sched.h> #endif @@ -39,8 +40,16 @@ #include "mozilla/ipc/Faulty.h" #endif -// Work around possible OS limitations. +// Use OS specific iovec array limit where it's possible +#if defined(IOV_MAX) +static const size_t kMaxIOVecSize = IOV_MAX; +// IOV_MAX isn't defined on Android, but the hard-coded 256 works well. +#elif defined(ANDROID) static const size_t kMaxIOVecSize = 256; +// On all other platforms, fallback to 16 (_XOPEN_IOV_MAX) as a safe bet. +#else +static const size_t kMaxIOVecSize = 16; +#endif #ifdef MOZ_TASK_TRACER #include "GeckoTaskTracerImpl.h" diff --git a/ipc/chromium/src/chrome/common/transport_dib.h b/ipc/chromium/src/chrome/common/transport_dib.h index b1e5c0fab..f40a97d17 100644 --- a/ipc/chromium/src/chrome/common/transport_dib.h +++ b/ipc/chromium/src/chrome/common/transport_dib.h @@ -15,7 +15,7 @@ #if defined(OS_WIN) #include <windows.h> -#elif defined(OS_LINUX) +#elif defined(OS_LINUX) || defined(OS_SOLARIS) #include "chrome/common/x11_util.h" #endif @@ -68,7 +68,7 @@ class TransportDIB { typedef base::SharedMemoryHandle Handle; // On Mac, the inode number of the backing file is used as an id. typedef base::SharedMemoryId Id; -#elif defined(OS_LINUX) +#elif defined(OS_LINUX) || defined(OS_SOLARIS) typedef int Handle; // These two ints are SysV IPC shared memory keys typedef int Id; #endif @@ -98,7 +98,7 @@ class TransportDIB { // wire to give this transport DIB to another process. Handle handle() const; -#if defined(OS_LINUX) +#if defined(OS_LINUX) || defined(OS_SOLARIS) // Map the shared memory into the X server and return an id for the shared // segment. XID MapToX(Display* connection); @@ -109,7 +109,7 @@ class TransportDIB { #if defined(OS_WIN) || defined(OS_MACOSX) || defined(OS_BSD) explicit TransportDIB(base::SharedMemoryHandle dib); base::SharedMemory shared_memory_; -#elif defined(OS_LINUX) +#elif defined(OS_LINUX) || defined(OS_SOLARIS) int key_; // SysV shared memory id void* address_; // mapped address XID x_shm_; // X id for the shared segment |