X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b91be0033265b5b6bd716bd39cb0971da41906c4..8b8f49b713d64065775fe538232f8639083601bd:/lunaix-os/includes/lunaix/isrm.h diff --git a/lunaix-os/includes/lunaix/isrm.h b/lunaix-os/includes/lunaix/isrm.h index 94b8de3..160350a 100644 --- a/lunaix-os/includes/lunaix/isrm.h +++ b/lunaix-os/includes/lunaix/isrm.h @@ -11,35 +11,68 @@ #ifndef __LUNAIX_ISRM_H #define __LUNAIX_ISRM_H -#include #include - -#define IV_BASE 32 -#define IV_OS IV_BASE -#define IV_EX 48 -#define IV_MAX 256 +#include typedef void (*isr_cb)(const isr_param*); void isrm_init(); +/** + * @brief Release a iv resource + * + * @param iv + */ void isrm_ivfree(int iv); +/** + * @brief Allocate an iv resource for os services + * + * @param iv + */ int isrm_ivosalloc(isr_cb handler); +/** + * @brief Allocate an iv resource for external events + * + * @param iv + */ int isrm_ivexalloc(isr_cb handler); +/** + * @brief Bind a given irq and associated handler to an iv + * + * @param iv iv allocated by system + */ int isrm_bindirq(int irq, isr_cb irq_handler); +/** + * @brief Bind given iv with it's associated handler + * + * @param iv + * @param handler + */ void isrm_bindiv(int iv, isr_cb handler); +/** + * @brief Get the handler associated with the given iv + * + * @param iv + * @return isr_cb + */ isr_cb isrm_get(int iv); +ptr_t +isrm_get_payload(const isr_param*); + +void +isrm_set_payload(int iv, ptr_t); + #endif /* __LUNAIX_ISRM_H */