summaryrefslogtreecommitdiffstats
path: root/mojo/system
diff options
context:
space:
mode:
authorviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-25 06:13:49 +0000
committerviettrungluu@chromium.org <viettrungluu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-07-25 06:13:49 +0000
commit9526c6f693670e7db8cebf1ce2563cd95e65b495 (patch)
tree5877cd1a02616ff205f0871017b054a83ed58da2 /mojo/system
parent31a6fb84ed21c345c210a26026e1e617eab02306 (diff)
downloadchromium_src-9526c6f693670e7db8cebf1ce2563cd95e65b495.zip
chromium_src-9526c6f693670e7db8cebf1ce2563cd95e65b495.tar.gz
chromium_src-9526c6f693670e7db8cebf1ce2563cd95e65b495.tar.bz2
Convert BeginWriteData...() to use the new user pointer handling (see r285350).
R=darin@chromium.org Review URL: https://codereview.chromium.org/411253011 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@285503 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'mojo/system')
-rw-r--r--mojo/system/core.cc3
-rw-r--r--mojo/system/core_test_base.cc4
-rw-r--r--mojo/system/data_pipe.cc17
-rw-r--r--mojo/system/data_pipe.h12
-rw-r--r--mojo/system/data_pipe_producer_dispatcher.cc9
-rw-r--r--mojo/system/data_pipe_producer_dispatcher.h4
-rw-r--r--mojo/system/dispatcher.cc11
-rw-r--r--mojo/system/dispatcher.h12
-rw-r--r--mojo/system/dispatcher_unittest.cc10
-rw-r--r--mojo/system/local_data_pipe.cc20
-rw-r--r--mojo/system/local_data_pipe.h6
-rw-r--r--mojo/system/local_data_pipe_unittest.cc61
12 files changed, 98 insertions, 71 deletions
diff --git a/mojo/system/core.cc b/mojo/system/core.cc
index 49c90db..4ff10ac 100644
--- a/mojo/system/core.cc
+++ b/mojo/system/core.cc
@@ -371,8 +371,7 @@ MojoResult Core::BeginWriteData(MojoHandle data_pipe_producer_handle,
if (!dispatcher)
return MOJO_RESULT_INVALID_ARGUMENT;
- return dispatcher->BeginWriteData(buffer.GetPointerUnsafe(),
- buffer_num_bytes.GetPointerUnsafe(), flags);
+ return dispatcher->BeginWriteData(buffer, buffer_num_bytes, flags);
}
MojoResult Core::EndWriteData(MojoHandle data_pipe_producer_handle,
diff --git a/mojo/system/core_test_base.cc b/mojo/system/core_test_base.cc
index c02b118..6ee8327 100644
--- a/mojo/system/core_test_base.cc
+++ b/mojo/system/core_test_base.cc
@@ -98,8 +98,8 @@ class MockDispatcher : public Dispatcher {
}
virtual MojoResult BeginWriteDataImplNoLock(
- void** /*buffer*/,
- uint32_t* /*buffer_num_bytes*/,
+ UserPointer<void*> /*buffer*/,
+ UserPointer<uint32_t> /*buffer_num_bytes*/,
MojoWriteDataFlags /*flags*/) OVERRIDE {
info_->IncrementBeginWriteDataCallCount();
lock().AssertAcquired();
diff --git a/mojo/system/data_pipe.cc b/mojo/system/data_pipe.cc
index 6337648..02b49be 100644
--- a/mojo/system/data_pipe.cc
+++ b/mojo/system/data_pipe.cc
@@ -120,9 +120,10 @@ MojoResult DataPipe::ProducerWriteData(const void* elements,
return rv;
}
-MojoResult DataPipe::ProducerBeginWriteData(void** buffer,
- uint32_t* buffer_num_bytes,
- bool all_or_none) {
+MojoResult DataPipe::ProducerBeginWriteData(
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
+ bool all_or_none) {
base::AutoLock locker(lock_);
DCHECK(has_local_producer_no_lock());
@@ -131,11 +132,15 @@ MojoResult DataPipe::ProducerBeginWriteData(void** buffer,
if (!consumer_open_no_lock())
return MOJO_RESULT_FAILED_PRECONDITION;
- if (all_or_none && *buffer_num_bytes % element_num_bytes_ != 0)
- return MOJO_RESULT_INVALID_ARGUMENT;
+ uint32_t min_num_bytes_to_write = 0;
+ if (all_or_none) {
+ min_num_bytes_to_write = buffer_num_bytes.Get();
+ if (min_num_bytes_to_write % element_num_bytes_ != 0)
+ return MOJO_RESULT_INVALID_ARGUMENT;
+ }
MojoResult rv = ProducerBeginWriteDataImplNoLock(buffer, buffer_num_bytes,
- all_or_none);
+ min_num_bytes_to_write);
if (rv != MOJO_RESULT_OK)
return rv;
// Note: No need to awake producer waiters, even though we're going from
diff --git a/mojo/system/data_pipe.h b/mojo/system/data_pipe.h
index 2cab507..cd7c96d 100644
--- a/mojo/system/data_pipe.h
+++ b/mojo/system/data_pipe.h
@@ -14,6 +14,7 @@
#include "mojo/public/c/system/data_pipe.h"
#include "mojo/public/c/system/types.h"
#include "mojo/system/handle_signals_state.h"
+#include "mojo/system/memory.h"
#include "mojo/system/system_impl_export.h"
namespace mojo {
@@ -54,9 +55,8 @@ class MOJO_SYSTEM_IMPL_EXPORT DataPipe :
MojoResult ProducerWriteData(const void* elements,
uint32_t* num_bytes,
bool all_or_none);
- // This does not validate its arguments.
- MojoResult ProducerBeginWriteData(void** buffer,
- uint32_t* buffer_num_bytes,
+ MojoResult ProducerBeginWriteData(UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
bool all_or_none);
MojoResult ProducerEndWriteData(uint32_t num_bytes_written);
MojoResult ProducerAddWaiter(Waiter* waiter,
@@ -102,9 +102,9 @@ class MOJO_SYSTEM_IMPL_EXPORT DataPipe :
uint32_t* num_bytes,
bool all_or_none) = 0;
virtual MojoResult ProducerBeginWriteDataImplNoLock(
- void** buffer,
- uint32_t* buffer_num_bytes,
- bool all_or_none) = 0;
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
+ uint32_t min_num_bytes_to_write) = 0;
virtual MojoResult ProducerEndWriteDataImplNoLock(
uint32_t num_bytes_written) = 0;
// Note: A producer should not be writable during a two-phase write.
diff --git a/mojo/system/data_pipe_producer_dispatcher.cc b/mojo/system/data_pipe_producer_dispatcher.cc
index ec99549..b54f2d2 100644
--- a/mojo/system/data_pipe_producer_dispatcher.cc
+++ b/mojo/system/data_pipe_producer_dispatcher.cc
@@ -66,16 +66,11 @@ MojoResult DataPipeProducerDispatcher::WriteDataImplNoLock(
}
MojoResult DataPipeProducerDispatcher::BeginWriteDataImplNoLock(
- void** buffer,
- uint32_t* buffer_num_bytes,
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
MojoWriteDataFlags flags) {
lock().AssertAcquired();
- if (!VerifyUserPointerWithCount<void*>(buffer, 1))
- return MOJO_RESULT_INVALID_ARGUMENT;
- if (!VerifyUserPointer<uint32_t>(buffer_num_bytes))
- return MOJO_RESULT_INVALID_ARGUMENT;
-
return data_pipe_->ProducerBeginWriteData(
buffer, buffer_num_bytes, (flags & MOJO_WRITE_DATA_FLAG_ALL_OR_NONE));
}
diff --git a/mojo/system/data_pipe_producer_dispatcher.h b/mojo/system/data_pipe_producer_dispatcher.h
index 63ad318..3aaf1f0 100644
--- a/mojo/system/data_pipe_producer_dispatcher.h
+++ b/mojo/system/data_pipe_producer_dispatcher.h
@@ -41,8 +41,8 @@ class MOJO_SYSTEM_IMPL_EXPORT DataPipeProducerDispatcher : public Dispatcher {
uint32_t* num_bytes,
MojoWriteDataFlags flags) OVERRIDE;
virtual MojoResult BeginWriteDataImplNoLock(
- void** buffer,
- uint32_t* buffer_num_bytes,
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
MojoWriteDataFlags flags) OVERRIDE;
virtual MojoResult EndWriteDataImplNoLock(
uint32_t num_bytes_written) OVERRIDE;
diff --git a/mojo/system/dispatcher.cc b/mojo/system/dispatcher.cc
index d03fca7..f62bd94 100644
--- a/mojo/system/dispatcher.cc
+++ b/mojo/system/dispatcher.cc
@@ -146,8 +146,8 @@ MojoResult Dispatcher::WriteData(const void* elements,
return WriteDataImplNoLock(elements, num_bytes, flags);
}
-MojoResult Dispatcher::BeginWriteData(void** buffer,
- uint32_t* buffer_num_bytes,
+MojoResult Dispatcher::BeginWriteData(UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
MojoWriteDataFlags flags) {
base::AutoLock locker(lock_);
if (is_closed_)
@@ -285,9 +285,10 @@ MojoResult Dispatcher::WriteDataImplNoLock(const void* /*elements*/,
return MOJO_RESULT_INVALID_ARGUMENT;
}
-MojoResult Dispatcher::BeginWriteDataImplNoLock(void** /*buffer*/,
- uint32_t* /*buffer_num_bytes*/,
- MojoWriteDataFlags /*flags*/) {
+MojoResult Dispatcher::BeginWriteDataImplNoLock(
+ UserPointer<void*> /*buffer*/,
+ UserPointer<uint32_t> /*buffer_num_bytes*/,
+ MojoWriteDataFlags /*flags*/) {
lock_.AssertAcquired();
DCHECK(!is_closed_);
// By default, not supported. Only needed for data pipe dispatchers.
diff --git a/mojo/system/dispatcher.h b/mojo/system/dispatcher.h
index 051e2bc..ad0fe55 100644
--- a/mojo/system/dispatcher.h
+++ b/mojo/system/dispatcher.h
@@ -20,6 +20,7 @@
#include "mojo/public/c/system/data_pipe.h"
#include "mojo/public/c/system/message_pipe.h"
#include "mojo/public/c/system/types.h"
+#include "mojo/system/memory.h"
#include "mojo/system/system_impl_export.h"
namespace mojo {
@@ -94,8 +95,8 @@ class MOJO_SYSTEM_IMPL_EXPORT Dispatcher :
MojoResult WriteData(const void* elements,
uint32_t* elements_num_bytes,
MojoWriteDataFlags flags);
- MojoResult BeginWriteData(void** buffer,
- uint32_t* buffer_num_bytes,
+ MojoResult BeginWriteData(UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
MojoWriteDataFlags flags);
MojoResult EndWriteData(uint32_t num_bytes_written);
MojoResult ReadData(void* elements,
@@ -224,9 +225,10 @@ class MOJO_SYSTEM_IMPL_EXPORT Dispatcher :
virtual MojoResult WriteDataImplNoLock(const void* elements,
uint32_t* num_bytes,
MojoWriteDataFlags flags);
- virtual MojoResult BeginWriteDataImplNoLock(void** buffer,
- uint32_t* buffer_num_bytes,
- MojoWriteDataFlags flags);
+ virtual MojoResult BeginWriteDataImplNoLock(
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
+ MojoWriteDataFlags flags);
virtual MojoResult EndWriteDataImplNoLock(uint32_t num_bytes_written);
virtual MojoResult ReadDataImplNoLock(void* elements,
uint32_t* num_bytes,
diff --git a/mojo/system/dispatcher_unittest.cc b/mojo/system/dispatcher_unittest.cc
index 9178082..abe1886 100644
--- a/mojo/system/dispatcher_unittest.cc
+++ b/mojo/system/dispatcher_unittest.cc
@@ -9,6 +9,7 @@
#include "base/memory/scoped_vector.h"
#include "base/synchronization/waitable_event.h"
#include "base/threading/simple_thread.h"
+#include "mojo/system/memory.h"
#include "mojo/system/raw_shared_buffer.h"
#include "mojo/system/waiter.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -52,7 +53,8 @@ TEST(DispatcherTest, Basic) {
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- d->BeginWriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE));
+ d->BeginWriteData(NullUserPointer(), NullUserPointer(),
+ MOJO_WRITE_DATA_FLAG_NONE));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
d->EndWriteData(0));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
@@ -79,7 +81,8 @@ TEST(DispatcherTest, Basic) {
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
d->WriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- d->BeginWriteData(NULL, NULL, MOJO_WRITE_DATA_FLAG_NONE));
+ d->BeginWriteData(NullUserPointer(), NullUserPointer(),
+ MOJO_WRITE_DATA_FLAG_NONE));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
d->EndWriteData(0));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
@@ -157,7 +160,8 @@ class ThreadSafetyStressThread : public base::SimpleThread {
break;
case BEGIN_WRITE_DATA:
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- dispatcher_->BeginWriteData(NULL, NULL,
+ dispatcher_->BeginWriteData(NullUserPointer(),
+ NullUserPointer(),
MOJO_WRITE_DATA_FLAG_NONE));
break;
case END_WRITE_DATA:
diff --git a/mojo/system/local_data_pipe.cc b/mojo/system/local_data_pipe.cc
index eb799cc..8d37bcf 100644
--- a/mojo/system/local_data_pipe.cc
+++ b/mojo/system/local_data_pipe.cc
@@ -101,9 +101,9 @@ MojoResult LocalDataPipe::ProducerWriteDataImplNoLock(const void* elements,
}
MojoResult LocalDataPipe::ProducerBeginWriteDataImplNoLock(
- void** buffer,
- uint32_t* buffer_num_bytes,
- bool all_or_none) {
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
+ uint32_t min_num_bytes_to_write) {
DCHECK(consumer_open_no_lock());
// The index we need to start writing at.
@@ -111,17 +111,17 @@ MojoResult LocalDataPipe::ProducerBeginWriteDataImplNoLock(
(start_index_ + current_num_bytes_) % capacity_num_bytes();
size_t max_num_bytes_to_write = GetMaxNumBytesToWriteNoLock();
- if (all_or_none && *buffer_num_bytes > max_num_bytes_to_write) {
+ if (min_num_bytes_to_write > max_num_bytes_to_write) {
// In "may discard" mode, we can always write from the write index to the
// end of the buffer.
if (may_discard() &&
- *buffer_num_bytes <= capacity_num_bytes() - write_index) {
+ min_num_bytes_to_write <= capacity_num_bytes() - write_index) {
// To do so, we need to discard an appropriate amount of data.
// We should only reach here if the start index is after the write index!
DCHECK_GE(start_index_, write_index);
- DCHECK_GT(*buffer_num_bytes - max_num_bytes_to_write, 0u);
- MarkDataAsConsumedNoLock(*buffer_num_bytes - max_num_bytes_to_write);
- max_num_bytes_to_write = *buffer_num_bytes;
+ DCHECK_GT(min_num_bytes_to_write - max_num_bytes_to_write, 0u);
+ MarkDataAsConsumedNoLock(min_num_bytes_to_write - max_num_bytes_to_write);
+ max_num_bytes_to_write = min_num_bytes_to_write;
} else {
// Don't return "should wait" since you can't wait for a specified amount
// of data.
@@ -134,8 +134,8 @@ MojoResult LocalDataPipe::ProducerBeginWriteDataImplNoLock(
return MOJO_RESULT_SHOULD_WAIT;
EnsureBufferNoLock();
- *buffer = buffer_.get() + write_index;
- *buffer_num_bytes = static_cast<uint32_t>(max_num_bytes_to_write);
+ buffer.Put(buffer_.get() + write_index);
+ buffer_num_bytes.Put(static_cast<uint32_t>(max_num_bytes_to_write));
set_producer_two_phase_max_num_bytes_written_no_lock(
static_cast<uint32_t>(max_num_bytes_to_write));
return MOJO_RESULT_OK;
diff --git a/mojo/system/local_data_pipe.h b/mojo/system/local_data_pipe.h
index 74ed156..017627b 100644
--- a/mojo/system/local_data_pipe.h
+++ b/mojo/system/local_data_pipe.h
@@ -35,9 +35,9 @@ class MOJO_SYSTEM_IMPL_EXPORT LocalDataPipe : public DataPipe {
uint32_t* num_bytes,
bool all_or_none) OVERRIDE;
virtual MojoResult ProducerBeginWriteDataImplNoLock(
- void** buffer,
- uint32_t* buffer_num_bytes,
- bool all_or_none) OVERRIDE;
+ UserPointer<void*> buffer,
+ UserPointer<uint32_t> buffer_num_bytes,
+ uint32_t min_num_bytes_to_write) OVERRIDE;
virtual MojoResult ProducerEndWriteDataImplNoLock(
uint32_t num_bytes_written) OVERRIDE;
virtual HandleSignalsState
diff --git a/mojo/system/local_data_pipe_unittest.cc b/mojo/system/local_data_pipe_unittest.cc
index 034d985..1dc3488 100644
--- a/mojo/system/local_data_pipe_unittest.cc
+++ b/mojo/system/local_data_pipe_unittest.cc
@@ -9,6 +9,7 @@
#include "base/basictypes.h"
#include "base/memory/ref_counted.h"
#include "mojo/system/data_pipe.h"
+#include "mojo/system/memory.h"
#include "mojo/system/waiter.h"
#include "testing/gtest/include/gtest/gtest.h"
@@ -250,7 +251,8 @@ TEST(LocalDataPipeTest, BasicProducerWaiting) {
void* buffer = NULL;
num_bytes = static_cast<uint32_t>(3u * sizeof(elements[0]));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&buffer, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&buffer),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(buffer != NULL);
EXPECT_EQ(static_cast<uint32_t>(1u * sizeof(elements[0])), num_bytes);
@@ -419,7 +421,8 @@ TEST(LocalDataPipeTest, BasicConsumerWaiting) {
// Request room for three (but we'll only write two).
uint32_t num_bytes = static_cast<uint32_t>(3u * sizeof(elements[0]));
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&buffer, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&buffer),
+ MakeUserPointer(&num_bytes), true));
EXPECT_TRUE(buffer != NULL);
EXPECT_GE(num_bytes, static_cast<uint32_t>(3u * sizeof(elements[0])));
elements = static_cast<int32_t*>(buffer);
@@ -507,7 +510,8 @@ TEST(LocalDataPipeTest, BasicTwoPhaseWaiting) {
uint32_t num_bytes = static_cast<uint32_t>(1u * sizeof(int32_t));
void* write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_ptr != NULL);
EXPECT_GE(num_bytes, static_cast<uint32_t>(1u * sizeof(int32_t)));
@@ -545,7 +549,8 @@ TEST(LocalDataPipeTest, BasicTwoPhaseWaiting) {
num_bytes = static_cast<uint32_t>(1u * sizeof(int32_t));
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_ptr != NULL);
EXPECT_GE(num_bytes, static_cast<uint32_t>(1u * sizeof(int32_t)));
@@ -778,7 +783,8 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 0u;
void* write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_ptr != NULL);
EXPECT_EQ(6u * sizeof(int32_t), num_bytes);
Seq(400, 6, static_cast<int32_t*>(write_ptr));
@@ -791,7 +797,8 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 6u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_EQ(4u * sizeof(int32_t), num_bytes);
static_cast<int32_t*>(write_ptr)[0] = 500;
EXPECT_EQ(MOJO_RESULT_OK, dp->ProducerEndWriteData(1u * sizeof(int32_t)));
@@ -802,14 +809,16 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 10u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
// But requesting, say, a 5-element (up to 9, really) buffer should be okay.
// It will discard two elements.
num_bytes = 5u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
EXPECT_EQ(5u * sizeof(int32_t), num_bytes);
// Only write 4 elements though.
Seq(600, 4, static_cast<int32_t*>(write_ptr));
@@ -822,7 +831,8 @@ TEST(LocalDataPipeTest, MayDiscard) {
num_bytes = 5u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
EXPECT_EQ(5u * sizeof(int32_t), num_bytes);
// Only write 3 elements though.
Seq(700, 3, static_cast<int32_t*>(write_ptr));
@@ -1096,7 +1106,8 @@ TEST(LocalDataPipeTest, TwoPhaseAllOrNone) {
uint32_t num_bytes = 20u * sizeof(int32_t);
void* write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
// Try writing an amount which isn't a multiple of the element size
// (two-phase).
@@ -1104,7 +1115,8 @@ TEST(LocalDataPipeTest, TwoPhaseAllOrNone) {
num_bytes = 1u;
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
// Try reading way too much (two-phase).
num_bytes = 20u * sizeof(int32_t);
@@ -1116,7 +1128,8 @@ TEST(LocalDataPipeTest, TwoPhaseAllOrNone) {
num_bytes = 5u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
// May provide more space than requested.
EXPECT_GE(num_bytes, 5u * sizeof(int32_t));
EXPECT_TRUE(write_ptr != NULL);
@@ -1149,7 +1162,8 @@ TEST(LocalDataPipeTest, TwoPhaseAllOrNone) {
num_bytes = 6u * sizeof(int32_t);
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OUT_OF_RANGE,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, true));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), true));
// Write six elements (simple), filling the buffer.
num_bytes = 6u * sizeof(int32_t);
@@ -1242,7 +1256,8 @@ TEST(LocalDataPipeTest, WrapAround) {
void* write_buffer_ptr = NULL;
num_bytes = 0u;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_buffer_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_buffer_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_buffer_ptr != NULL);
EXPECT_EQ(80u, num_bytes);
EXPECT_EQ(MOJO_RESULT_OK, dp->ProducerEndWriteData(0u));
@@ -1315,7 +1330,8 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
void* write_buffer_ptr = NULL;
num_bytes = 0u;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_buffer_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_buffer_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_buffer_ptr != NULL);
EXPECT_GT(num_bytes, 0u);
@@ -1360,7 +1376,8 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
void* write_buffer_ptr = NULL;
num_bytes = 0u;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_buffer_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_buffer_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_buffer_ptr != NULL);
ASSERT_GT(num_bytes, kTestDataSize);
@@ -1391,7 +1408,8 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
write_buffer_ptr = NULL;
num_bytes = 0u;
EXPECT_EQ(MOJO_RESULT_FAILED_PRECONDITION,
- dp->ProducerBeginWriteData(&write_buffer_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_buffer_ptr),
+ MakeUserPointer(&num_bytes), false));
dp->ProducerClose();
}
@@ -1405,7 +1423,8 @@ TEST(LocalDataPipeTest, CloseWriteRead) {
void* write_buffer_ptr = NULL;
uint32_t num_bytes = 0u;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_buffer_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_buffer_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_TRUE(write_buffer_ptr != NULL);
ASSERT_GT(num_bytes, kTestDataSize);
@@ -1485,7 +1504,8 @@ TEST(LocalDataPipeTest, TwoPhaseMoreInvalidArguments) {
num_bytes = 0u;
void* write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT,
dp->ProducerEndWriteData(
num_bytes + static_cast<uint32_t>(sizeof(int32_t))));
@@ -1503,7 +1523,8 @@ TEST(LocalDataPipeTest, TwoPhaseMoreInvalidArguments) {
num_bytes = 0u;
write_ptr = NULL;
EXPECT_EQ(MOJO_RESULT_OK,
- dp->ProducerBeginWriteData(&write_ptr, &num_bytes, false));
+ dp->ProducerBeginWriteData(MakeUserPointer(&write_ptr),
+ MakeUserPointer(&num_bytes), false));
EXPECT_GE(num_bytes, 1u);
EXPECT_EQ(MOJO_RESULT_INVALID_ARGUMENT, dp->ProducerEndWriteData(1u));