123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- #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_status(1 << sirq_num); \
- } while (0);
- #define softirq_ack(sirq_num) \
- do \
- { \
- softirq_status &= (~(1 << sirq_num)); \
- } while (0);
- extern uint64_t softirq_status;
- 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_status(uint64_t status);
- uint64_t get_softirq_status();
- void do_softirq();
- void softirq_init();
|