Fix EventFdLinux
GitOrigin-RevId: 15b9fe88f5df8489c837d75fe3705a01298e902a
This commit is contained in:
parent
4ec1765b41
commit
23e4c95c1c
@ -81,6 +81,12 @@ void EventFdLinux::release() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void EventFdLinux::acquire() {
|
void EventFdLinux::acquire() {
|
||||||
|
impl_->info.get_flags();
|
||||||
|
SCOPE_EXIT {
|
||||||
|
// Clear flags without EAGAIN and EWOULDBLOCK
|
||||||
|
// Looks like it is safe thing to do with eventfd
|
||||||
|
get_poll_info().clear_flags(PollFlags::Read());
|
||||||
|
};
|
||||||
uint64 res;
|
uint64 res;
|
||||||
auto slice = MutableSlice(reinterpret_cast<char *>(&res), sizeof(res));
|
auto slice = MutableSlice(reinterpret_cast<char *>(&res), sizeof(res));
|
||||||
auto native_fd = impl_->info.native_fd().fd();
|
auto native_fd = impl_->info.native_fd().fd();
|
||||||
@ -97,7 +103,6 @@ void EventFdLinux::acquire() {
|
|||||||
|| read_errno == EWOULDBLOCK
|
|| read_errno == EWOULDBLOCK
|
||||||
#endif
|
#endif
|
||||||
) {
|
) {
|
||||||
get_poll_info().clear_flags(PollFlags::Read());
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
return Status::PosixError(read_errno, PSLICE() << "Read from fd " << native_fd << " has failed");
|
return Status::PosixError(read_errno, PSLICE() << "Read from fd " << native_fd << " has failed");
|
||||||
|
Reference in New Issue
Block a user