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

Side by Side Diff: components/nacl/loader/nacl_ipc_adapter.cc

Issue 2555483002: Add POSIX shared memory support for Mac (Closed)
Patch Set: Check that we never pass POSIX shm over Mojo. Created 4 years 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
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "components/nacl/loader/nacl_ipc_adapter.h" 5 #include "components/nacl/loader/nacl_ipc_adapter.h"
6 6
7 #include <limits.h> 7 #include <limits.h>
8 #include <string.h> 8 #include <string.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 216 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 227
228 private: 228 private:
229 NaClDesc* desc_; 229 NaClDesc* desc_;
230 DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper); 230 DISALLOW_COPY_AND_ASSIGN(NaClDescWrapper);
231 }; 231 };
232 232
233 std::unique_ptr<NaClDescWrapper> MakeShmNaClDesc( 233 std::unique_ptr<NaClDescWrapper> MakeShmNaClDesc(
234 const base::SharedMemoryHandle& handle, 234 const base::SharedMemoryHandle& handle,
235 size_t size) { 235 size_t size) {
236 #if defined(OS_MACOSX) 236 #if defined(OS_MACOSX)
237 return std::unique_ptr<NaClDescWrapper>(new NaClDescWrapper( 237 if (handle.GetType() == base::SharedMemoryHandle::MACH) {
238 NaClDescImcShmMachMake(handle.GetMemoryObject(), size))); 238 return std::unique_ptr<NaClDescWrapper>(new NaClDescWrapper(
239 #else 239 NaClDescImcShmMachMake(handle.GetMemoryObject(), size)));
240 } else {
241 // We should never pass POSIX shared memory over IPC.
242 CHECK(false);
243 return nullptr;
244 }
245 #endif
246
240 return std::unique_ptr<NaClDescWrapper>( 247 return std::unique_ptr<NaClDescWrapper>(
241 new NaClDescWrapper(NaClDescImcShmMake( 248 new NaClDescWrapper(NaClDescImcShmMake(
242 #if defined(OS_WIN) 249 #if defined(OS_WIN)
243 handle.GetHandle(), 250 handle.GetHandle(),
244 #else 251 #else
245 base::SharedMemory::GetFdFromSharedMemoryHandle(handle), 252 base::SharedMemory::GetFdFromSharedMemoryHandle(handle),
246 #endif 253 #endif
247 size))); 254 size)));
248 #endif
249 } 255 }
250 256
251 } // namespace 257 } // namespace
252 258
253 class NaClIPCAdapter::RewrittenMessage 259 class NaClIPCAdapter::RewrittenMessage
254 : public base::RefCounted<RewrittenMessage> { 260 : public base::RefCounted<RewrittenMessage> {
255 public: 261 public:
256 RewrittenMessage(); 262 RewrittenMessage();
257 263
258 bool is_consumed() const { return data_read_cursor_ == data_len_; } 264 bool is_consumed() const { return data_read_cursor_ == data_len_; }
(...skipping 582 matching lines...) Expand 10 before | Expand all | Expand 10 after
841 header.flags = msg.flags(); 847 header.flags = msg.flags();
842 header.num_fds = static_cast<uint16_t>(rewritten_msg->desc_count()); 848 header.num_fds = static_cast<uint16_t>(rewritten_msg->desc_count());
843 849
844 rewritten_msg->SetData(header, msg.payload(), msg.payload_size()); 850 rewritten_msg->SetData(header, msg.payload(), msg.payload_size());
845 locked_data_.to_be_received_.push(rewritten_msg); 851 locked_data_.to_be_received_.push(rewritten_msg);
846 } 852 }
847 853
848 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) { 854 int TranslatePepperFileReadWriteOpenFlagsForTesting(int32_t pp_open_flags) {
849 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags); 855 return TranslatePepperFileReadWriteOpenFlags(pp_open_flags);
850 } 856 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698