这个开关中断的宏定义为什么有个was_masked?

2020-01-01 17:44发布

如题:
  1. #if defined(__CC_ARM)

  2. /* ARMCC and GCC have different ordering for packed typedefs, must separate macros */
  3.     #define __packed_gcc
  4.     #define __packed_armcc __packed

  5.     #define _DISABLE_IRQS(_was_masked) _was_masked = __disable_irq()
  6.     #define _ENABLE_IRQS(_was_masked) if (!_was_masked) { __enable_irq(); }

  7. #elif defined(__GNUC__)

  8.     #define __packed_armcc
  9.     #define __packed_gcc __attribute__((packed))

  10.     #define _DISABLE_IRQS(_was_masked) do{
  11.         __ASM volatile ("MRS %0, primask" : "=r" (_was_masked) );
  12.         __ASM volatile ("cpsid i" : : : "memory");
  13.     } while(0)
复制代码

这个里面   #define _DISABLE_IRQS(_was_masked) _was_masked = __disable_irq()
_was_masked干什么的?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。