irq.c 1.4 KB
Newer Older
1 2 3
/*
 * File      : irq.c
 * This file is part of RT-Thread RTOS
B
bernard.xiong 已提交
4
 * COPYRIGHT (C) 2006 - 2009, RT-Thread Development Team
5 6 7
 *
 * The license and distribution terms for this file may be
 * found in the file LICENSE in this distribution or at
B
bernard.xiong 已提交
8
 * http://www.rt-thread.org/license/LICENSE
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
 *
 * Change Logs:
 * Date           Author       Notes
 * 2006-02-24     Bernard      first version
 * 2006-05-03     Bernard      add IRQ_DEBUG
 */

#include <rthw.h>
#include <rtthread.h>

/* #define IRQ_DEBUG */

/**
 * @addtogroup Kernel
 */

/*@{*/

27
volatile rt_uint8_t rt_interrupt_nest;
28 29 30 31 32 33 34 35 36 37 38

/**
 * This function will be invoked by BSP, when enter interrupt service routine
 *
 * @note please don't invoke this routine in application
 *
 * @see rt_interrupt_leave
 */
void rt_interrupt_enter()
{
	rt_base_t level;
B
bernard.xiong 已提交
39

40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
#ifdef IRQ_DEBUG
	rt_kprintf("irq comming..., irq nest:%d\n", rt_interrupt_nest);
#endif

	level = rt_hw_interrupt_disable();
	rt_interrupt_nest ++;
	rt_hw_interrupt_enable(level);
}

/**
 * This function will be invoked by BSP, when leave interrupt service routine
 *
 * @note please don't invoke this routine in application
 *
 * @see rt_interrupt_enter
 */
void rt_interrupt_leave()
{
	rt_base_t level;

#ifdef IRQ_DEBUG
	rt_kprintf("irq leave, irq nest:%d\n", rt_interrupt_nest);
#endif

	level = rt_hw_interrupt_disable();
	rt_interrupt_nest --;
	rt_hw_interrupt_enable(level);
}

/*@}*/