diff --git a/kernel/aster-nix/src/fs/epoll/epoll_file.rs b/kernel/aster-nix/src/fs/epoll/epoll_file.rs index bf3c18051..a128e91cf 100644 --- a/kernel/aster-nix/src/fs/epoll/epoll_file.rs +++ b/kernel/aster-nix/src/fs/epoll/epoll_file.rs @@ -353,10 +353,8 @@ impl FileLike for EpollFile { fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { - self.pollee - .unregister_observer(observer) - .ok_or_else(|| Error::with_message(Errno::ENOENT, "observer is not registered")) + ) -> Option>> { + self.pollee.unregister_observer(observer) } } diff --git a/kernel/aster-nix/src/fs/file_handle.rs b/kernel/aster-nix/src/fs/file_handle.rs index 994963ade..8a8ca02d6 100644 --- a/kernel/aster-nix/src/fs/file_handle.rs +++ b/kernel/aster-nix/src/fs/file_handle.rs @@ -96,11 +96,12 @@ pub trait FileLike: Send + Sync + Any { return_errno_with_message!(Errno::EINVAL, "register_observer is not supported") } + #[must_use] fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { - return_errno_with_message!(Errno::EINVAL, "unregister_observer is not supported") + ) -> Option>> { + None } fn as_socket(self: Arc) -> Option> { diff --git a/kernel/aster-nix/src/fs/pipe.rs b/kernel/aster-nix/src/fs/pipe.rs index 7563d6801..0fb451711 100644 --- a/kernel/aster-nix/src/fs/pipe.rs +++ b/kernel/aster-nix/src/fs/pipe.rs @@ -71,7 +71,7 @@ impl FileLike for PipeReader { fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { + ) -> Option>> { self.consumer.unregister_observer(observer) } } @@ -137,7 +137,7 @@ impl FileLike for PipeWriter { fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { + ) -> Option>> { self.producer.unregister_observer(observer) } } diff --git a/kernel/aster-nix/src/fs/utils/channel.rs b/kernel/aster-nix/src/fs/utils/channel.rs index 744995ef9..2cfe00599 100644 --- a/kernel/aster-nix/src/fs/utils/channel.rs +++ b/kernel/aster-nix/src/fs/utils/channel.rs @@ -98,11 +98,8 @@ macro_rules! impl_common_methods_for_channel { pub fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { - self.this_end() - .pollee - .unregister_observer(observer) - .ok_or_else(|| Error::with_message(Errno::ENOENT, "the observer is not registered")) + ) -> Option>> { + self.this_end().pollee.unregister_observer(observer) } }; } diff --git a/kernel/aster-nix/src/net/socket/ip/datagram/mod.rs b/kernel/aster-nix/src/net/socket/ip/datagram/mod.rs index 931d7a73c..0e9270d82 100644 --- a/kernel/aster-nix/src/net/socket/ip/datagram/mod.rs +++ b/kernel/aster-nix/src/net/socket/ip/datagram/mod.rs @@ -224,10 +224,8 @@ impl FileLike for DatagramSocket { fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { - self.pollee - .unregister_observer(observer) - .ok_or_else(|| Error::with_message(Errno::ENOENT, "observer is not registered")) + ) -> Option>> { + self.pollee.unregister_observer(observer) } } diff --git a/kernel/aster-nix/src/net/socket/ip/stream/mod.rs b/kernel/aster-nix/src/net/socket/ip/stream/mod.rs index dd4a68aa6..5787b17a9 100644 --- a/kernel/aster-nix/src/net/socket/ip/stream/mod.rs +++ b/kernel/aster-nix/src/net/socket/ip/stream/mod.rs @@ -366,10 +366,8 @@ impl FileLike for StreamSocket { fn unregister_observer( &self, observer: &Weak>, - ) -> Result>> { - self.pollee - .unregister_observer(observer) - .ok_or_else(|| Error::with_message(Errno::ENOENT, "observer is not registered")) + ) -> Option>> { + self.pollee.unregister_observer(observer) } }