pub enum DebugRequest {
Compact {
responder: DebugCompactResponder,
},
DeleteProfile {
volume: String,
profile: String,
responder: DebugDeleteProfileResponder,
},
RecordAndReplayProfile {
volume: Option<String>,
profile: String,
duration_secs: u32,
responder: DebugRecordAndReplayProfileResponder,
},
ReplayXorRecordProfile {
volume: String,
identifier: ProfileIdentifier,
duration_secs: u32,
responder: DebugReplayXorRecordProfileResponder,
},
StopProfileTasks {
responder: DebugStopProfileTasksResponder,
},
ClearCaches {
responder: DebugClearCachesResponder,
},
}Expand description
This is an internal protocol for on-device debugging and testing only.
See ffx fxfs help for more details.
Variants§
Compact
Forces a compaction.
Fields
responder: DebugCompactResponderDeleteProfile
Deletes a recorded profile from a volume. Fails if the volume isn’t mounted or there is active profile recording or replay.
RecordAndReplayProfile
Begins recording a profile for a named volume for up to the given duration in seconds. If a profile already exists under the given name then it will begin replaying it as well. Fails if the volume isn’t mounted or there is active profile recording or replay on the volume. Page faults for objects that do not get opened by a caller during the recording period will will be filtered out of the profile.
This “record-while-replaying” strategy is meant to support boot-profiling in an environment where we don’t explicitly know when the system has updated. By recording during replay and filtering objects without open events, Fxfs drops dead/replaced objects to refresh the profile.
Fields
responder: DebugRecordAndReplayProfileResponderReplayXorRecordProfile
Replays a profile if one exists, and only records if one does not exist. The profile is
saved as an attribute associated with the object described by the provided
ProfileIdentifier. Fails if the volume isn’t mounted or there is active profile recording
or replay on the volume.
This associated profile is meant to support app launch profiling, where the profile is associated directly with a core file that is used as part of the app launch. Associating it with the file as an attribute enables automatic cleanup of the old profile and allows a new recording when the app is updated. These profiles do not filter entries based on Open events since outside of the boot process objects may already be opened or cached in overlays like Starnix. The filtering is not needed here in any case since a method of refreshing the profile after an update is already provided.
StopProfileTasks
Stops all profile recording and replay activity. Ongoing recordings are completed and persisted.
Fields
responder: DebugStopProfileTasksResponderClearCaches
Clears the directory entry cache (dirent cache) and internal object store caches (including LSM tree object caches, layer file chunk caches, and non-permanent unwrapped keys). This drops strong references held by the cache to filesystem nodes (files and directories). If these nodes are not currently open elsewhere, they will be dropped, freeing their associated resources (including VMOs). Subsequent access to these paths will force Fxfs to recreate the nodes and reload metadata from disk.
Fields
responder: DebugClearCachesResponderImplementations§
Source§impl DebugRequest
impl DebugRequest
pub fn into_compact(self) -> Option<DebugCompactResponder>
pub fn into_delete_profile( self, ) -> Option<(String, String, DebugDeleteProfileResponder)>
pub fn into_record_and_replay_profile( self, ) -> Option<(Option<String>, String, u32, DebugRecordAndReplayProfileResponder)>
pub fn into_replay_xor_record_profile( self, ) -> Option<(String, ProfileIdentifier, u32, DebugReplayXorRecordProfileResponder)>
pub fn into_stop_profile_tasks(self) -> Option<DebugStopProfileTasksResponder>
pub fn into_clear_caches(self) -> Option<DebugClearCachesResponder>
Sourcepub fn method_name(&self) -> &'static str
pub fn method_name(&self) -> &'static str
Name of the method defined in FIDL
Trait Implementations§
Auto Trait Implementations§
impl !RefUnwindSafe for DebugRequest
impl !UnwindSafe for DebugRequest
impl Freeze for DebugRequest
impl Send for DebugRequest
impl Sync for DebugRequest
impl Unpin for DebugRequest
impl UnsafeUnpin for DebugRequest
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, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous1, D> for Twhere
D: ResourceDialect,
Source§impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
impl<T, D> Encode<Ambiguous2, D> for Twhere
D: ResourceDialect,
§impl<T> InstanceFromServiceTransport<T> for T
impl<T> InstanceFromServiceTransport<T> for T
§fn from_service_transport(handle: T) -> T
fn from_service_transport(handle: T) -> T
T to [Self]