Skip to documentation
SLOP

tiny.sys.process.inspect

Reference tiny.sys process inspect

Defined in process.

API (25)

Actions

Public operations.

Types and contracts

Public types and contracts.

Values and defaults

Public values and defaults.

No direct callersNo direct callsprocessinspect
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/sys/src/process/inspect/types.zig:15

zig
pub const DarwinTime = struct {    seconds: u64,    microseconds: u64,};

Source: lib/sys/src/process/inspect/types.zig:3

zig
pub const Error = error{    UnsupportedPlatform,    ProcessNotFound,    PermissionDenied,    BufferTooSmall,    InvalidData,    QueryFailed,};

Source: lib/sys/src/process/inspect/types.zig:64

zig
pub const Info = struct {    parent_pid: ProcessId,    start: Start,    alive: bool,    resident_bytes: ?u64,};

Source: lib/sys/src/process/inspect/types.zig:20

zig
pub const Start = union(enum) {    linux_ticks: u64,    darwin_time: DarwinTime,    pub fn token(self: Start, storage: []u8) Error![]const u8 {        return switch (self) {            .linux_ticks => |ticks| std.fmt.bufPrint(                storage,                "proc:{d}",                .{ticks},            ) catch error.BufferTooSmall,            .darwin_time => |time| std.fmt.bufPrint(                storage,                "darwin:{d}:{d}",                .{ time.seconds, time.microseconds },            ) catch error.BufferTooSmall,        };    }};

Source: lib/sys/src/process/inspect/census.zig:22

zig
/// Reports whether any member of `group_id`, its leader included, still runs./// A member that exited counts as gone while its parent or an adopting/// subreaper still owns the zombie entry, because an exited process holds no/// descriptor. Members that vanish during the scan count as gone. A process/// whose group or state cannot be read returns that error, so membership that/// cannot be established never reads as drained. The scan visits at most/// `storage.len` processes and refuses a larger table with `BufferTooSmall`./// On Linux a procfs that shows another pid namespace refuses with/// `QueryFailed`. Callers treat every error as possibly running.pub fn groupRunning(    group_id: types.ProcessId,    storage: []types.ProcessId,) types.Error!bool {    if (group_id <= 1) return error.ProcessNotFound;    if (comptime builtin.os.tag == .linux) {        if (!try procfsSharesPidView()) return error.QueryFailed;    }    const processes = try backend.list(storage);    for (processes) |pid| {        const member_group = backend.group(pid) catch |err| switch (err) {            error.ProcessNotFound => continue,            else => return err,        };        if (member_group != group_id) continue;        const member = backend.info(pid) catch |err| switch (err) {            error.ProcessNotFound => continue,            else => return err,        };        if (member.alive) return true;    }    return false;}
Called byCallsNo direct callersprivate sourcelib.sys.src.process.inspect.censusprocfsSharesPidViewprocess.inspectgroupRunning
Static calls · unresolved targets: 1 · external targets: 2.

Source: lib/sys/src/process/inspect/types.zig:13

zig
pub const Descriptor = i32;

Source: lib/sys/src/process/inspect/types.zig:12

zig
pub const ProcessId = i32;

Source: lib/sys/src/process/inspect/types.zig:40

zig
pub fn parseStartToken(value: []const u8) ?Start {    const linux_prefix = "proc:";    if (std.mem.startsWith(u8, value, linux_prefix)) {        const ticks = value[linux_prefix.len..];        if (ticks.len == 0) return null;        return .{            .linux_ticks = std.fmt.parseUnsigned(u64, ticks, 10) catch return null,        };    }    const darwin_prefix = "darwin:";    if (!std.mem.startsWith(u8, value, darwin_prefix)) return null;    const time = value[darwin_prefix.len..];    const separator = std.mem.indexOfScalar(u8, time, ':') orelse return null;    const seconds = time[0..separator];    const microseconds = time[separator + 1 ..];    if (seconds.len == 0 or microseconds.len == 0 or        std.mem.indexOfScalar(u8, microseconds, ':') != null) return null;    return .{ .darwin_time = .{        .seconds = std.fmt.parseUnsigned(u64, seconds, 10) catch return null,        .microseconds = std.fmt.parseUnsigned(u64, microseconds, 10) catch return null,    } };}
Called byCallsNo direct callstest sourcelib.sys.src.process.inspect.typestest: process start tokens parse thei...process.inspectparseStartToken
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/sys/src/process/inspect/root.zig

zig
const builtin = @import("builtin");const sys = @import("../../root.zig");const types = @import("types.zig");const backend = switch (builtin.os.tag) {    .linux => @import("linux.zig"),    .macos => @import("darwin.zig"),    else => @import("unsupported.zig"),};pub const required_capabilities = sys.capabilities.host(    &.{ .filesystem, .libc_interop, .process },);pub const Error = types.Error;pub const ProcessId = types.ProcessId;pub const Descriptor = types.Descriptor;pub const DarwinTime = types.DarwinTime;pub const Start = types.Start;pub const Info = types.Info;pub const parseStartToken = types.parseStartToken;pub const list = backend.list;pub const children = backend.children;pub const info = backend.info;pub const group = backend.group;pub const exists = backend.exists;pub const name = backend.name;pub const fds = backend.fds;pub const fdPath = backend.fdPath;pub const fdFlock = backend.fdFlock;pub const cwd = backend.cwd;pub const command = backend.command;pub const environment = backend.environment;pub const hostname = backend.hostname;pub const pidNamespace = backend.pidNamespace;pub const cgroup = backend.cgroup;pub const groupRunning = @import("census.zig").groupRunning;

Source: lib/sys/src/process/root.zig:5

zig
pub const inspect = @import("inspect/root.zig");

Audit

Definitions26
Public names26
Members14
Version26.7.0
Revisiondaab053ee433