We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hi,Master:
Question 1:
As shown in the figure below, why does the api read this variable with critical protection?
Question 2:
Suppose two tasks have write operations to shared variables. For example:
int var; void task1(void) { OS_ENTER_CRITICAL(); var = 1; OS_EXIT_CRITICAL(); } void task2(void) { OS_ENTER_CRITICAL(); var = 2; OS_EXIT_CRITICAL(); }
In the OS source code, you can see that a critical section must be added to the shared variable write operation. There is no read-modify-write, and it should not cause a race condition. Why do you need to add a critical section?
Question 3:
If the compiler has done level optimization, there may be a write cache for variable writes. In this case, should the DSB data synchronization barrier be increased after the variable is written in the critical section? I don’t know when to use DSB, ISB, etc. instructions
Thank you very much.