implement get_destination_status #177
@ -13,8 +13,7 @@ use crate::i2c;
|
|||||||
use super::rpc::{rpc_send, rpc_send_async, rpc_recv};
|
use super::rpc::{rpc_send, rpc_send_async, rpc_recv};
|
||||||
use super::dma;
|
use super::dma;
|
||||||
use super::cache;
|
use super::cache;
|
||||||
use super::rtio as kernel_rtio;
|
use super::core1::get_destination_status;
|
||||||
|
|||||||
|
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
fn vsnprintf_(buffer: *mut c_char, count: size_t, format: *const c_char, va: VaList) -> c_int;
|
fn vsnprintf_(buffer: *mut c_char, count: size_t, format: *const c_char, va: VaList) -> c_int;
|
||||||
@ -88,7 +87,7 @@ pub fn resolve(required: &[u8]) -> Option<u32> {
|
|||||||
|
|
||||||
// rtio
|
// rtio
|
||||||
api!(rtio_init = rtio::init),
|
api!(rtio_init = rtio::init),
|
||||||
api!(rtio_get_destination_status = kernel_rtio::get_destination_status),
|
api!(rtio_get_destination_status = get_destination_status),
|
||||||
api!(rtio_get_counter = rtio::get_counter),
|
api!(rtio_get_counter = rtio::get_counter),
|
||||||
api!(rtio_output = rtio::output),
|
api!(rtio_output = rtio::output),
|
||||||
api!(rtio_output_wide = rtio::output_wide),
|
api!(rtio_output_wide = rtio::output_wide),
|
||||||
|
@ -233,3 +233,21 @@ extern fn dl_unwind_find_exidx(pc: *const u32, len_ptr: *mut u32) -> *const u32
|
|||||||
}
|
}
|
||||||
start
|
start
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub extern fn get_destination_status(destination: i32) -> bool {
|
||||||
|
#[cfg(has_drtio)]
|
||||||
|
if destination > 0 && destination < 255 {
|
||||||
|
let reply = unsafe {
|
||||||
|
let core1_rx = KERNEL_CHANNEL_0TO1.as_mut().unwrap();
|
||||||
|
let core1_tx = KERNEL_CHANNEL_1TO0.as_mut().unwrap();
|
||||||
|
core1_tx.send(Message::UpDestinationsRequest(destination));
|
||||||
|
core1_rx.recv()
|
||||||
|
};
|
||||||
|
return match reply {
|
||||||
|
Message::UpDestinationsReply(x) => x,
|
||||||
|
_ => panic!("received unexpected reply to UpDestinationsRequest: {:?}", reply)
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
destination == 0
|
||||||
|
}
|
@ -7,7 +7,6 @@ use crate::eh_artiq;
|
|||||||
mod control;
|
mod control;
|
||||||
pub use control::Control;
|
pub use control::Control;
|
||||||
pub mod core1;
|
pub mod core1;
|
||||||
pub mod rtio;
|
|
||||||
mod api;
|
mod api;
|
||||||
mod rpc;
|
mod rpc;
|
||||||
mod dma;
|
mod dma;
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
use super::{KERNEL_CHANNEL_0TO1, KERNEL_CHANNEL_1TO0, Message};
|
|
||||||
|
|
||||||
pub extern fn get_destination_status(destination: i32) -> bool {
|
|
||||||
#[cfg(has_drtio)]
|
|
||||||
if destination > 0 && destination < 255 {
|
|
||||||
let reply = unsafe {
|
|
||||||
let core1_rx = KERNEL_CHANNEL_0TO1.as_mut().unwrap();
|
|
||||||
let core1_tx = KERNEL_CHANNEL_1TO0.as_mut().unwrap();
|
|
||||||
core1_tx.send(Message::UpDestinationsRequest(destination));
|
|
||||||
core1_rx.recv()
|
|
||||||
};
|
|
||||||
return match reply {
|
|
||||||
Message::UpDestinationsReply(x) => x,
|
|
||||||
_ => panic!("received unexpected reply to UpDestinationsRequest: {:?}", reply)
|
|
||||||
};
|
|
||||||
}
|
|
||||||
|
|
||||||
destination == 0
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user
Keep the rtio_ prefix?