Fix the poll of channel according to gvisor pipe poll test
This commit is contained in:
parent
2ea7fc1ad6
commit
1788f94bfe
@ -2,6 +2,6 @@
|
|||||||
|
|
||||||
[](https://codecov.io/gh/occlum/occlum)
|
[](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
|
currently. Besides, the coverage data is only collected during `make test` and
|
||||||
`make test-glibc`. Adding more tests will improve the coverage data.
|
`make test-glibc`. Adding more tests will improve the coverage data.
|
||||||
|
@ -247,7 +247,7 @@ impl<I> Producer<I> {
|
|||||||
|
|
||||||
let writable = {
|
let writable = {
|
||||||
let mut rb_producer = self.inner.lock().unwrap();
|
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 {
|
if writable {
|
||||||
events |= IoEvents::OUT;
|
events |= IoEvents::OUT;
|
||||||
@ -373,7 +373,7 @@ impl<I> Consumer<I> {
|
|||||||
|
|
||||||
let readable = {
|
let readable = {
|
||||||
let mut rb_consumer = self.inner.lock().unwrap();
|
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 {
|
if readable {
|
||||||
events |= IoEvents::IN;
|
events |= IoEvents::IN;
|
||||||
|
@ -109,9 +109,9 @@ impl Inner {
|
|||||||
let writer_events = self.writer.poll();
|
let writer_events = self.writer.poll();
|
||||||
|
|
||||||
if reader_events.contains(IoEvents::HUP) || self.reader.is_self_shutdown() {
|
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() {
|
if writer_events.contains(IoEvents::ERR) || self.writer.is_self_shutdown() {
|
||||||
events |= IoEvents::HUP;
|
events |= IoEvents::HUP | IoEvents::OUT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user