pub enum GlobalRequest {
Show 168 variants
WithForwardedCount(u64, Box<GlobalRequest>),
RequestResources(Resources, DetPid),
ParkedRequest(Resources, DetPid, ControlCapability),
ResumeParkedRequest {
ticket: ResumeTicket,
current_site: CallbackSignalSite,
},
FinishParkedObservation {
wait: ContinuationId,
lease: ParkedObservationLease,
site: CallbackSignalSite,
finish: ObservationFinish,
},
ParkedProtocolFailure(ProtocolFailure),
SignalDequeued {
detpid: DetPid,
identity: SignalTaskIdentity,
dequeue: SignalDequeue,
},
ReleaseResources(Resources),
ReleaseAllResources,
ReportUnsupportedSyscall(String),
AnnounceSignalHandlerNotInstalled(i32),
PolicyRefusal(String),
PrepareExec(DetPid, MmId, Box<ExecFdState>),
CancelExec(DetPid),
ReconnectExec {
former: DetTid,
process: DetPid,
},
ResumeExec(DetPid),
RetireExec {
thread: ThreadDeregistration,
signaled: bool,
},
MarkPastFirstExecve(DetPid, Option<SignalTaskIdentity>, Option<ExecRecord>, Option<(u64, u64)>),
CreateChildThread(DetTid, DetPid, usize, Option<CloneFlags>, c_int, Option<(i32, i32)>, Option<Priority>),
CreateVforkChildThread(DetTid, DetPid, DetTid, usize, CloneFlags, c_int, Option<Priority>),
StartNewThread(DetTid, DetPid, Option<(i32, i32)>, Option<SignalTaskIdentity>),
DeregisterThread(ThreadDeregistration),
SetChildTidAddress(usize),
SetSavedGuestSigmask(Option<u64>),
PublishedGuestSigmask(DetTid),
SetSigtimedwaitSet(Option<u64>),
OwnProcessSignalInputs,
ProcessSignalReceiver(DetPid, DetTid, i32),
ProcessSignalSent(DetPid),
OwnProcessSignalChoice(DetTid, i32),
RecordGuestMarkerSignal,
FutexAction(DetTid, FutexAction, FutexID, i32, u32, bool),
DeterminizeInode(RawInode, ObservedMtime, InodeSighting, Option<ProcfsName>),
DeterminizeMappingInodes(Vec<RawInode>),
DeterminizeDevice(u64),
DeterminizeMountId(u64, Option<Vec<u64>>),
ResolveMountinfoIds(Vec<u64>, Vec<u64>),
RetireInode(RawInode),
ForgetRetiredInode(RawInode, Option<ProcfsName>),
DirectorySnapshotMark,
ReadyChannel(ChannelId, Wants),
HandOffTurn,
CommitFatalDelivery(bool),
TouchFile(RawInode),
SetFileMtime(RawInode, LogicalTime),
GlobalTimeLowerBound,
TraceSchedEvent(SchedEvent, DetPid, bool, Option<Box<AccessPayload>>),
RegisterAlarm(DetPid, DetTid, LogicalTime, LogicalTime, SigWrapper),
RegisterPosixTimer(DetPid, DetTid, i32, Option<LogicalTime>, LogicalTime, PosixTimerNotification),
AlarmRemaining(DetPid),
ReconcileAlarm(DetPid),
NoteGuestSigalrm(GuestSigalrmTarget),
NoteSigalrmDisposition,
ReadyChildWait(DetPid, ChildWaitSpec),
ConsumeChildWait(DetPid, DetPid),
ProcessGroup(DetPid),
SetProcessGroup(DetPid, DetPid),
CreateSession(DetPid),
ResolveKillTargets(DetPid),
NamesHermitTask(DetTid, Option<i32>, i32),
NotifySignalPending(DetTid, SigWrapper, Option<DetPid>, SignalScope),
HoldTurnForGroupExit(DetTid),
NotifyUnresolvedSigkill(Option<DetPid>),
ThreadIsLive(DetTid),
PendingRealTimeExpirations(DetPid),
DiscardPendingRealTimeExpirations(DetPid, u64),
RegisterSignalfd(DetPid, u64),
RecordHandlerRestoreMask(DetPid, u64),
ExactChildWaitState(DetPid, DetPid),
UnrecoverableShutdown,
RequestPort(OpenFileId),
AddUsedPort(u16, OpenFileId),
ReleasePort(OpenFileId),
RobustListWakes(Vec<(DetTid, FutexID)>),
Network(NetworkRequest),
RecordHostInput {
path: String,
syscall: u64,
identity: HostFileIdentity,
source: Option<String>,
regular: bool,
exec: bool,
kernel_object: bool,
},
RecordHostMutation {
path: String,
},
RecordHostTimedSignals(DetTid, HostTimedSignalScope, u64),
HostTimedSignals(DetTid),
SharedOpenFile(OpenFileControl),
Sigalrm(SigalrmControl),
ChildExitSigchld(ChildExitSigchldControl),
RecordDeterminismLoss(String),
SetChildSubreaper(DetPid, bool),
RegisteredProcessOf(DetTid),
SetSigchldDisposition(DetPid, bool, bool),
SignalTargetProcess(DetPid),
ReserveSigkill(DetTid, DetTid, u32),
CommitSigkill(u64, bool),
ReserveSigkillGroup(DetTid, DetPid, u32),
PosixTimerThread(DetPid, i32),
ForgetThreadTimerCopies(DetPid, i32),
GuestPid(DetTid, i32),
LocalPid(DetTid, DetTid),
ExecTimerFlush(DetPid),
RetireExitedLeader,
DiscardedSignal(DiscardedSignalControl),
DescriptorsReplaced(FilesId, u32, u32),
ThreadIdRefused(DetTid),
ProcfsListing(Option<DetPid>),
ParentDeathSignal(Option<i32>),
PrepareNativeExec(PrepareNativeExec),
SealNativeExecStats {
ticket: ExecTicket,
runtime_digest: [u8; 32],
runtime: Vec<u8>,
},
IssueNativeExec {
ticket: ExecTicket,
state_digest: [u8; 32],
},
CancelNativeExec {
ticket: ExecTicket,
},
CompleteNativeExec {
ticket: ExecTicket,
},
NamesARetiredExitedLeader(DetTid),
ProcfsIds(bool, Vec<i32>),
GroupOrSession(DetPid, bool),
SetsidDecision(DetPid),
SetpgidDecision(DetPid, i32, i32),
ProcessImage(DetPid),
ProcfsTask(DetTid, Option<DetTid>),
RenderedFileState(u64, RenderedFileChange),
PublishSignalDispositions(u64, Option<CopiedDispositions>),
GuestLog(Option<GuestLogRecord>, u64),
PublishSignalMask(Option<u64>),
RecordProcessAuxv(Vec<u8>, Option<CmdlineArea>),
ProcessAuxv(DetPid),
AuxvFromKernel(AuxvFromKernel, Option<CmdlineArea>),
AnnounceRefusedSignalControls(u64, bool),
CheckBrkMappings(BrkMappingCheck, ControllerCaptureFact),
PublishRuntimePrivateMemory(RuntimePrivateMemory),
MarkChangedRoot,
RootChanged(DetPid),
DescriptionLocks(OpenFileId, Result<Vec<HeldLock>, String>, u32),
TableReleased(OpenFileId, u32),
GuestLockRows(Vec<LockRowFacts>),
TableExec(Vec<(OpenFileId, u32)>),
AliasedInode(Option<String>),
HostTimedAndPrivateSigchld(DetTid),
LockLedgerRefused(String),
MappingCapture(Request),
StoppingRefusal(String),
ProcessCmdline(DetPid),
KernelRunTarget(DetTid),
CallbackCheckpointMismatch {
checkpoint: Checkpoint,
hard: bool,
actual: Origin,
},
TaskStatFacts(DetTid, Option<DetTid>),
SetTaskComm(DetTid, TaskComm),
RecordExternalParent(DetPid, i32),
SetRssLimit(DetPid, u64),
PublishTemporaryMask(TemporaryMaskControl),
InPidNamespaceInit(DetTid),
VirtualInotifyCookies(Vec<u32>),
RegisterPlaceholder(PlaceholderDirectory, OpenFileId),
Placeholder(u64),
PlaceholderFlock(PlaceholderFlock),
PlaceholderWriteHint(PlaceholderLockKey, Option<u64>),
PlaceholderCopies(PlaceholderCopies),
CpuAffinity(DetTid),
SetCpuAffinity(DetTid, CpuSet),
SigkillDyingThreads(u64),
RecordSigkillRobustLists(u64, Vec<(DetTid, MmId, RobustListSnapshot)>),
TakeSigkillRobustList,
NextGuestId,
GaveHostId,
ReplayDeparture {
previous: LogicalTime,
observed: LogicalTime,
slice: u64,
},
DescriptionLocksTaken(OpenFileId, Vec<HeldLock>, Vec<HeldLock>, u32, LedgerIdentity),
LockOwners(OpenFileId, Vec<HeldLock>),
LedgerLockRows,
SecondIdentityLocks(OpenFileId, Vec<HeldLock>, u32),
HoldTable(HeldTable),
RecordLocksHeldAsOfd(Option<Vec<String>>),
HostDiskstats,
UserNamespaceRelation(DetTid, DetTid),
UserNamespaceOwnerMayDiffer(DetTid),
ProcfsSequence(OpenFileId),
StoreProcfsSequence(OpenFileId, ProcfsSequence),
}Expand description
Existing full request wire type; native controls preserve its exact tags.
This is public only so it can be used in the GlobalTool trait.
It should NOT be used by any client outside of this file.
Variants§
WithForwardedCount(u64, Box<GlobalRequest>)
request, sent with the number of records this guest thread produced
for forwarding since its previous counted request, so the coordinator
can check they all arrived (detlog::check_forwarded_count). Sent only
by a thread that has produced some (counted_request).
RequestResources(Resources, DetPid)
Lock the resources
Also contains the DetPid of the process containing the thread requesting resources.
ParkedRequest(Resources, DetPid, ControlCapability)
Request resources with the actual backend parked-callback capability.
ResumeParkedRequest
Resume a previously parked request at its actual current callback site.
Fields
ticket: ResumeTicketScheduler-issued one-use continuation ticket.
current_site: CallbackSignalSiteActual callback site supplied by the backend on resumption.
FinishParkedObservation
Finish the observation belonging to one scheduler-owned parked wait.
Fields
wait: ContinuationIdActual pending wait identity.
lease: ParkedObservationLeaseBackend observation lease belonging to that wait.
site: CallbackSignalSiteActual callback site at the observation boundary.
finish: ObservationFinishResult of the observation, including an explicit failure.
ParkedProtocolFailure(ProtocolFailure)
Report a terminal violation of the parked continuation protocol.
SignalDequeued
Report an actual signal removed from this process’s pending set.
Fields
identity: SignalTaskIdentityBackend identity of the actual signal task.
dequeue: SignalDequeueExact signal dequeue observation.
ReleaseResources(Resources)
Release the locks
ReleaseAllResources
For convenience, release all the resources held by the current TID.
ReportUnsupportedSyscall(String)
Add a syscall to the run-wide unsupported-use summary.
AnnounceSignalHandlerNotInstalled(i32)
A guest asked for a disposition of this signal that Detcore answered with success but did not install. The coordinator announces it once per signal per run.
PolicyRefusal(String)
The fail-closed policy is ending the run, for this reason. Sent just
before the Tool image exits with HERMIT_POLICY_REFUSAL_EXIT, which on
an in-guest backend ends only the guest process: the launcher reads the
reason here to report the refusal (GlobalState::policy_refusal).
PrepareExec(DetPid, MmId, Box<ExecFdState>)
Save the caller, address-space identity, and logically blocking descriptors before exec.
A successful backend may reload the Tool or preserve and transfer its thread state.
Boxed, as is GlobalResponse::MarkPastFirstExecve’s: inline, the
largest payload sizes every RPC future, and each of the hundreds of
handler futures handle_syscall_event awaits holds some, which in a
debug build overflowed the 2 MiB test thread that runs ptrace record
through the library (record_replay’s public_record_* tests).
CancelExec(DetPid)
Clear the saved transition after an exec attempt returns with an error.
ReconnectExec
Authenticate the preserved exec caller taking over its process leader’s TID.
Fields
ResumeExec(DetPid)
Acquire the replacement’s first turn without newborn state initialization.
RetireExec
Consume a transferred owner if genuine cancellation interrupts local
rebinding. The Tool copies signaled from the backend’s exit status;
ordinary exit requires a separately recorded backend failure.
Fields
thread: ThreadDeregistrationFinal transferred thread state and accounting.
MarkPastFirstExecve(DetPid, Option<SignalTaskIdentity>, Option<ExecRecord>, Option<(u64, u64)>)
Complete a successful image transition, including the initial image, and
delete the process’s POSIX timer deadlines before the new image runs.
The last field is the device and inode of the file the kernel’s
/proc/<pid>/exe link names for the new image, where the tool can
read it, which the image’s record is checked against
(crate::exec_record). Before it, in a run that declares a launcher,
the record the new image resolved from the path its exec was given,
for an exec Detcore did not prepare.
CreateChildThread(DetTid, DetPid, usize, Option<CloneFlags>, c_int, Option<(i32, i32)>, Option<Priority>)
The parent is adding a child-thread to the round-robin pool. Contains the dettid of the new child and it’s starting scheduler priority IF it is available to the caller. The only scenario where the Priority will be missing is when we’re replaying preemptions. In that case it is the global state that holds the information regarding the new thread’s initial priority.
CreateVforkChildThread(DetTid, DetPid, DetTid, usize, CloneFlags, c_int, Option<Priority>)
A vfork child registering itself while its parent is blocked inside the kernel. Contains the (real) parent dettid and detpid, the child dettid, the child TID address, the clone flags, and the starting priority (absent only when replaying preemptions).
StartNewThread(DetTid, DetPid, Option<(i32, i32)>, Option<SignalTaskIdentity>)
New thread is alive and waiting to run its first instruction. Contains the dettid and detpid of the new child.
DeregisterThread(ThreadDeregistration)
Remove a thread from scheduler data structures, guaranteeing that it will consume no further turns. Carries its final timeslice distribution and any chaos-epoch transitions not yet flushed by a priority-change commit.
SetChildTidAddress(usize)
Replace the address cleared and woken when the calling thread exits. A zero address disables the exit-time store and wake.
SetSavedGuestSigmask(Option<u64>)
Record (Some) or clear (None) the calling thread’s own signal mask
while Detcore holds it under a private blocking mask, so the scheduler’s
child-exit classification reads the guest’s mask, not Detcore’s.
PublishedGuestSigmask(DetTid)
The guest’s own signal mask that a thread published while Detcore
holds it under a private blocking mask, if any
(Scheduler::published_guest_sigmask), for its /proc status.
SetSigtimedwaitSet(Option<u64>)
Record (Some) or clear (None) the set the calling thread waits for
while it polls rt_sigtimedwait.
OwnProcessSignalInputs
The inputs to a process-directed signal the calling thread sends to its
own process (Scheduler::own_process_signal_inputs).
ProcessSignalReceiver(DetPid, DetTid, i32)
The thread of a process that takes the process-directed signal the
calling thread sends naming a task of it
(Scheduler::process_signal_receiver).
ProcessSignalSent(DetPid)
The calling thread’s forwarded process-directed send to this process,
whose receiver the scheduler chose, succeeded
(Scheduler::process_signal_sent).
OwnProcessSignalChoice(DetTid, i32)
The calling thread is about to forward a send of this signal to its own
process, naming this task, that Linux gives to it
(Scheduler::own_process_signal_choice).
RecordGuestMarkerSignal
The calling thread sends SIGSTKFLT (Scheduler::record_guest_marker_signal).
FutexAction(DetTid, FutexAction, FutexID, i32, u32, bool)
Notify scheduler before/after futex action. The final arguments are the initial memory word, the mask, and whether the caller may have passed descriptors outside the guest.
DeterminizeInode(RawInode, ObservedMtime, InodeSighting, Option<ProcfsName>)
Translate nondeterministic to deterministic inode, and report what the
caller observed of the host mtime (see ObservedMtime), how it
reached the file (see InodeSighting), and, for a procfs entry, its
name (see procfs_inode::ProcfsName and InodePool::procfs_key).
DeterminizeMappingInodes(Vec<RawInode>)
Translate the inode of every file-backed line of one /proc/*/maps
read, in line order, repeats included: one numbering request per line.
DeterminizeDevice(u64)
Translate a nondeterministic (host-assigned) device number to a deterministic one.
DeterminizeMountId(u64, Option<Vec<u64>>)
Translate a host-assigned fdinfo mount ID to a run-local identity. The fallback order is populated only by low-level callers without captured namespace provenance.
ResolveMountinfoIds(Vec<u64>, Vec<u64>)
Seed or validate the snapshot’s canonical mountinfo identity order (first field), then return the run-local identity of each entry of the observation order (second field: the same raw IDs, rows then parents), numbering unseen entries in that observation order.
RetireInode(RawInode)
The file behind this host inode lost its last name (see
InodePool::retire).
ForgetRetiredInode(RawInode, Option<ProcfsName>)
An open found this host inode linked or freshly created (see
InodePool::forget_retired); for a procfs entry, also its name (see
procfs_inode::ProcfsName and InodePool::procfs_key).
DirectorySnapshotMark
The inode pool’s state, for a directory snapshot (see SnapshotMark).
ReadyChannel(ChannelId, Wants)
--pipe-wake-latency: an action of the calling thread readied the
pollers of a channel that want this (Scheduler::ready_channel).
HandOffTurn
--pipe-wake-latency: the calling thread’s hand-off is due
(Scheduler::hand_off_turn).
CommitFatalDelivery(bool)
The calling thread is delivering a signal whose default action ends
its process (Scheduler::commit_fatal_delivery), and whether the
kernel carries that action out when it resumes the thread, so the
process’s other threads may be retired now.
TouchFile(RawInode)
Bump mtime
SetFileMtime(RawInode, LogicalTime)
Set mtime to a guest-requested time (utimensat and friends).
GlobalTimeLowerBound
Retrieve global time.
TraceSchedEvent(SchedEvent, DetPid, bool, Option<Box<AccessPayload>>)
Record scheduling event in a total order. The last field is what the
event adds to the access trace (--record-access-trace-to); None
without one.
RegisterAlarm(DetPid, DetTid, LogicalTime, LogicalTime, SigWrapper)
Basically performs an alarm syscall, takes a logical duration.
RegisterPosixTimer(DetPid, DetTid, i32, Option<LogicalTime>, LogicalTime, PosixTimerNotification)
Register, re-arm, or disarm one POSIX timer, or delete it.
AlarmRemaining(DetPid)
Return the logical time remaining on a process’s one-shot alarm.
ReconcileAlarm(DetPid)
Reconcile the process’s Inactive ITIMER_REAL after a call that may
have dequeued its SIGALRM (Scheduler::reconcile_alarm).
NoteGuestSigalrm(GuestSigalrmTarget)
A guest’s committed SIGALRM send (rule 4, Scheduler::note_guest_sigalrm).
NoteSigalrmDisposition
The caller changed SIGALRM’s disposition (rule 5).
ReadyChildWait(DetPid, ChildWaitSpec)
Deterministically select a logically exited matching child.
ConsumeChildWait(DetPid, DetPid)
Retire a consumed terminal child wait status.
ProcessGroup(DetPid)
Query scheduler-owned process-group membership.
SetProcessGroup(DetPid, DetPid)
Apply a successful setpgid transition.
CreateSession(DetPid)
Apply a successful setsid transition.
ResolveKillTargets(DetPid)
Query live threads before translating process-directed signal delivery,
and the process’s exit state (Scheduler::exited_process_is_zombie).
NamesHermitTask(DetTid, Option<i32>, i32)
Whether a pid or tid that a guest task named (with the thread group it
named, if any) is one of Hermit’s own tasks; see hermit_task_named.
NotifySignalPending(DetTid, SigWrapper, Option<DetPid>, SignalScope)
A successful kill(2) queued a physical signal for this sole target, sent with the given scope.
HoldTurnForGroupExit(DetTid)
The sender, holding the serial grant in its signal-delivery turn,
decided that a default action ends its thread group: its next request,
the group Exit, is granted before any other thread runs
(Scheduler::hold_turn_for_group_exit).
NotifyUnresolvedSigkill(Option<DetPid>)
A successful SIGKILL whose victims the scheduler is not told one by
one: a process-group kill (Some(group)), or a pidfd whose process
Detcore did not record (None).
ThreadIsLive(DetTid)
Liveness of one tid, leader or not; see thread_is_live.
PendingRealTimeExpirations(DetPid)
The pending real-time timer expirations of a process; see
pending_real_time_expirations.
DiscardPendingRealTimeExpirations(DetPid, u64)
Discard pending real-time timer expirations of a process (a kernel
sigset) whose disposition became SIG_IGN.
RegisterSignalfd(DetPid, u64)
A process created a signalfd for these signals (a kernel sigset).
RecordHandlerRestoreMask(DetPid, u64)
A handler’s return in a process restores a mask leaving these real-time signals (a kernel sigset) unblocked.
ExactChildWaitState(DetPid, DetPid)
Scheduler-owned lifecycle state for a direct child process.
UnrecoverableShutdown
The container is shutting down. Exit the scheduler “thread”.
RequestPort(OpenFileId)
Request a port for an open file description.
AddUsedPort(u16, OpenFileId)
Add a port to the used-port list for an open file description.
ReleasePort(OpenFileId)
Release the port when the last alias of its open file description closes.
RobustListWakes(Vec<(DetTid, FutexID)>)
Deliver robust-futex wakes collected before exit after the backend has confirmed that Linux’s physical task cleanup completed.
Network(NetworkRequest)
One external network record or replay operation.
RecordHostInput
Record that the sending thread, in its syscall number syscall, opened
path and found the host file identity (see
detcore_model::host_input). An observation for hermit run --verify
only: answered before any clock or scheduler accounting. Appended at
the end, so that adding it left every earlier variant’s encoded tag
unchanged.
Fields
identity: HostFileIdentityCaptured actual host file identity.
source: Option<String>Where the tool found the file at the open (the kernel’s path for
the guest’s descriptor, or for an exec’s image), for the run’s
end to read its content (crate::host_inputs::content_at_end):
present for a regular file or a directory the tool could name.
RecordHostMutation
Record that the sending thread rebound path in the guest’s file
namespace (see detcore_model::host_input::HostMutationRecord). An
observation for hermit run --verify only, answered like
Self::RecordHostInput. Appended at the end, so that adding it left
every earlier variant’s encoded tag unchanged.
RecordHostTimedSignals(DetTid, HostTimedSignalScope, u64)
This thread armed, in its turn, a host-timed source of these signals;
see record_host_timed_signals. Appended after RecordHostMutation,
so that adding it left every earlier variant’s encoded tag unchanged.
HostTimedSignals(DetTid)
The signals no gated wait of this thread ends for; see
host_timed_signals. Appended after RecordHostTimedSignals, for the
same reason.
A control message about a shared open file description, answered
before any clock or scheduler accounting (see
crate::shared_open_files). Appended after HostTimedSignals, for the
same reason.
Sigalrm(SigalrmControl)
A SIGALRM ledger control message, answered before any clock or
scheduler accounting (see sigalrm_refuses). Appended after
SharedOpenFile, for the same reason.
ChildExitSigchld(ChildExitSigchldControl)
A child-exit SIGCHLD control message
(scheduler::child_exit_sigchld).
RecordDeterminismLoss(String)
A determinism loss to record for the run (see
crate::detlog::write_loss_notice), from a guest-side handler, which
may run in a process whose own record verification never reads.
Answered before any clock or scheduler accounting. Appended after
ChildExitSigchld, for the same reason.
SetChildSubreaper(DetPid, bool)
Mirror a successful prctl(PR_SET_CHILD_SUBREAPER) by this process,
in the caller’s turn (set_child_subreaper). Appended after
RecordDeterminismLoss, for the same reason.
RegisteredProcessOf(DetTid)
The process Detcore registered DetTid in: its own thread group’s
leader in the thread tree. Unlike the backend’s Guest::pid, it names
a raw clone child with a non-SIGCHLD exit signal as its own process.
Appended after SetChildSubreaper, for the same reason.
SetSigchldDisposition(DetPid, bool, bool)
Mirror a successful rt_sigaction(SIGCHLD, ...) by this process:
whether the action is SIG_IGN, and whether it has SA_NOCLDWAIT
(set_sigchld_disposition). Appended after RegisteredProcessOf, for
the same reason.
SignalTargetProcess(DetPid)
The process a signal naming this id goes to
(Scheduler::signal_target_process). Appended after
SetSigchldDisposition, for the same reason.
ReserveSigkill(DetTid, DetTid, u32)
Reserve the victims of a SIGKILL the sender is about to send to the
process of the given thread, before the physical send
(scheduler::sigkill_retirement). Appended after
RegisteredProcessOf, for the same reason.
CommitSigkill(u64, bool)
Commit (true: the send succeeded) or unwind a SIGKILL reservation.
Appended after ReserveSigkill, for the same reason.
ReserveSigkillGroup(DetTid, DetPid, u32)
Reserve the victims of a kill(-pgid, SIGKILL): every live process in
the recorded process group. Appended after CommitSigkill, for the
same reason.
PosixTimerThread(DetPid, i32)
The thread a SIGEV_THREAD_ID timer of this process names by this id
(Scheduler::posix_timer_thread). Appended after
ReserveSigkillGroup, for the same reason.
ForgetThreadTimerCopies(DetPid, i32)
A disposition change in this process flushed this signal from every
thread (Scheduler::forget_thread_timer_copies). Appended after
PosixTimerThread, for the same reason.
GuestPid(DetTid, i32)
What a positive pid the given nested thread names, in its own PID
namespace, names (PidNamespaces::resolve_for). Appended after
ReserveSigkillGroup, for the same reason.
LocalPid(DetTid, DetTid)
The pid the given nested thread sees for a task
(PidNamespaces::localize_for). Appended after GuestPid, for the
same reason.
ExecTimerFlush(DetPid)
The POSIX timer copies a successful exec of this process flushes
(Scheduler::take_exec_timer_flush), asked by its surviving thread.
Appended after LocalPid, for the same reason.
RetireExitedLeader
The calling thread-group leader is about to complete its own exit
while its group lives on (Scheduler::retire_exited_leader).
Appended after ExecTimerFlush, for the same reason.
DiscardedSignal(DiscardedSignalControl)
A discarded-at-send record message (scheduler::discarded_at_send),
answered before any clock or scheduler accounting. Appended after
RetireExitedLeader, for the same reason.
DescriptorsReplaced(FilesId, u32, u32)
A close, close_range, dup2 or dup3 released or replaced the
descriptors first..=last of the caller’s table, named by its identity
(Scheduler::note_descriptors_replaced). Appended after
DiscardedSignal, for the same reason.
ThreadIdRefused(DetTid)
Whether a task of this run had this id and it is not a zombie’s pid
(thread_id_refused). Appended after DescriptorsReplaced, for the
same reason.
ProcfsListing(Option<DetPid>)
The processes /proc lists, and the threads the task directory of
the given process lists (Scheduler::procfs_listing). Appended after
ThreadIdRefused, for the same reason.
ParentDeathSignal(Option<i32>)
Arm (Some, 0 disarms) or read (None) the sender’s parent-death
signal that Detcore sends itself (parent_death_signal). Appended
after ProcfsListing, for the same reason.
PrepareNativeExec(PrepareNativeExec)
Neutral controls appended without changing any existing wire tag.
SealNativeExecStats
Seal the exact versioned runtime bytes before one-use descriptor provision.
Fields
ticket: ExecTicketRetained prepared transaction ticket.
IssueNativeExec
Last old-image control after the sealed empty forwarding cut.
Fields
ticket: ExecTicketSuccessfully provisioned retained transaction ticket.
CancelNativeExec
Invalidate a pre-redemption ticket; ordinary CancelExec still follows.
Fields
ticket: ExecTicketPrepared or Issued ticket whose physical exec did not succeed.
CompleteNativeExec
Acknowledge the real new-mm lifecycle after MarkPastFirstExecve.
Fields
ticket: ExecTicketConsumed successor ticket after real lifecycle and frontend checks.
NamesARetiredExitedLeader(DetTid)
Whether a tid names a thread-group leader retired at its own exit
while its group lives on (names_a_retired_exited_leader). Appended
last, for the same reason as the controls above.
ProcfsIds(bool, Vec<i32>)
The kernel’s numbers for guest process or thread numbers (true), or
the guest’s for kernel numbers (false), as /proc spells them
(Scheduler::procfs_ids). Appended last, for the same reason.
GroupOrSession(DetPid, bool)
The process group (false) or session (true) of the task with an id,
as getpgid and getsid answer it (Scheduler::group_or_session_of).
Appended last, for the same reason.
SetsidDecision(DetPid)
Linux’s answer to setsid() by a process
(Scheduler::setsid_decision), deciding nothing yet. Appended last.
SetpgidDecision(DetPid, i32, i32)
Linux’s answer to setpgid(pid, pgid) by a process
(Scheduler::setpgid_decision), deciding nothing yet. Appended last.
ProcessImage(DetPid)
The image a guest process executes, as Detcore recorded it at the
process’s exec (crate::exec_record), for its /proc/<pid>/exe
link. Appended last.
ProcfsTask(DetTid, Option<DetTid>)
Whether the task a per-process /proc file names exists, whether it
has exited unreaped, and the incarnation of its numbers
(Scheduler::procfs_task). Appended last.
RenderedFileState(u64, RenderedFileChange)
Change or read the state Detcore keeps on a rendered per-process
/proc file’s inode (InodePool::rendered_file_state). Appended last.
PublishSignalDispositions(u64, Option<CopiedDispositions>)
The sender’s process’s signal dispositions as Detcore’s copy holds
them, or None to withdraw them, with the publication’s generation
(Scheduler::publish_signal_dispositions). Answered before any clock
or scheduler accounting. Appended last.
GuestLog(Option<GuestLogRecord>, u64)
A Detcore warning or error from inside the guest, which the coordinator
emits at the run’s own log level (crate::guest_log), or none, and how
many of the sender’s process could not be sent before it. Answered
before forwarded records are drained and before any clock or scheduler
accounting. Appended last.
PublishSignalMask(Option<u64>)
The sender’s mask as Detcore’s copy holds it, or None to withdraw
it (Scheduler::publish_signal_mask). Answered before any clock or
scheduler accounting. Appended last.
RecordProcessAuxv(Vec<u8>, Option<CmdlineArea>)
The auxiliary vector the sender’s process’s new image found on its
initial stack (ProcessAuxvTable::record), and the image’s argument
and environment areas there, if Detcore found them
(ProcessAuxvTable::record_cmdline). Appended last.
ProcessAuxv(DetPid)
A process’s image’s auxiliary vector (ProcessAuxvTable::current), for
/proc/<pid>/auxv. Appended last.
AuxvFromKernel(AuxvFromKernel, Option<CmdlineArea>)
The sender’s process’s new image’s /proc/<pid>/auxv is left to the
kernel beneath (ProcessAuxvTable::forget), for the reason given.
Answers whether this is the run’s first such image for that reason,
which the sender warns of. Also the image’s argument and environment
areas on its initial stack, if Detcore found them
(ProcessAuxvTable::record_cmdline). Appended last.
AnnounceRefusedSignalControls(u64, bool)
The signals whose new action an in-guest runtime refused, bit n - 1
for signal n, and whether it refused an alternate signal stack
(crate::refused_signal_controls). Answered before the forwarded-record
drain and any clock or scheduler accounting. Appended last.
CheckBrkMappings(BrkMappingCheck, ControllerCaptureFact)
A fixed reply from an external controller while the sender retains its serial grant. The runtime fact and the scheduler jointly establish that no guest can observe the temporary procfs descriptor. Appended last.
PublishRuntimePrivateMemory(RuntimePrivateMemory)
Current image’s native ownership facts, authenticated by the RPC MmId. Answered without granting another task or advancing logical time.
MarkChangedRoot
The sender’s process changed its root with chroot
(ProcessAuxvTable::mark_changed_root). Appended last.
RootChanged(DetPid)
Whether the process a number names has changed its root
(ProcessAuxvTable::root_changed). Appended last.
DescriptionLocks(OpenFileId, Result<Vec<HeldLock>, String>, u32)
The OFD and flock locks this open file description holds, as its
fdinfo showed them after a call through one of the sender’s
descriptors, and how many slots of the sender’s descriptor table name
it (procfs::locks::LockLedger::note_locks), or why that fdinfo
could not be read (procfs::locks::LockLedger::note_unknown).
Appended last.
TableReleased(OpenFileId, u32)
How many slots of the sender’s descriptor table still name this
description after a close or replacement there
(procfs::locks::LockLedger::release). Appended last.
GuestLockRows(Vec<LockRowFacts>)
Which rows of a /proc/locks snapshot the guest owns
(procfs::locks::guest_lock_rows). Appended last.
TableExec(Vec<(OpenFileId, u32)>)
The descriptions whose locks Detcore read that the sender’s process’s
table still names after its successful exec, with their slot counts
(procfs::locks::LockLedger::exec_kept). Appended last.
AliasedInode(Option<String>)
A lock or unlock went through a descriptor whose description the
ledger may know under another identity, on the file with this inode
number, or on an unknown one
(procfs::locks::LockLedger::alias_inode). Appended last.
HostTimedAndPrivateSigchld(DetTid)
The calling thread’s host-timed signals and the SIGCHLD the schedule
recorded in its private queue (Scheduler::host_timed_and_private_sigchld).
Appended last.
LockLedgerRefused(String)
A lock or unlock through a descriptor whose description the ledger
may know under another identity, whose fdinfo could not be read for
this reason (procfs::locks::LockLedger::refuse). Appended last.
MappingCapture(Request)
Contained mapping capture; answered without changing the serial grant.
StoppingRefusal(String)
The in-guest delivery protocol cannot go on in this run, for this
reason: the whole refusal line, conventionally hermit refused to continue the run (NAME): ... (A5 design D49). The coordinator ends the
whole run on it (scheduler::exit_on_scheduler_refusal): it writes the
line and exits with HERMIT_POLICY_REFUSAL_EXIT, and where the
scheduler runs as the init of the guest’s PID namespace, the kernel
then kills every guest process. Unlike PolicyRefusal, which records a
reason while only the refusing Tool image exits, no guest process runs
on after it, and it is never answered. Filed only under
Config::in_guest_signal_delivery, whose gate requires that
ownership. Appended last.
ProcessCmdline(DetPid)
The process a /proc/<pid>/cmdline names (a thread’s number names its
process), and its argument and environment areas
(ProcessAuxvTable::current_cmdline). Appended last.
KernelRunTarget(DetTid)
What the scheduler holds for this thread if its latest committed
request is a kernel-run call whose continuation turn has not been
granted (A5 design D44, Scheduler::kernel_run_block), asked by a
sender in its turn under the in-guest delivery gate. Appended last.
CallbackCheckpointMismatch
Error-only notice, not a resource or a scheduling turn. Appended last.
Fields
checkpoint: CheckpointThe first unconsumed checkpoint, as sent on thread start.
TaskStatFacts(DetTid, Option<DetTid>)
What the process table says about the task a per-process stat file
names (Scheduler::task_stat_facts): the top-level number and the
thread below task/. Appended last.
SetTaskComm(DetTid, TaskComm)
Record a task’s name (Scheduler::set_task_comm): the name a new
image’s AT_EXECFN gives it at its exec, or the one PR_SET_NAME
set, in the task’s own turn. Appended last.
RecordExternalParent(DetPid, i32)
Record the guest-visible parent of a process whose real parent is
outside the guest’s tree, its own getppid answer when it first
opens or lists its rendered stat
(Scheduler::record_external_parent). Appended last.
SetRssLimit(DetPid, u64)
Record a process’s virtual soft RLIMIT_RSS after a setrlimit or
prlimit64 changed it (Scheduler::set_rss_limit). Appended last.
PublishTemporaryMask(TemporaryMaskControl)
A5 step 3c.1e A, IR-23(a): the sender’s masked wait publishes its
temporary mask with D37’s held masks before its first expired-timerfd
publication, or withdraws that publication as a call that filed no
later request returns (Scheduler::temporary_mask_control). Answered
in the sender’s own turn with no scheduling decision; filed only under
Config::in_guest_signal_delivery. Appended last.
InPidNamespaceInit(DetTid)
A5 step 3c.1e A, IR-15: whether this thread’s process is the init of a
PID namespace it created with CLONE_NEWPID
(ThreadTree::is_pid_namespace_init), asked under
Config::in_guest_signal_delivery before a two-phase delivery’s
announcement and a predicted death. Appended last.
VirtualInotifyCookies(Vec<u32>)
The virtual cookie for each host inotify rename cookie of one read, in
order (crate::syscalls::inotify). Answered in the sender’s own turn
with no scheduling decision. Appended last.
RegisterPlaceholder(PlaceholderDirectory, OpenFileId)
Register a placeholder directory a guest opened, and the open file
description it opened it in (InodePool::register_placeholder).
Appended last.
Placeholder(u64)
The placeholder directory a kernel position tags
(InodePool::placeholder). Appended last.
PlaceholderFlock(PlaceholderFlock)
A flock through a placeholder descriptor
(procfs::locks::LockLedger::placeholder_flock). Appended last.
PlaceholderWriteHint(PlaceholderLockKey, Option<u64>)
Set (Some) or read the write hint of a placeholder directory’s
inode (procfs::locks::LockLedger::placeholder_write_hint). Appended
last.
PlaceholderCopies(PlaceholderCopies)
A change to the copies of placeholder descriptions in flight over
SCM_RIGHTS (procfs::locks::LockLedger::placeholder_copies).
Appended last.
CpuAffinity(DetTid)
A live task’s CPU affinity under --virtual-cpus
(Scheduler::cpu_affinity). Appended last.
SetCpuAffinity(DetTid, CpuSet)
Record a live task’s CPU affinity under --virtual-cpus, in the turn
of the sched_setaffinity that set it (Scheduler::set_cpu_affinity).
Appended last.
SigkillDyingThreads(u64)
The threads the send of SIGKILL reservation token kills, asked by its
sender before the send so it can record their robust lists
(Scheduler::sigkill_dying_threads). Appended last.
RecordSigkillRobustLists(u64, Vec<(DetTid, MmId, RobustListSnapshot)>)
The robust lists the sender of SIGKILL reservation token recorded
before its send, for the threads it kills
(Scheduler::record_sigkill_robust_lists). Appended last.
TakeSigkillRobustList
A thread a SIGKILL ended takes the robust list its sender recorded for
it, in its exit callback (Scheduler::take_sigkill_robust_list).
Answered before clock accounting. Appended last.
NextGuestId
Take the ID for the task a clone-family call is about to create, when
Detcore chooses the IDs (GuestIds::Chosen), in the caller’s turn.
Appended last.
GaveHostId
Report a host-ID outcome or a conservative pre-vfork attempt while
Detcore chooses IDs (GlobalState::host_id_tasks). Appended last.
ReplayDeparture
A faithful thread could not file its next change point. The receiver derives identity/source/output coordinates, acknowledges within the existing grant, and does not consume time or grant state. Appended last.
Fields
previous: LogicalTimeThe previous change point filed by this thread.
observed: LogicalTimeThe attempted time, at or before the previous filing.
DescriptionLocksTaken(OpenFileId, Vec<HeldLock>, Vec<HeldLock>, u32, LedgerIdentity)
As DescriptionLocks, with the locks known, after a call of the
sender’s that can take a lock through the description, and the locks
the call proved it took, which are the sender’s process’s, and what
else names its open file description: possibly another identity (one
recorded on reception as a description of its own), or the other
standard streams of its alias group, with their slots in the sender’s
table (procfs::locks::LedgerIdentity,
procfs::locks::LockLedger::note_locks_taken). Appended last.
LockOwners(OpenFileId, Vec<HeldLock>)
The owner each of these locks, held through this description, shows
on a lock line of a rendered fdinfo
(procfs::locks::LockLedger::owners). Appended last.
LedgerLockRows
The /proc/locks rows Detcore renders from the ledger where the
guest’s procfs is not the kernel’s
(procfs::locks::LockLedger::rendered_rows). Appended last.
SecondIdentityLocks(OpenFileId, Vec<HeldLock>, u32)
As DescriptionLocks, with the locks known, for a description of the
sender’s table that may be a second identity of another, read after a
call of its own that took no lock: one the sender recorded on reception
as a description of its own
(procfs::locks::LockLedger::note_second_identity_locks). Appended
last.
HoldTable(HeldTable)
The descriptor table the sender holds, at its start or after an exec
gave it a new one, for the terminal receipt of a death by a fatal
signal to let go of (GlobalState::held_tables,
Detcore::name_table_for_death). Sent only where the tool runs in this
process (HeldTable). Answered at once, outside the scheduler.
Appended last.
RecordLocksHeldAsOfd(Option<Vec<String>>)
A guest’s record-lock request (F_SETLK, F_SETLKW) succeeded, where
the ledger takes the backend’s fact, and the backend holds the lock it
took as an OFD lock, on these files (MAJOR:MINOR:INODE), or on a file
the fact could not name (None)
(procfs::locks::LockLedger::note_record_locks_held_as_ofd). Appended
last.
HostDiskstats
The host’s /proc/diskstats as the run first read it, which every
/proc/diskstats Detcore renders starts from
(GlobalState::host_diskstats). A fact of the host, not of the
guest’s state: answered before any clock accounting, with no time.
Appended last.
UserNamespaceRelation(DetTid, DetTid)
Where the user namespace of the process of task .1 is from that of
the process of thread .0, and whether the namespace whose owner
Linux’s rule asks about there may be owned by an effective user ID
other than the real user ID every guest task has
(scheduler::user_namespaces). Appended last.
UserNamespaceOwnerMayDiffer(DetTid)
The clone that made process .0, which made a user namespace, was a
creator’s whose effective user ID was not its real user ID, read as
the overflow ID, or could not be read; sent once the clone succeeded,
in the turn that registered the process
(UserNamespaces::note_owner_may_differ). Appended last.
ProcfsSequence(OpenFileId)
The record sequence of the open file description .0, a per-process
file whose description a fork copied where the tool runs in each guest
process, as the last read, positioned read or seek of it, in whichever
process, left it (Detcore::take_procfs_sequence); none before the
first. Appended last.
StoreProcfsSequence(OpenFileId, ProcfsSequence)
Keep .1 as the record sequence of the open file description .0
after a read, positioned read or seek of it
(Detcore::store_procfs_sequence). Appended last.
Trait Implementations§
Source§impl Clone for GlobalRequest
impl Clone for GlobalRequest
Source§fn clone(&self) -> GlobalRequest
fn clone(&self) -> GlobalRequest
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for GlobalRequest
impl Debug for GlobalRequest
Source§impl<'de> Deserialize<'de> for GlobalRequest
impl<'de> Deserialize<'de> for GlobalRequest
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for GlobalRequest
Source§impl PartialEq for GlobalRequest
impl PartialEq for GlobalRequest
Source§impl Serialize for GlobalRequest
impl Serialize for GlobalRequest
impl StructuralPartialEq for GlobalRequest
Auto Trait Implementations§
impl Freeze for GlobalRequest
impl RefUnwindSafe for GlobalRequest
impl Send for GlobalRequest
impl Sync for GlobalRequest
impl Unpin for GlobalRequest
impl UnsafeUnpin for GlobalRequest
impl UnwindSafe for GlobalRequest
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Conv for T
impl<T> Conv for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
§impl<T> Paint for Twhere
T: ?Sized,
impl<T> Paint for Twhere
T: ?Sized,
§fn fg(&self, value: Color) -> Painted<&T>
fn fg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the foreground set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like red() and
green(), which have the same functionality but are
pithier.
§Example
Set foreground color to white using fg():
use yansi::{Paint, Color};
painted.fg(Color::White);Set foreground color to white using white().
use yansi::Paint;
painted.white();§fn bright_black(&self) -> Painted<&T>
fn bright_black(&self) -> Painted<&T>
§fn bright_red(&self) -> Painted<&T>
fn bright_red(&self) -> Painted<&T>
§fn bright_green(&self) -> Painted<&T>
fn bright_green(&self) -> Painted<&T>
§fn bright_yellow(&self) -> Painted<&T>
fn bright_yellow(&self) -> Painted<&T>
§fn bright_blue(&self) -> Painted<&T>
fn bright_blue(&self) -> Painted<&T>
§fn bright_magenta(&self) -> Painted<&T>
fn bright_magenta(&self) -> Painted<&T>
§fn bright_cyan(&self) -> Painted<&T>
fn bright_cyan(&self) -> Painted<&T>
§fn bright_white(&self) -> Painted<&T>
fn bright_white(&self) -> Painted<&T>
§fn bg(&self, value: Color) -> Painted<&T>
fn bg(&self, value: Color) -> Painted<&T>
Returns a styled value derived from self with the background set to
value.
This method should be used rarely. Instead, prefer to use color-specific
builder methods like on_red() and
on_green(), which have the same functionality but
are pithier.
§Example
Set background color to red using fg():
use yansi::{Paint, Color};
painted.bg(Color::Red);Set background color to red using on_red().
use yansi::Paint;
painted.on_red();§fn on_primary(&self) -> Painted<&T>
fn on_primary(&self) -> Painted<&T>
§fn on_magenta(&self) -> Painted<&T>
fn on_magenta(&self) -> Painted<&T>
§fn on_bright_black(&self) -> Painted<&T>
fn on_bright_black(&self) -> Painted<&T>
§fn on_bright_red(&self) -> Painted<&T>
fn on_bright_red(&self) -> Painted<&T>
§fn on_bright_green(&self) -> Painted<&T>
fn on_bright_green(&self) -> Painted<&T>
§fn on_bright_yellow(&self) -> Painted<&T>
fn on_bright_yellow(&self) -> Painted<&T>
§fn on_bright_blue(&self) -> Painted<&T>
fn on_bright_blue(&self) -> Painted<&T>
§fn on_bright_magenta(&self) -> Painted<&T>
fn on_bright_magenta(&self) -> Painted<&T>
§fn on_bright_cyan(&self) -> Painted<&T>
fn on_bright_cyan(&self) -> Painted<&T>
§fn on_bright_white(&self) -> Painted<&T>
fn on_bright_white(&self) -> Painted<&T>
§fn attr(&self, value: Attribute) -> Painted<&T>
fn attr(&self, value: Attribute) -> Painted<&T>
Enables the styling [Attribute] value.
This method should be used rarely. Instead, prefer to use
attribute-specific builder methods like bold() and
underline(), which have the same functionality
but are pithier.
§Example
Make text bold using attr():
use yansi::{Paint, Attribute};
painted.attr(Attribute::Bold);Make text bold using using bold().
use yansi::Paint;
painted.bold();§fn rapid_blink(&self) -> Painted<&T>
fn rapid_blink(&self) -> Painted<&T>
§fn quirk(&self, value: Quirk) -> Painted<&T>
fn quirk(&self, value: Quirk) -> Painted<&T>
Enables the yansi [Quirk] value.
This method should be used rarely. Instead, prefer to use quirk-specific
builder methods like mask() and
wrap(), which have the same functionality but are
pithier.
§Example
Enable wrapping using .quirk():
use yansi::{Paint, Quirk};
painted.quirk(Quirk::Wrap);Enable wrapping using wrap().
use yansi::Paint;
painted.wrap();§fn clear(&self) -> Painted<&T>
👎Deprecated since 1.0.1: renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
fn clear(&self) -> Painted<&T>
renamed to resetting() due to conflicts with Vec::clear().
The clear() method will be removed in a future release.
§fn whenever(&self, value: Condition) -> Painted<&T>
fn whenever(&self, value: Condition) -> Painted<&T>
Conditionally enable styling based on whether the [Condition] value
applies. Replaces any previous condition.
See the crate level docs for more details.
§Example
Enable styling painted only when both stdout and stderr are TTYs:
use yansi::{Paint, Condition};
painted.red().on_yellow().whenever(Condition::STDOUTERR_ARE_TTY);§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
self, then passes self.deref() into the pipe function.§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
.tap_deref() only in debug builds, and is erased in release
builds.