diff --git a/adapter/uhdf2/manager/src/devmgr_uevent.c b/adapter/uhdf2/manager/src/devmgr_uevent.c index 461dbcf4526867e2f46cafcd8adc4a9a665eb740..93f700025c0e69bd48ccaeb65717faee742f1f7a 100644 --- a/adapter/uhdf2/manager/src/devmgr_uevent.c +++ b/adapter/uhdf2/manager/src/devmgr_uevent.c @@ -527,15 +527,18 @@ static int32_t DevMgrUeventThread(void *arg) OsalMSleep(DEVMGR_UEVENT_WAIT_TIME); continue; } - if (((uint32_t)fd.revents & POLLIN) == POLLIN) { + if (((uint32_t)fd.revents & (POLLIN | POLLERR)) != 0) { + int backErrno = errno; msgLen = DevMgrReadUeventMessage(sfd, msg, DEVMGR_UEVENT_MSG_SIZE); + if (((uint32_t)fd.revents & POLLERR) != 0) { + HDF_LOGE("%{public}s poll error", __func__); + } if (msgLen <= 0) { + HDF_LOGE("%{public}s recv errno: %{public}d", __func__, backErrno); continue; } DevMgrParseUevent(msg, msgLen); (void)memset_s(&msg, sizeof(msg), 0, sizeof(msg)); - } else if (((uint32_t)fd.revents & POLLERR) == POLLERR) { - HDF_LOGE("%{public}s poll error", __func__); } }