pub struct ProfileProviderSynchronousProxy { /* private fields */ }
Implementations§
Source§impl ProfileProviderSynchronousProxy
impl ProfileProviderSynchronousProxy
pub fn new(channel: Channel) -> Self
pub fn into_channel(self) -> Channel
Sourcepub fn wait_for_event(
&self,
deadline: MonotonicInstant,
) -> Result<ProfileProviderEvent, Error>
pub fn wait_for_event( &self, deadline: MonotonicInstant, ) -> Result<ProfileProviderEvent, Error>
Waits until an event arrives and returns it. It is safe for other threads to make concurrent requests while waiting for an event.
Sourcepub fn register_handler_with_capacity(
&self,
thread_handle: Thread,
name: &str,
period: i64,
capacity: f32,
___deadline: MonotonicInstant,
) -> Result<(i64, i64), Error>
pub fn register_handler_with_capacity( &self, thread_handle: Thread, name: &str, period: i64, capacity: f32, ___deadline: MonotonicInstant, ) -> Result<(i64, i64), Error>
Register a thread as a media thread. This notifies the media subsystem that this thread should have an elevated scheduling profile applied to it in order to meet audio or video deadlines.
name
is the name of a system scheduling role to apply to the thread given by
thread_handle
– different products may customize the underlying scheduling strategy based
on the requested role. period
is the suggested interval to be scheduled at. period
may
be zero if the thread has no preferred scheduling interval. capacity
is the proportion of
the scheduling interval the thread needs to be running to achieve good performance or to
meet the scheduling deadline defined by period
. capacity
may be zero if the workload has
no firm runtime requirements. Note that capacity
should be a good faith estimate based on
the worst case runtime the thread requires each period. Excessive capacity requests may
be rejected or result in scaling back the performance of other threads to fit resource
limits.
Capacity, max runtime, and period have the following relationship:
capacity = max runtime / period
Where:
0 <= max runtime <= period and 0 <= capacity <= 1
For heterogeneous systems, the capacity should be planned / measured against the highest performance processor(s) in the system. The system will automatically adjust the effective capacity to account for slower processors and operating points and will avoid processors and operating points that are too slow to meet the requested scheduling parameters (provided they are reasonable).
Returns the period and capacity (actually maximum runtime) that was applied, either of which may be zero to indicate not applicable.
Sourcepub fn unregister_handler(
&self,
thread_handle: Thread,
name: &str,
___deadline: MonotonicInstant,
) -> Result<(), Error>
pub fn unregister_handler( &self, thread_handle: Thread, name: &str, ___deadline: MonotonicInstant, ) -> Result<(), Error>
Reset a thread’s scheduling profile to the default.
Sourcepub fn register_memory_range(
&self,
vmar_handle: Vmar,
name: &str,
___deadline: MonotonicInstant,
) -> Result<(), Error>
pub fn register_memory_range( &self, vmar_handle: Vmar, name: &str, ___deadline: MonotonicInstant, ) -> Result<(), Error>
Register a memory range as being used for media processing. This notifies the media subsystem that this memory should have an elevated memory profile applied to it in order to meet audio or video deadlines.
name
is the name of a system memory role to apply to the memory given by
vmar_handle
– different products may customize the underlying memory strategy based
on the requested role.
Sourcepub fn unregister_memory_range(
&self,
vmar_handle: Vmar,
___deadline: MonotonicInstant,
) -> Result<(), Error>
pub fn unregister_memory_range( &self, vmar_handle: Vmar, ___deadline: MonotonicInstant, ) -> Result<(), Error>
Reset a memory range’s memory profile.
Trait Implementations§
Source§impl SynchronousProxy for ProfileProviderSynchronousProxy
impl SynchronousProxy for ProfileProviderSynchronousProxy
Source§type Proxy = ProfileProviderProxy
type Proxy = ProfileProviderProxy
Source§type Protocol = ProfileProviderMarker
type Protocol = ProfileProviderMarker
Proxy
controls.