#![doc = include_str!("../README.md")]
#![cfg(detected_neuware)]
#![deny(warnings)]
#[macro_use]
#[allow(unused, non_upper_case_globals, non_camel_case_types, non_snake_case)]
pub mod bindings {
include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
#[macro_export]
macro_rules! cndrv {
($f:expr) => {{
#[allow(unused_imports)]
use $crate::bindings::*;
#[allow(unused_unsafe)]
let err = unsafe { $f };
assert_eq!(err, CNresult::CN_SUCCESS);
}};
}
#[macro_export]
macro_rules! cnrtc {
($f:expr) => {{
#[allow(unused_imports)]
use $crate::bindings::*;
#[allow(unused_unsafe)]
let err = unsafe { $f };
assert_eq!(err, cnrtcStatus::CNRTC_SUCCESS);
}};
}
}
mod spore;
mod version;
mod device;
mod context;
mod memory;
mod queue;
mod notifier;
mod cnrtc;
pub trait AsRaw {
type Raw;
unsafe fn as_raw(&self) -> Self::Raw;
}
#[inline(always)]
pub fn init() {
cndrv!(cnInit(0));
}
pub use cnrtc::CnrtcBinary;
pub use context::{Context, CurrentCtx};
pub use device::Device;
pub use memory::{
memcpy_d2d, memcpy_d2h, memcpy_h2d, DevByte, DevMem, DevMemSpore, HostMem, HostMemSpore,
};
pub use notifier::{Notifier, NotifierSpore};
pub use queue::{Queue, QueueSpore};
pub use spore::{ContextResource, ContextSpore, RawContainer};
pub use version::{driver_version, library_version, Version};
struct Blob<P> {
ptr: P,
len: usize,
}