增加定时器和软中断文档,修改了softirq面向c的接口 (#245)

* 增加定时器和软中断文档

* 修改softirq对c的接口和文档

* 修改文档格式
This commit is contained in:
houmkh
2023-04-17 17:17:06 +08:00
committed by GitHub
parent 77c928f6ce
commit 8fd71f2772
6 changed files with 350 additions and 4 deletions

View File

@ -15,9 +15,9 @@
// ==================implementation with rust===================
extern void rs_softirq_init();
extern void rs_raise_softirq(uint32_t sirq_num);
extern int rs_register_softirq(uint32_t irq_num, void (*action)(void *data), void *data);
extern int unregister_softirq(uint32_t irq_num);
extern void rs_unregister_softirq(uint32_t sirq_num);
extern void rs_do_softirq();
extern void rs_clear_softirq_pending(uint32_t softirq_num);
// for temporary
#define MAX_SOFTIRQ_NUM 64

View File

@ -236,7 +236,7 @@ impl Softirq {
local_irq_restore(&flags);
// kdebug!("raise_softirq exited");
}
pub fn clear_softirq_pending(&self, softirq_num: SoftirqNumber) {
pub unsafe fn clear_softirq_pending(&self, softirq_num: SoftirqNumber) {
compiler_fence(Ordering::SeqCst);
cpu_pending(smp_get_processor_id() as usize).remove(VecStatus::from(softirq_num));
compiler_fence(Ordering::SeqCst);
@ -261,5 +261,7 @@ pub extern "C" fn rs_do_softirq() {
#[no_mangle]
pub extern "C" fn rs_clear_softirq_pending(softirq_num: u32) {
softirq_vectors().clear_softirq_pending(SoftirqNumber::from(softirq_num as u64));
unsafe {
softirq_vectors().clear_softirq_pending(SoftirqNumber::from(softirq_num as u64));
}
}