aboutsummaryrefslogtreecommitdiff
path: root/mirai.old/invocations/os/diskinfo.zig
blob: 62c73dc1c16e6fc5e02fe2f2704d02cb64392556 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//! DISKINFO invocation - Get disk usage information

const afs = @import("../../fs/afs/afs.zig");
const ahci = @import("../../drivers/ahci/ahci.zig");
const handler = @import("../handler.zig");
const result = @import("../../utils/types/result.zig");

var fs_instance: ?*afs.AFS(ahci.BlockDevice) = null;

pub fn set_afs_instance(fs: *afs.AFS(ahci.BlockDevice)) void {
    fs_instance = fs;
}

pub fn invoke(ctx: *handler.InvocationContext) void {
    const total_ptr: *u64 = @ptrFromInt(ctx.rdi);
    const used_ptr: *u64 = @ptrFromInt(ctx.rsi);

    if (fs_instance) |fs| {
        const info = fs.get_disk_info();
        total_ptr.* = info.total_bytes;
        used_ptr.* = info.used_bytes;
        result.set_ok(ctx);
    } else {
        result.set_error(ctx);
    }
}