浏览代码

freertos: Remove either one or two assertions from "fast path" of vPortCPUReleaseMutex()

Saves a few cycles by only testing the count validity once, and never for the common case where the
mutex was not recursively locked.
Angus Gratton 7 年之前
父节点
当前提交
6e4b0c3e2f
共有 1 个文件被更改,包括 3 次插入5 次删除
  1. 3 5
      components/freertos/portmux_impl.inc.h

+ 3 - 5
components/freertos/portmux_impl.inc.h

@@ -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
 }