/*
 * irq_install — установить user-handler кадрового прерывания.
 * Захватывает общую IM2-таблицу (_irq_table_ref) и включает кадровый
 * путь трамплина.  Детали и результаты отладки: docs/im2_isr_design.md.
 */

#include <errno.h>
#include "_irq.h"

int irq_install(isr_t handler)
{
    if (!handler) { errno = EINVAL; return -1; }
    if (_irq_user) { errno = EBUSY; return -1; }
    if (_irq_table_ref() != 0) return -1;
    _irq_user = handler;
    return 0;
}
