Log register_fs, mount, and unmount

This commit is contained in:
pjht 2024-09-23 15:41:50 -05:00
parent 35b8f3b441
commit cf7852bb94
Signed by: pjht
GPG Key ID: CA239FC6934E6F3A
3 changed files with 30 additions and 0 deletions

17
Cargo.lock generated
View File

@ -236,6 +236,22 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "syslog_rpc"
version = "0.1.0"
dependencies = [
"parking_lot",
"postcard",
"syslog_structs",
]
[[package]]
name = "syslog_structs"
version = "0.1.0"
dependencies = [
"serde",
]
[[package]] [[package]]
name = "unicode-ident" name = "unicode-ident"
version = "1.0.12" version = "1.0.12"
@ -248,6 +264,7 @@ version = "0.1.0"
dependencies = [ dependencies = [
"fs_rpc", "fs_rpc",
"parking_lot", "parking_lot",
"syslog_rpc",
"vfs_rpc", "vfs_rpc",
] ]

View File

@ -6,6 +6,7 @@ edition = "2021"
[dependencies] [dependencies]
fs_rpc = { version = "0.1.0", path = "../fs_rpc" } fs_rpc = { version = "0.1.0", path = "../fs_rpc" }
parking_lot = "0.12.3" parking_lot = "0.12.3"
syslog_rpc = { version = "0.1.0", path = "../syslog/syslog_rpc" }
vfs_rpc = { version = "0.1.0", path = "vfs_rpc" } vfs_rpc = { version = "0.1.0", path = "vfs_rpc" }
[workspace] [workspace]

View File

@ -11,10 +11,12 @@ struct Serv {
fs_map: RwLock<HashMap<String, u64>>, fs_map: RwLock<HashMap<String, u64>>,
mount_list: RwLock<HashMap<PathBuf, (u64, u64)>>, mount_list: RwLock<HashMap<PathBuf, (u64, u64)>>,
process_stdio: RwLock<HashMap<u64, [Option<(u64, u64)>; 3]>>, process_stdio: RwLock<HashMap<u64, [Option<(u64, u64)>; 3]>>,
syslog_client: syslog_rpc::Client
} }
impl vfs_rpc::Server for Serv { impl vfs_rpc::Server for Serv {
fn register_fs(&self, from: u64, kind: &str) -> Result<(), ()> { fn register_fs(&self, from: u64, kind: &str) -> Result<(), ()> {
self.syslog_client.send_text_message("vfs", format!("PID {} registered FS type {}", from, kind)).unwrap();
self.fs_map.write().insert(kind.to_string(), from); self.fs_map.write().insert(kind.to_string(), from);
Ok(()) Ok(())
} }
@ -31,6 +33,7 @@ impl vfs_rpc::Server for Serv {
self.mount_list self.mount_list
.write() .write()
.insert(path.to_owned(), (fs_pid, mount_id)); .insert(path.to_owned(), (fs_pid, mount_id));
self.syslog_client.send_text_message("vfs", format!("Mounted {} on {} type {}", dev.display(), path.display(), kind)).unwrap();
Ok(()) Ok(())
} }
@ -59,6 +62,7 @@ impl vfs_rpc::Server for Serv {
if self.mount_list.write().remove(path).is_none() { if self.mount_list.write().remove(path).is_none() {
Err(()) Err(())
} else { } else {
self.syslog_client.send_text_message("vfs", format!("Unmounted {}", path.display())).unwrap();
Ok(()) Ok(())
} }
} }
@ -75,12 +79,20 @@ impl vfs_rpc::Server for Serv {
} }
fn main() { fn main() {
let syslog_pid = loop {
if let Some(pid) = syscalls::try_get_registered(2) {
break pid;
}
};
let syslog_client = syslog_rpc::Client::new(syslog_pid);
vfs_rpc::register_server(Box::new(Serv { vfs_rpc::register_server(Box::new(Serv {
fs_map: RwLock::new(HashMap::new()), fs_map: RwLock::new(HashMap::new()),
mount_list: RwLock::new(HashMap::new()), mount_list: RwLock::new(HashMap::new()),
process_stdio: RwLock::new(HashMap::new()), process_stdio: RwLock::new(HashMap::new()),
syslog_client,
})); }));
syscalls::register(0); syscalls::register(0);
syslog_client.send_text_message("vfs", "VFS initialized").unwrap();
loop { loop {
ipc::process_messages() ipc::process_messages()
} }