pub struct BootManagerProxy { /* private fields */ }
Implementations§
Source§impl BootManagerProxy
impl BootManagerProxy
Sourcepub fn take_event_stream(&self) -> BootManagerEventStream
pub fn take_event_stream(&self) -> BootManagerEventStream
Get a Stream of events from the remote end of the protocol.
§Panics
Panics if the event stream was already taken.
Sourcepub fn query_current_configuration(
&self,
) -> QueryResponseFut<BootManagerQueryCurrentConfigurationResult, DefaultFuchsiaResourceDialect>
pub fn query_current_configuration( &self, ) -> QueryResponseFut<BootManagerQueryCurrentConfigurationResult, DefaultFuchsiaResourceDialect>
Queries the configuration the system is currently running.
Returns ZX_ERR_NOT_SUPPORTED
if the zvb.current_slot
boot argument cannot be read
or is an unexpected value.
Sourcepub fn query_active_configuration(
&self,
) -> QueryResponseFut<BootManagerQueryActiveConfigurationResult, DefaultFuchsiaResourceDialect>
pub fn query_active_configuration( &self, ) -> QueryResponseFut<BootManagerQueryActiveConfigurationResult, DefaultFuchsiaResourceDialect>
Queries the configuration which will be used as the default boot choice on a normal cold
boot, which may differ from the currently running configuration. Configuration::RECOVERY
should never be active.
Returns ZX_ERR_NOT_SUPPORTED
if Configuration.RECOVERY
is active.
Sourcepub fn query_configuration_last_set_active(
&self,
) -> QueryResponseFut<BootManagerQueryConfigurationLastSetActiveResult, DefaultFuchsiaResourceDialect>
pub fn query_configuration_last_set_active( &self, ) -> QueryResponseFut<BootManagerQueryConfigurationLastSetActiveResult, DefaultFuchsiaResourceDialect>
Queries the configuration that was last explicitly marked as active by SetConfigurationActive(). The result is not affected by the current status of the slot.
A newly updated slot is typically marked as active immediately. Therefore this interface can be used as a way to identify the newest slot.
Returns ZX_ERR_IO
if fail to load abr metadata. Returns ZX_ERR_INTERNAL
if invalid
slot index is returned by libabr routine.
Sourcepub fn query_configuration_status(
&self,
configuration: Configuration,
) -> QueryResponseFut<BootManagerQueryConfigurationStatusResult, DefaultFuchsiaResourceDialect>
pub fn query_configuration_status( &self, configuration: Configuration, ) -> QueryResponseFut<BootManagerQueryConfigurationStatusResult, DefaultFuchsiaResourceDialect>
Queries status of configuration
.
Returns ZX_ERR_INVALID_ARGS
if Configuration.RECOVERY
is passed in via configuration
.
Sourcepub fn query_configuration_status_and_boot_attempts(
&self,
configuration: Configuration,
) -> QueryResponseFut<BootManagerQueryConfigurationStatusAndBootAttemptsResult, DefaultFuchsiaResourceDialect>
pub fn query_configuration_status_and_boot_attempts( &self, configuration: Configuration, ) -> QueryResponseFut<BootManagerQueryConfigurationStatusAndBootAttemptsResult, DefaultFuchsiaResourceDialect>
Queries status of configuration
.
The returned table contains:
-
status
: the currentConfigurationStatus
-
boot_attempts
: ifstatus
isConfigurationStatus::PENDING
, this will be the number of times this configuration has attempted to boot, including the current attempt. For any otherstatus
this value will not be provided.If provided, this value will be in the range
[0, MAX_PENDING_BOOT_ATTEMPTS]
. 0 indicates the configuration was just set active and has not attempted any boots yet, andMAX_PENDING_BOOT_ATTEMPTS
indicates that all attempts have been used. -
unbootable_reason
: ifstatus
isConfigurationStatus::UNBOOTABLE
, this will be the reported reason for why the configuration is unbootable. For any otherstatus
this value will not be provided.
Returns ZX_ERR_INVALID_ARGS
if Configuration.RECOVERY
is passed in via configuration
.
Sourcepub fn set_configuration_active(
&self,
configuration: Configuration,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn set_configuration_active( &self, configuration: Configuration, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
Updates persistent metadata identifying which configuration should be selected as ‘primary’
for booting purposes. Should only be called after KERNEL
as well as optional
VERIFIED_BOOT_METADATA
assets for specified configuration
were written successfully.
Also resets the boot attempts count for the given Configuration
.
Returns ZX_ERR_INVALID_ARGS
if Configuration.RECOVERY
is passed in via configuration
.
Sourcepub fn set_configuration_unbootable(
&self,
configuration: Configuration,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn set_configuration_unbootable( &self, configuration: Configuration, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
Updates persistent metadata identifying whether configuration
is bootable.
Should only be called in the following situations:
- Before
KERNEL
as well as optionalVERIFIED_BOOT_METADATA
assets for specifiedconfiguration
are written. - After successfully booting from a new configuration and marking it healthy. This method would be then called on the old configuration.
- After “successfully” booting from a new configuration, but encountering an unrecoverable error during health check. This method would be then called on the new configuration.
If the configuration is unbootable, no action is taken.
Returns ZX_ERR_INVALID_ARGS
if Configuration.RECOVERY
is passed in via configuration
.
Sourcepub fn set_configuration_healthy(
&self,
configuration: Configuration,
) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
pub fn set_configuration_healthy( &self, configuration: Configuration, ) -> QueryResponseFut<i32, DefaultFuchsiaResourceDialect>
Updates persistent metadata to mark a [fuchsia.paver/Configuration
]
as successful.
This function is typically used by the OS update system after having confirmed that the configuration works as intended and the “rollback to previous slot” logic is not needed anymore.
Compatibility between the newly successful configuration and the other configuration is unknown. Even if the other configuration was successful at one point, it may no longer be. This function adds a success mark to the given configuration but also removes any success mark on the other.
If configuration
is unbootable or is
[fuchsia.paver/Configuration.RECOVERY
], response
will be
ZX_ERR_INVALID_ARGS
.
- request
configuration
theConfiguration
to mark as healthy. Must not beRECOVERY
.
- response
status
a zx_status value indicating success or failure.
Sourcepub fn set_one_shot_recovery(
&self,
) -> QueryResponseFut<BootManagerSetOneShotRecoveryResult, DefaultFuchsiaResourceDialect>
pub fn set_one_shot_recovery( &self, ) -> QueryResponseFut<BootManagerSetOneShotRecoveryResult, DefaultFuchsiaResourceDialect>
Force device to boot to recovery in the next reboot/power cycle. This will only be triggered once and will be reset after the reboot. State of A/B configuration slot will not be affected.
Trait Implementations§
Source§impl BootManagerProxyInterface for BootManagerProxy
impl BootManagerProxyInterface for BootManagerProxy
type QueryCurrentConfigurationResponseFut = QueryResponseFut<Result<Configuration, i32>>
type QueryActiveConfigurationResponseFut = QueryResponseFut<Result<Configuration, i32>>
type QueryConfigurationLastSetActiveResponseFut = QueryResponseFut<Result<Configuration, i32>>
type QueryConfigurationStatusResponseFut = QueryResponseFut<Result<ConfigurationStatus, i32>>
type QueryConfigurationStatusAndBootAttemptsResponseFut = QueryResponseFut<Result<BootManagerQueryConfigurationStatusAndBootAttemptsResponse, i32>>
type SetConfigurationActiveResponseFut = QueryResponseFut<i32>
type SetConfigurationUnbootableResponseFut = QueryResponseFut<i32>
type SetConfigurationHealthyResponseFut = QueryResponseFut<i32>
type SetOneShotRecoveryResponseFut = QueryResponseFut<Result<(), i32>>
type FlushResponseFut = QueryResponseFut<i32>
fn query_current_configuration( &self, ) -> Self::QueryCurrentConfigurationResponseFut
fn query_active_configuration( &self, ) -> Self::QueryActiveConfigurationResponseFut
fn query_configuration_last_set_active( &self, ) -> Self::QueryConfigurationLastSetActiveResponseFut
fn query_configuration_status( &self, configuration: Configuration, ) -> Self::QueryConfigurationStatusResponseFut
fn query_configuration_status_and_boot_attempts( &self, configuration: Configuration, ) -> Self::QueryConfigurationStatusAndBootAttemptsResponseFut
fn set_configuration_active( &self, configuration: Configuration, ) -> Self::SetConfigurationActiveResponseFut
fn set_configuration_unbootable( &self, configuration: Configuration, ) -> Self::SetConfigurationUnbootableResponseFut
fn set_configuration_healthy( &self, configuration: Configuration, ) -> Self::SetConfigurationHealthyResponseFut
fn set_one_shot_recovery(&self) -> Self::SetOneShotRecoveryResponseFut
fn flush(&self) -> Self::FlushResponseFut
Source§impl Clone for BootManagerProxy
impl Clone for BootManagerProxy
Source§fn clone(&self) -> BootManagerProxy
fn clone(&self) -> BootManagerProxy
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for BootManagerProxy
impl Debug for BootManagerProxy
Source§impl Proxy for BootManagerProxy
impl Proxy for BootManagerProxy
Source§type Protocol = BootManagerMarker
type Protocol = BootManagerMarker
Proxy
controls.Source§fn from_channel(inner: AsyncChannel) -> Self
fn from_channel(inner: AsyncChannel) -> Self
Source§fn into_channel(self) -> Result<AsyncChannel, Self>
fn into_channel(self) -> Result<AsyncChannel, Self>
Source§fn as_channel(&self) -> &AsyncChannel
fn as_channel(&self) -> &AsyncChannel
§fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
fn into_client_end(self) -> Result<ClientEnd<Self::Protocol>, Self>
Auto Trait Implementations§
impl Freeze for BootManagerProxy
impl !RefUnwindSafe for BootManagerProxy
impl Send for BootManagerProxy
impl Sync for BootManagerProxy
impl Unpin for BootManagerProxy
impl !UnwindSafe for BootManagerProxy
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,
Source§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)