rust: qdev: add minimal clock bindings
Add the minimal support that is needed by pl011's event and tracepoint. Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Reviewed-by: Stefan Hajnoczi <stefanha@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Message-ID: <20250929154938.594389-11-pbonzini@redhat.com> Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
parent
54140102d2
commit
fe791b4004
1 changed files with 33 additions and 0 deletions
|
|
@ -411,6 +411,39 @@ where
|
|||
|
||||
impl<R: ObjectDeref> DeviceMethods for R where R::Target: IsA<DeviceState> {}
|
||||
|
||||
impl Clock {
|
||||
pub const PERIOD_1SEC: u64 = bindings::CLOCK_PERIOD_1SEC;
|
||||
|
||||
pub const fn period_from_ns(ns: u64) -> u64 {
|
||||
ns * Self::PERIOD_1SEC / 1_000_000_000
|
||||
}
|
||||
|
||||
pub const fn period_from_hz(hz: u64) -> u64 {
|
||||
if hz == 0 {
|
||||
0
|
||||
} else {
|
||||
Self::PERIOD_1SEC / hz
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn period_to_hz(period: u64) -> u64 {
|
||||
if period == 0 {
|
||||
0
|
||||
} else {
|
||||
Self::PERIOD_1SEC / period
|
||||
}
|
||||
}
|
||||
|
||||
pub const fn period(&self) -> u64 {
|
||||
// SAFETY: Clock is returned by init_clock_in with zero value for period
|
||||
unsafe { &*self.0.as_ptr() }.period
|
||||
}
|
||||
|
||||
pub const fn hz(&self) -> u64 {
|
||||
Self::period_to_hz(self.period())
|
||||
}
|
||||
}
|
||||
|
||||
unsafe impl ObjectType for Clock {
|
||||
type Class = ObjectClass;
|
||||
const TYPE_NAME: &'static CStr =
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue