X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/b26d3165c52589d1f8de37bf0df27ad96f460f47..aa2843fdbdd9b5cc579d198fd1a9ec874642706e:/lunaix-os/includes/lunaix/isrm.h diff --git a/lunaix-os/includes/lunaix/isrm.h b/lunaix-os/includes/lunaix/isrm.h index 5998dd1..6dd4a6f 100644 --- a/lunaix-os/includes/lunaix/isrm.h +++ b/lunaix-os/includes/lunaix/isrm.h @@ -11,34 +11,61 @@ #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);