diff --git a/display/composer/hdifd_parcelable/hdifd_parcelable.cpp b/display/composer/hdifd_parcelable/hdifd_parcelable.cpp index 3ab07c9a5d1fa9119534f2e3c1ac27db77e70bfa..87571c62be37e462eabf8873573a4592f364c39b 100644 --- a/display/composer/hdifd_parcelable/hdifd_parcelable.cpp +++ b/display/composer/hdifd_parcelable/hdifd_parcelable.cpp @@ -26,6 +26,9 @@ #undef LOG_DOMAIN #define LOG_DOMAIN 0xD002515 +#define MONITOR_FD_MIN 2000 +#define MONITOR_FD_MAX 2020 + namespace OHOS { namespace HDI { namespace Display { @@ -42,6 +45,9 @@ HdifdParcelable::HdifdParcelable(int32_t fd) HdifdParcelable::~HdifdParcelable() { if (isOwner_ && (hdiFd_ >= 0)) { + if (hdiFd_ >= MONITOR_FD_MIN && hdiFd_ <= MONITOR_FD_MAX) { + HDF_LOGI("close FD:%{public}d", hdiFd_); + } close(hdiFd_); } } @@ -58,6 +64,9 @@ bool HdifdParcelable::Init(int32_t fd) hdiFd_ = -1; } else { hdiFd_ = dup(fd); + if (hdiFd_ >= MONITOR_FD_MIN && hdiFd_ <= MONITOR_FD_MAX) { + HDF_LOGI("dup FD:%{public}d from %{public}d", hdiFd_, fd); + } ret = (hdiFd_ < 0) ? false : true; } if (!ret) { @@ -77,16 +86,24 @@ bool HdifdParcelable::WriteFileDescriptor(const int fd, Parcel& parcel) if (dupFd < 0) { return false; } - + if (dupFd >= MONITOR_FD_MIN && dupFd <= MONITOR_FD_MAX) { + HDF_LOGI("dup FD:%{public}d from %{public}d", dupFd, fd); + } sptr descriptor(new (std::nothrow) IPCFileDescriptor(dupFd)); if (descriptor == nullptr) { HDF_LOGE("%{public}s: create IPCFileDescriptor object failed", __func__); + if (dupFd >= MONITOR_FD_MIN && dupFd <= MONITOR_FD_MAX) { + HDF_LOGI("close FD:%{public}d", dupFd); + } close(dupFd); return false; } bool ret = parcel.WriteObject(descriptor); if (!ret) { HDF_LOGE("%{public}s: WriteObject IPCFileDescriptor failed", __func__); + if (dupFd >= MONITOR_FD_MIN && dupFd <= MONITOR_FD_MAX) { + HDF_LOGI("close FD:%{public}d", dupFd); + } close(dupFd); return false; } @@ -103,7 +120,11 @@ int HdifdParcelable::ReadFileDescriptor(Parcel& parcel) if (fd < 0) { return -1; } - return dup(fd); + int dupFd = dup(fd); + if (dupFd >= MONITOR_FD_MIN && dupFd <= MONITOR_FD_MAX) { + HDF_LOGI("dup FD:%{public}d from %{public}d", dupFd, fd); + } + return dupFd; } bool HdifdParcelable::Marshalling(Parcel& parcel) const @@ -142,6 +163,9 @@ sptr HdifdParcelable::Unmarshalling(Parcel& parcel) if (fd >= 0) { close(fd); } + if (fd >= MONITOR_FD_MIN && fd <= MONITOR_FD_MAX) { + HDF_LOGI("close FD:%{public}d", fd); + } return sptr(); } return newParcelable; @@ -154,6 +178,9 @@ int32_t HdifdParcelable::GetFd() int32_t HdifdParcelable::Move() { + if (hdiFd_ >= MONITOR_FD_MIN && hdiFd_ <= MONITOR_FD_MAX) { + HDF_LOGI("not own FD:%{public}d", hdiFd_); + } isOwner_ = false; return hdiFd_; }