]> granicus.if.org Git - esp-idf/commitdiff
freertos: Remove either one or two assertions from "fast path" of vPortCPUReleaseMutex()
authorAngus Gratton <angus@espressif.com>
Mon, 30 Jul 2018 04:24:03 +0000 (14:24 +1000)
committerbot <bot@espressif.com>
Tue, 31 Jul 2018 06:35:25 +0000 (06:35 +0000)
Saves a few cycles by only testing the count validity once, and never for the common case where the
mutex was not recursively locked.

components/freertos/portmux_impl.inc.h

index 29bfbfc346a25b2addbefafe497e3c2c409d0aff..07a7ce9fe19a6fedb6888ce926b3f6b7e7a99a0d 100644 (file)
@@ -155,17 +155,15 @@ static inline void PORTMUX_RELEASE_MUX_FN_NAME(portMUX_TYPE *mux) {
 #endif
 
        assert(coreID == mux->owner); // This is a mutex we didn't lock, or it's corrupt
-       assert(mux->count > 0); // Indicates memory corruption
-       assert(mux->count < 0x100); // Indicates memory corruption
 
        mux->count--;
        if(mux->count == 0) {
                mux->owner = portMUX_FREE_VAL;
-       }
+       } else {
+               assert(mux->count < 0x100); // Indicates memory corruption
 #ifdef CONFIG_FREERTOS_PORTMUX_DEBUG_RECURSIVE
-       else {
                ets_printf("Recursive unlock: count=%d last locked %s line %d, curr %s line %d\n", mux->count, lastLockedFn, lastLockedLine, fnName, line);
-       }
 #endif
+       }
 #endif //!CONFIG_FREERTOS_UNICORE
 }