user: replace third-party humansize

This commit is contained in:
Mark Poliakov 2025-02-24 14:53:09 +02:00
parent 6abea7ef22
commit d910e8c1a0
8 changed files with 36 additions and 24 deletions

4
Cargo.lock generated
View File

@ -1357,6 +1357,10 @@ dependencies = [
"vcpkg", "vcpkg",
] ]
[[package]]
name = "libutil"
version = "0.1.0"
[[package]] [[package]]
name = "libyalloc" name = "libyalloc"
version = "0.1.0" version = "0.1.0"

View File

@ -17,7 +17,8 @@ members = [
"lib/libyalloc", "lib/libyalloc",
"lib/runtime", "lib/runtime",
"lib/qemu", "lib/qemu",
"lib/abi-serde" "lib/abi-serde",
"lib/libutil"
] ]
[workspace.dependencies] [workspace.dependencies]

15
userspace/Cargo.lock generated
View File

@ -1053,15 +1053,6 @@ dependencies = [
"itoa", "itoa",
] ]
[[package]]
name = "humansize"
version = "2.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cb51c9a029ddc91b07a787f1d86b53ccfa49b0e86688c946ebe8d3555685dd7"
dependencies = [
"libm",
]
[[package]] [[package]]
name = "humantime" name = "humantime"
version = "2.1.0" version = "2.1.0"
@ -1371,6 +1362,10 @@ dependencies = [
"yggdrasil-rt", "yggdrasil-rt",
] ]
[[package]]
name = "libutil"
version = "0.1.0"
[[package]] [[package]]
name = "linux-raw-sys" name = "linux-raw-sys"
version = "0.4.15" version = "0.4.15"
@ -2654,9 +2649,9 @@ dependencies = [
"chrono", "chrono",
"clap", "clap",
"cross", "cross",
"humansize",
"init", "init",
"libterm", "libterm",
"libutil",
"log", "log",
"logsink", "logsink",
"pci-ids", "pci-ids",

View File

@ -19,8 +19,9 @@ members = [
"crypt", "crypt",
"lib/runtime", "lib/runtime",
"lib/uipc", "lib/uipc",
"lib/logsink" "lib/logsink",
, "lib/libpsf"] "lib/libpsf"
]
exclude = ["dynload-program", "test-kernel-module", "lib/ygglibc"] exclude = ["dynload-program", "test-kernel-module", "lib/ygglibc"]
[workspace.dependencies] [workspace.dependencies]
@ -57,6 +58,7 @@ yggdrasil-rt.path = "../lib/runtime"
yggdrasil-abi = { path = "../lib/abi", features = ["serde", "alloc", "bytemuck"] } yggdrasil-abi = { path = "../lib/abi", features = ["serde", "alloc", "bytemuck"] }
abi-serde = { path = "../lib/abi-serde" } abi-serde = { path = "../lib/abi-serde" }
logsink.path = "lib/logsink" logsink.path = "lib/logsink"
libutil.path = "../lib/libutil"
[workspace.lints.rust] [workspace.lints.rust]
unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] } unexpected_cfgs = { level = "allow", check-cfg = ['cfg(rust_analyzer)'] }

View File

@ -12,6 +12,7 @@ yggdrasil-abi.workspace = true
yggdrasil-rt.workspace = true yggdrasil-rt.workspace = true
cross.workspace = true cross.workspace = true
logsink.workspace = true logsink.workspace = true
libutil.workspace = true
log.workspace = true log.workspace = true
rand.workspace = true rand.workspace = true
@ -22,8 +23,6 @@ serde_json.workspace = true
sha2.workspace = true sha2.workspace = true
chrono.workspace = true chrono.workspace = true
# TODO own impl
humansize = { version = "2.1.3", features = ["impl_style"] }
pci-ids = { version = "0.2.5" } pci-ids = { version = "0.2.5" }
init = { path = "../init" } init = { path = "../init" }

View File

@ -5,6 +5,7 @@ use std::{
}; };
use clap::Parser; use clap::Parser;
use libutil::fmt::FormatSize;
use sysutils::{Input, Output}; use sysutils::{Input, Output};
#[derive(Parser)] #[derive(Parser)]
@ -67,10 +68,10 @@ fn dump_block(offset: u64, data: &[u8]) {
} }
fn print_throughput(duration: Duration, bytes_read: usize) { fn print_throughput(duration: Duration, bytes_read: usize) {
let read_total = humansize::format_size(bytes_read as u64, humansize::FormatSizeOptions::default());
let ms = duration.as_millis() as u64; let ms = duration.as_millis() as u64;
let read_per_ms = bytes_read as u64 / ms; let read_per_ms = bytes_read as u64 / ms;
let read_speed = humansize::format_size(read_per_ms * 1000, humansize::FormatSizeOptions::default()); let read_total = FormatSize::default(bytes_read as u64);
let read_speed = FormatSize::default(read_per_ms * 1000);
eprintln!("{read_speed}/s ({read_total} in {duration:?})"); eprintln!("{read_speed}/s ({read_total} in {duration:?})");
} }

View File

@ -2,7 +2,14 @@
#![feature(let_chains, decl_macro)] #![feature(let_chains, decl_macro)]
use std::{ use std::{
cmp::Ordering, ffi::OsString, fmt, fs::{read_dir, FileType, Metadata}, io, path::{Path, PathBuf}, process::ExitCode, time::SystemTime cmp::Ordering,
ffi::OsString,
fmt,
fs::{read_dir, FileType, Metadata},
io,
path::{Path, PathBuf},
process::ExitCode,
time::SystemTime,
}; };
#[cfg(unix)] #[cfg(unix)]
@ -12,7 +19,7 @@ use std::os::yggdrasil::fs::MetadataExt;
use chrono::{Datelike, Timelike}; use chrono::{Datelike, Timelike};
use clap::Parser; use clap::Parser;
use humansize::{FormatSize, BINARY}; use libutil::fmt::FormatSize;
#[derive(Parser)] #[derive(Parser)]
#[clap(disable_help_flag = true)] #[clap(disable_help_flag = true)]
@ -60,7 +67,7 @@ trait MetadataImpl {
impl DisplaySizeBit for u64 { impl DisplaySizeBit for u64 {
fn display_size_bit(self, opts: &Args, f: &mut fmt::Formatter<'_>) -> fmt::Result { fn display_size_bit(self, opts: &Args, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if opts.human_readable { if opts.human_readable {
fmt::Display::fmt(&self.format_size(BINARY), f) fmt::Display::fmt(&FormatSize::default(self), f)
} else { } else {
fmt::Display::fmt(&self, f) fmt::Display::fmt(&self, f)
} }

View File

@ -5,8 +5,8 @@ use std::{
fmt::Write fmt::Write
}; };
use humansize::FormatSize;
use libterm::{Clear, Term}; use libterm::{Clear, Term};
use libutil::fmt::FormatSize;
use yggdrasil_rt::system; use yggdrasil_rt::system;
fn get_memory_stats() -> system::SystemMemoryStats { fn get_memory_stats() -> system::SystemMemoryStats {
@ -50,12 +50,15 @@ fn main() {
let free_bytes = stats.free_pages * stats.page_size; let free_bytes = stats.free_pages * stats.page_size;
let total_usable_bytes = stats.total_usable_pages * stats.page_size; let total_usable_bytes = stats.total_usable_pages * stats.page_size;
let allocated_mem = FormatSize::default(allocated_bytes as u64);
let free_mem = FormatSize::default(free_bytes as u64);
let total_usable_mem = FormatSize::default(total_usable_bytes as u64);
write!( write!(
term, term,
"U: {} F: {} T: {} ({}%)", "U: {} F: {} T: {} ({}%)",
allocated_bytes.format_size(Default::default()), allocated_mem,
free_bytes.format_size(Default::default()), free_mem,
total_usable_bytes.format_size(Default::default()), total_usable_mem,
100 * stats.allocated_pages / stats.total_usable_pages 100 * stats.allocated_pages / stats.total_usable_pages
) )
.ok(); .ok();