Error Collection and Reporting The ccmErrEnq() may also be called from Interrupt context.  In interrupt context, the mutual exclusion mechanism implemented on the Error Queue cannot be used since it is illegal to take a semaphore in an interrupt context.  To circumvent this limitation, the global variable ccmISRerror is set with the appropriate error code.  The error will be queued the next time ccmTask() runs.  Due to the manner in which errors are handled in interrupt context, it is possible to loose errors if more than one error occurs in interrupt context before ccmTask() executes; the previous error will be overwritten by the new error.