blob: d798752a39364f544190a7ea6286ced8be1e6bb1 (
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
27
28
|
//! Seal invocation - Close attachment
const afs = @import("../../fs/afs/afs.zig");
const ahci = @import("../../drivers/ahci/ahci.zig");
const attachment = @import("../../utils/kata/attachment.zig");
const handler = @import("../handler.zig");
const int = @import("../../utils/types/int.zig");
const kata_limits = @import("../../common/limits/kata.zig");
const result = @import("../../utils/types/result.zig");
const sensei = @import("../../kata/sensei/sensei.zig");
var afs_instance: ?*afs.AFS(ahci.BlockDevice) = null;
pub fn set_afs_instance(fs: *afs.AFS(ahci.BlockDevice)) void {
afs_instance = fs;
}
pub fn invoke(ctx: *handler.InvocationContext) void {
const kata = sensei.get_current_kata() orelse return result.set_error(ctx);
const fd = int.u32_of(ctx.rdi);
if (fd >= kata_limits.MAX_ATTACHMENTS) return result.set_error(ctx);
if (kata.attachments[fd] == null) return result.set_error(ctx);
attachment.seal(kata, fd, afs_instance);
result.set_ok(ctx);
}
|