diff options
author | Casey Dahlin <sadmac@google.com> | 2015-11-18 21:42:30 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-11-18 21:42:30 +0000 |
commit | fb92cfcd3e8977a6cac0147de80bf2a0fb6a2d87 (patch) | |
tree | ae67c44c4486dc5c17ba94a5e8c8fc1468deeaef | |
parent | 0dd1a5d2f4e69c5df233fa9468191c03dc9b639f (diff) | |
parent | 5cd09786eb4ff6e99351e8a317205a5efd12ac74 (diff) | |
download | native-fb92cfcd3e8977a6cac0147de80bf2a0fb6a2d87.tar.gz |
Merge "Revert "Add support for unique_fds and vectors of file descriptors""
am: 5cd09786eb
* commit '5cd09786eb4ff6e99351e8a317205a5efd12ac74':
Revert "Add support for unique_fds and vectors of file descriptors"
-rw-r--r-- | include/binder/Parcel.h | 21 | ||||
-rw-r--r-- | libs/binder/Android.mk | 4 | ||||
-rw-r--r-- | libs/binder/Parcel.cpp | 44 |
3 files changed, 9 insertions, 60 deletions
diff --git a/include/binder/Parcel.h b/include/binder/Parcel.h index ed3023941d..430c3ff00c 100644 --- a/include/binder/Parcel.h +++ b/include/binder/Parcel.h @@ -19,7 +19,6 @@ #include <vector> -#include <base/unique_fd.h> #include <cutils/native_handle.h> #include <utils/Errors.h> #include <utils/RefBase.h> @@ -150,17 +149,6 @@ public: // will be closed once the parcel is destroyed. status_t writeDupFileDescriptor(int fd); - // Place a file descriptor into the parcel. This will not affect the - // semantics of the smart file descriptor. A new descriptor will be - // created, and will be closed when the parcel is destroyed. - status_t writeUniqueFileDescriptor( - const android::base::unique_fd& fd); - - // Place a vector of file desciptors into the parcel. Each descriptor is - // dup'd as in writeDupFileDescriptor - status_t writeUniqueFileDescriptorVector( - const std::vector<android::base::unique_fd>& val); - // Writes a blob to the parcel. // If the blob is small, then it is stored in-place, otherwise it is // transferred by way of an anonymous shared memory region. Prefer sending @@ -253,15 +241,6 @@ public: // in the parcel, which you do not own -- use dup() to get your own copy. int readFileDescriptor() const; - // Retrieve a smart file descriptor from the parcel. - status_t readUniqueFileDescriptor( - android::base::unique_fd* val) const; - - - // Retrieve a vector of smart file descriptors from the parcel. - status_t readUniqueFileDescriptorVector( - std::vector<android::base::unique_fd>* val) const; - // Reads a blob from the parcel. // The caller should call release() on the blob after reading its contents. status_t readBlob(size_t len, ReadableBlob* outBlob) const; diff --git a/libs/binder/Android.mk b/libs/binder/Android.mk index 5e85afd1c0..bd11177c43 100644 --- a/libs/binder/Android.mk +++ b/libs/binder/Android.mk @@ -43,7 +43,7 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := libbinder -LOCAL_SHARED_LIBRARIES := liblog libcutils libutils libbase +LOCAL_SHARED_LIBRARIES := liblog libcutils libutils LOCAL_CLANG := true LOCAL_SANITIZE := integer @@ -58,7 +58,7 @@ include $(BUILD_SHARED_LIBRARY) include $(CLEAR_VARS) LOCAL_MODULE := libbinder -LOCAL_STATIC_LIBRARIES += libutils libbase +LOCAL_STATIC_LIBRARIES += libutils LOCAL_SRC_FILES := $(sources) ifneq ($(TARGET_USES_64_BIT_BINDER),true) ifneq ($(TARGET_IS_64_BIT),true) diff --git a/libs/binder/Parcel.cpp b/libs/binder/Parcel.cpp index 92b80e9c6a..1b41eae631 100644 --- a/libs/binder/Parcel.cpp +++ b/libs/binder/Parcel.cpp @@ -80,8 +80,6 @@ struct small_flat_data namespace android { -using android::base::unique_fd; - static pthread_mutex_t gParcelGlobalAllocSizeLock = PTHREAD_MUTEX_INITIALIZER; static size_t gParcelGlobalAllocSize = 0; static size_t gParcelGlobalAllocCount = 0; @@ -1075,20 +1073,12 @@ status_t Parcel::writeDupFileDescriptor(int fd) return -errno; } status_t err = writeFileDescriptor(dupFd, true /*takeOwnership*/); - if (err != OK) { + if (err) { close(dupFd); } return err; } -status_t Parcel::writeUniqueFileDescriptor(const unique_fd& fd) { - return writeDupFileDescriptor(fd.get()); -} - -status_t Parcel::writeUniqueFileDescriptorVector(const std::vector<unique_fd>& val) { - return writeTypedVector(val, this, &Parcel::writeUniqueFileDescriptor); -} - status_t Parcel::writeBlob(size_t len, bool mutableCopy, WritableBlob* outBlob) { if (len > INT32_MAX) { @@ -1690,36 +1680,16 @@ native_handle* Parcel::readNativeHandle() const int Parcel::readFileDescriptor() const { const flat_binder_object* flat = readObject(true); - - if (flat && flat->type == BINDER_TYPE_FD) { - return flat->handle; + if (flat) { + switch (flat->type) { + case BINDER_TYPE_FD: + //ALOGI("Returning file descriptor %ld from parcel %p", flat->handle, this); + return flat->handle; + } } - return BAD_TYPE; } -status_t Parcel::readUniqueFileDescriptor(unique_fd* val) const -{ - int got = readFileDescriptor(); - - if (got == BAD_TYPE) { - return BAD_TYPE; - } - - val->reset(dup(got)); - - if (val->get() < 0) { - return BAD_VALUE; - } - - return OK; -} - - -status_t Parcel::readUniqueFileDescriptorVector(std::vector<unique_fd>* val) const { - return readTypedVector(val, this, &Parcel::readUniqueFileDescriptor); -} - status_t Parcel::readBlob(size_t len, ReadableBlob* outBlob) const { int32_t blobType; |