diff options
author | hashimoto <hashimoto@chromium.org> | 2016-03-08 21:28:31 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2016-03-09 05:30:02 +0000 |
commit | efaa412a93b5af1a0a4703348c7061923d132e6d (patch) | |
tree | 60613c3e823348fa283f3c48c8929b97b17507ff /chromeos | |
parent | f41a2211a775b1f607eabe0c8e934daa42c15be0 (diff) | |
download | chromium_src-efaa412a93b5af1a0a4703348c7061923d132e6d.zip chromium_src-efaa412a93b5af1a0a4703348c7061923d132e6d.tar.gz chromium_src-efaa412a93b5af1a0a4703348c7061923d132e6d.tar.bz2 |
Support 64-bit binder on 32-bit device
It's possible to config 32-bit kernel to use 64-bit binder
Use binder_uintptr_t and binder_size_t whenever appropriate.
BUG=563282
Review URL: https://codereview.chromium.org/1771203003
Cr-Commit-Position: refs/heads/master@{#380074}
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/binder/command_broker.cc | 2 | ||||
-rw-r--r-- | chromeos/binder/command_stream.cc | 3 | ||||
-rw-r--r-- | chromeos/binder/transaction_data.h | 3 | ||||
-rw-r--r-- | chromeos/binder/transaction_data_from_driver.cc | 8 | ||||
-rw-r--r-- | chromeos/binder/transaction_data_from_driver.h | 2 | ||||
-rw-r--r-- | chromeos/binder/transaction_status.cc | 2 | ||||
-rw-r--r-- | chromeos/binder/transaction_status.h | 2 | ||||
-rw-r--r-- | chromeos/binder/writable_transaction_data.cc | 2 | ||||
-rw-r--r-- | chromeos/binder/writable_transaction_data.h | 4 |
9 files changed, 15 insertions, 13 deletions
diff --git a/chromeos/binder/command_broker.cc b/chromeos/binder/command_broker.cc index f4a74f1..3fefc47 100644 --- a/chromeos/binder/command_broker.cc +++ b/chromeos/binder/command_broker.cc @@ -33,7 +33,7 @@ binder_transaction_data ConvertTransactionDataToStruct( } result.data_size = data.GetDataSize(); result.data.ptr.buffer = reinterpret_cast<binder_uintptr_t>(data.GetData()); - result.offsets_size = data.GetNumObjectOffsets() * sizeof(size_t); + result.offsets_size = data.GetNumObjectOffsets() * sizeof(binder_size_t); result.data.ptr.offsets = reinterpret_cast<binder_uintptr_t>(data.GetObjectOffsets()); return result; diff --git a/chromeos/binder/command_stream.cc b/chromeos/binder/command_stream.cc index 6419afb..a60207a 100644 --- a/chromeos/binder/command_stream.cc +++ b/chromeos/binder/command_stream.cc @@ -213,7 +213,8 @@ bool CommandStream::OnIncomingCommand(uint32_t command, BufferReader* reader) { void CommandStream::FreeTransactionBuffer(const void* ptr) { DCHECK(thread_checker_.CalledOnValidThread()); - AppendOutgoingCommand(BC_FREE_BUFFER, &ptr, sizeof(ptr)); + binder_uintptr_t p = reinterpret_cast<binder_uintptr_t>(ptr); + AppendOutgoingCommand(BC_FREE_BUFFER, &p, sizeof(p)); } } // namespace binder diff --git a/chromeos/binder/transaction_data.h b/chromeos/binder/transaction_data.h index 900ca08..c6dc7ec 100644 --- a/chromeos/binder/transaction_data.h +++ b/chromeos/binder/transaction_data.h @@ -7,6 +7,7 @@ #include <sys/types.h> +#include "chromeos/binder/binder_driver_api.h" #include "chromeos/binder/status.h" namespace binder { @@ -45,7 +46,7 @@ class TransactionData { virtual size_t GetDataSize() const = 0; // Returns the offsets of objects stored in the payload. - virtual const uintptr_t* GetObjectOffsets() const = 0; + virtual const binder_uintptr_t* GetObjectOffsets() const = 0; // Returns the number of objects. virtual size_t GetNumObjectOffsets() const = 0; diff --git a/chromeos/binder/transaction_data_from_driver.cc b/chromeos/binder/transaction_data_from_driver.cc index b14c324..91f4769 100644 --- a/chromeos/binder/transaction_data_from_driver.cc +++ b/chromeos/binder/transaction_data_from_driver.cc @@ -80,13 +80,13 @@ size_t TransactionDataFromDriver::GetDataSize() const { return data_.data_size; } -const uintptr_t* TransactionDataFromDriver::GetObjectOffsets() const { - return reinterpret_cast<const uintptr_t*>(data_.data.ptr.offsets); +const binder_uintptr_t* TransactionDataFromDriver::GetObjectOffsets() const { + return reinterpret_cast<const binder_uintptr_t*>(data_.data.ptr.offsets); } size_t TransactionDataFromDriver::GetNumObjectOffsets() const { - DCHECK_EQ(0u, data_.offsets_size % sizeof(size_t)); - return data_.offsets_size / sizeof(size_t); + DCHECK_EQ(0u, data_.offsets_size % sizeof(binder_size_t)); + return data_.offsets_size / sizeof(binder_size_t); } } // namespace binder diff --git a/chromeos/binder/transaction_data_from_driver.h b/chromeos/binder/transaction_data_from_driver.h index 0ddf43f..23552d8 100644 --- a/chromeos/binder/transaction_data_from_driver.h +++ b/chromeos/binder/transaction_data_from_driver.h @@ -42,7 +42,7 @@ class CHROMEOS_EXPORT TransactionDataFromDriver : public TransactionData { Status GetStatus() const override; const void* GetData() const override; size_t GetDataSize() const override; - const uintptr_t* GetObjectOffsets() const override; + const binder_uintptr_t* GetObjectOffsets() const override; size_t GetNumObjectOffsets() const override; private: diff --git a/chromeos/binder/transaction_status.cc b/chromeos/binder/transaction_status.cc index 20f997c..4ac6a39 100644 --- a/chromeos/binder/transaction_status.cc +++ b/chromeos/binder/transaction_status.cc @@ -46,7 +46,7 @@ size_t TransactionStatus::GetDataSize() const { return sizeof(status_); } -const uintptr_t* TransactionStatus::GetObjectOffsets() const { +const binder_uintptr_t* TransactionStatus::GetObjectOffsets() const { return nullptr; } diff --git a/chromeos/binder/transaction_status.h b/chromeos/binder/transaction_status.h index 088d173..27cafa3 100644 --- a/chromeos/binder/transaction_status.h +++ b/chromeos/binder/transaction_status.h @@ -33,7 +33,7 @@ class CHROMEOS_EXPORT TransactionStatus : public TransactionData { Status GetStatus() const override; const void* GetData() const override; size_t GetDataSize() const override; - const uintptr_t* GetObjectOffsets() const override; + const binder_uintptr_t* GetObjectOffsets() const override; size_t GetNumObjectOffsets() const override; private: diff --git a/chromeos/binder/writable_transaction_data.cc b/chromeos/binder/writable_transaction_data.cc index 5e56268..28f672d 100644 --- a/chromeos/binder/writable_transaction_data.cc +++ b/chromeos/binder/writable_transaction_data.cc @@ -52,7 +52,7 @@ size_t WritableTransactionData::GetDataSize() const { return data_.size(); } -const uintptr_t* WritableTransactionData::GetObjectOffsets() const { +const binder_uintptr_t* WritableTransactionData::GetObjectOffsets() const { return object_offsets_.data(); } diff --git a/chromeos/binder/writable_transaction_data.h b/chromeos/binder/writable_transaction_data.h index 1594901..fbad83c 100644 --- a/chromeos/binder/writable_transaction_data.h +++ b/chromeos/binder/writable_transaction_data.h @@ -46,7 +46,7 @@ class CHROMEOS_EXPORT WritableTransactionData : public TransactionData { Status GetStatus() const override; const void* GetData() const override; size_t GetDataSize() const override; - const uintptr_t* GetObjectOffsets() const override; + const binder_uintptr_t* GetObjectOffsets() const override; size_t GetNumObjectOffsets() const override; // Expands the capacity of the internal buffer. @@ -106,7 +106,7 @@ class CHROMEOS_EXPORT WritableTransactionData : public TransactionData { uint32_t code_ = 0; bool is_one_way_ = false; std::vector<char> data_; - std::vector<uintptr_t> object_offsets_; + std::vector<binder_uintptr_t> object_offsets_; std::vector<scoped_refptr<Object>> objects_; std::vector<base::ScopedFD> files_; |