From 1788f94bfee78ec394f0a88f3c1172b1912b9099 Mon Sep 17 00:00:00 2001 From: He Sun Date: Fri, 22 Jan 2021 00:16:21 +0800 Subject: [PATCH] Fix the poll of channel according to gvisor pipe poll test --- docs/code_coverage.md | 2 +- src/libos/src/fs/channel.rs | 4 ++-- src/libos/src/net/socket/unix/stream/endpoint.rs | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/code_coverage.md b/docs/code_coverage.md index 7b817555..6353fe3b 100644 --- a/docs/code_coverage.md +++ b/docs/code_coverage.md @@ -2,6 +2,6 @@ [![codecov](https://codecov.io/gh/occlum/occlum/branch/master/graph/badge.svg?token=FS22ULGGRC)](https://codecov.io/gh/occlum/occlum) -Occlum are written in different languages. Only *Rust* code coverage is enabled, +Occlum is written in different languages. Only *Rust* code coverage is enabled, currently. Besides, the coverage data is only collected during `make test` and `make test-glibc`. Adding more tests will improve the coverage data. diff --git a/src/libos/src/fs/channel.rs b/src/libos/src/fs/channel.rs index b10fe768..1db402ee 100644 --- a/src/libos/src/fs/channel.rs +++ b/src/libos/src/fs/channel.rs @@ -247,7 +247,7 @@ impl Producer { let writable = { let mut rb_producer = self.inner.lock().unwrap(); - !rb_producer.is_full() || self.is_self_shutdown() || self.is_peer_shutdown() + !rb_producer.is_full() || self.is_self_shutdown() }; if writable { events |= IoEvents::OUT; @@ -373,7 +373,7 @@ impl Consumer { let readable = { let mut rb_consumer = self.inner.lock().unwrap(); - !rb_consumer.is_empty() || self.is_self_shutdown() || self.is_peer_shutdown() + !rb_consumer.is_empty() || self.is_self_shutdown() }; if readable { events |= IoEvents::IN; diff --git a/src/libos/src/net/socket/unix/stream/endpoint.rs b/src/libos/src/net/socket/unix/stream/endpoint.rs index e54fa470..1e427600 100644 --- a/src/libos/src/net/socket/unix/stream/endpoint.rs +++ b/src/libos/src/net/socket/unix/stream/endpoint.rs @@ -109,9 +109,9 @@ impl Inner { let writer_events = self.writer.poll(); if reader_events.contains(IoEvents::HUP) || self.reader.is_self_shutdown() { - events |= IoEvents::RDHUP; + events |= IoEvents::RDHUP | IoEvents::IN; if writer_events.contains(IoEvents::ERR) || self.writer.is_self_shutdown() { - events |= IoEvents::HUP; + events |= IoEvents::HUP | IoEvents::OUT; } }