mirror of
https://github.com/asterinas/asterinas.git
synced 2025-06-21 16:33:24 +00:00
Implement dummy metadata()
for epoll and socket files
This commit is contained in:
committed by
Tate, Hongliang Tian
parent
3461bd5de6
commit
96a153dfc5
@ -12,7 +12,10 @@ use ostd::sync::LocalIrqDisabled;
|
||||
use super::*;
|
||||
use crate::{
|
||||
events::Observer,
|
||||
fs::{file_handle::FileLike, utils::IoctlCmd},
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, IoctlCmd, Metadata},
|
||||
},
|
||||
process::signal::{Pollable, Pollee, Poller},
|
||||
};
|
||||
|
||||
@ -341,7 +344,6 @@ impl Pollable for EpollFile {
|
||||
}
|
||||
}
|
||||
|
||||
// Implement the common methods required by FileHandle
|
||||
impl FileLike for EpollFile {
|
||||
fn read(&self, _writer: &mut VmWriter) -> Result<usize> {
|
||||
return_errno_with_message!(Errno::EINVAL, "epoll files do not support read");
|
||||
@ -370,6 +372,16 @@ impl FileLike for EpollFile {
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "anonymous inode fs" and link `EpollFile` to it.
|
||||
Metadata::new_file(
|
||||
0,
|
||||
InodeMode::from_bits_truncate(0o600),
|
||||
aster_block::BLOCK_SIZE,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
/// An epoll entry that is contained in an epoll file.
|
||||
|
@ -54,9 +54,8 @@ pub trait FileLike: Pollable + Send + Sync + Any {
|
||||
return_errno_with_message!(Errno::EINVAL, "resize is not supported");
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
panic!("metadata unsupported");
|
||||
}
|
||||
/// Get the metadata that describes this file.
|
||||
fn metadata(&self) -> Metadata;
|
||||
|
||||
fn mode(&self) -> Result<InodeMode> {
|
||||
return_errno_with_message!(Errno::EINVAL, "mode is not supported");
|
||||
|
@ -84,6 +84,8 @@ impl FileLike for PipeReader {
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "PipeFS" and link `PipeReader` to it.
|
||||
let now = RealTimeCoarseClock::get().read_time();
|
||||
Metadata {
|
||||
dev: 0,
|
||||
@ -166,6 +168,8 @@ impl FileLike for PipeWriter {
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "PipeFS" and link `PipeWriter` to it.
|
||||
let now = RealTimeCoarseClock::get().read_time();
|
||||
Metadata {
|
||||
dev: 0,
|
||||
|
@ -9,7 +9,10 @@ use self::{bound::BoundDatagram, unbound::UnboundDatagram};
|
||||
use super::{common::get_ephemeral_endpoint, UNSPECIFIED_LOCAL_ENDPOINT};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
fs::{file_handle::FileLike, utils::StatusFlags},
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
},
|
||||
match_sock_option_mut,
|
||||
net::{
|
||||
iface::poll_ifaces,
|
||||
@ -271,6 +274,16 @@ impl FileLike for DatagramSocket {
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `DatagramSocket` to it.
|
||||
Metadata::new_socket(
|
||||
0,
|
||||
InodeMode::from_bits_truncate(0o140777),
|
||||
aster_block::BLOCK_SIZE,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Socket for DatagramSocket {
|
||||
|
@ -15,7 +15,10 @@ use util::TcpOptionSet;
|
||||
use super::UNSPECIFIED_LOCAL_ENDPOINT;
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
fs::{file_handle::FileLike, utils::StatusFlags},
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
},
|
||||
match_sock_option_mut, match_sock_option_ref,
|
||||
net::{
|
||||
iface::poll_ifaces,
|
||||
@ -428,6 +431,16 @@ impl FileLike for StreamSocket {
|
||||
) -> Option<Weak<dyn Observer<IoEvents>>> {
|
||||
self.pollee.unregister_observer(observer)
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `StreamSocket` to it.
|
||||
Metadata::new_socket(
|
||||
0,
|
||||
InodeMode::from_bits_truncate(0o140777),
|
||||
aster_block::BLOCK_SIZE,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Socket for StreamSocket {
|
||||
|
@ -11,7 +11,10 @@ use super::{
|
||||
};
|
||||
use crate::{
|
||||
events::{IoEvents, Observer},
|
||||
fs::{file_handle::FileLike, utils::StatusFlags},
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
},
|
||||
net::socket::{
|
||||
unix::UnixSocketAddr,
|
||||
util::{send_recv_flags::SendRecvFlags, socket_addr::SocketAddr, MessageHeader},
|
||||
@ -213,6 +216,16 @@ impl FileLike for UnixStreamSocket {
|
||||
State::Connected(connected) => connected.unregister_observer(observer),
|
||||
}
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `UnixStreamSocket` to it.
|
||||
Metadata::new_socket(
|
||||
0,
|
||||
InodeMode::from_bits_truncate(0o140777),
|
||||
aster_block::BLOCK_SIZE,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Socket for UnixStreamSocket {
|
||||
|
@ -5,7 +5,10 @@ use core::sync::atomic::{AtomicBool, Ordering};
|
||||
use super::{connected::Connected, connecting::Connecting, init::Init, listen::Listen};
|
||||
use crate::{
|
||||
events::IoEvents,
|
||||
fs::{file_handle::FileLike, utils::StatusFlags},
|
||||
fs::{
|
||||
file_handle::FileLike,
|
||||
utils::{InodeMode, Metadata, StatusFlags},
|
||||
},
|
||||
net::socket::{
|
||||
vsock::{addr::VsockSocketAddr, VSOCK_GLOBAL},
|
||||
MessageHeader, SendRecvFlags, SockShutdownCmd, Socket, SocketAddr,
|
||||
@ -171,6 +174,16 @@ impl FileLike for VsockStreamSocket {
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "SockFS" and link `VsockStreamSocket` to it.
|
||||
Metadata::new_socket(
|
||||
0,
|
||||
InodeMode::from_bits_truncate(0o140777),
|
||||
aster_block::BLOCK_SIZE,
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
impl Socket for VsockStreamSocket {
|
||||
|
@ -262,6 +262,8 @@ impl FileLike for EventFile {
|
||||
}
|
||||
|
||||
fn metadata(&self) -> Metadata {
|
||||
// This is a dummy implementation.
|
||||
// TODO: Add "anonymous inode fs" and link `EventFile` to it.
|
||||
let now = RealTimeClock::get().read_time();
|
||||
Metadata {
|
||||
dev: 0,
|
||||
|
Reference in New Issue
Block a user