12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #pragma once
- #include <common/glib.h>
- #define MAX_SOFTIRQ_NUM 64
- #define TIMER_SIRQ 0
- #define VIDEO_REFRESH_SIRQ 1
- #define raise_softirq(sirq_num) \
- do \
- { \
- set_softirq_pending(1 << sirq_num); \
- } while (0);
- struct softirq_t
- {
- void (*action)(void *data);
- void *data;
- };
- struct softirq_t softirq_vector[MAX_SOFTIRQ_NUM] = {0};
- void register_softirq(uint32_t irq_num, void (*action)(void *data), void *data);
- void unregister_softirq(uint32_t irq_num);
- void set_softirq_pending(uint64_t status);
- uint64_t get_softirq_pending();
- int clear_softirq_pending(uint32_t irq_num);
- void do_softirq();
- void softirq_init();
|