On 13/04/2022 06.56, [EXT] 王斌 wrote:
Hi:
See lock_hash in h_table.c:
Flowing lines of code do not guarantee atomicity and I think it is not
safe:
-atomic_get(&_tm_table->entries[i].locker_pid) != mypid
-lock(&_tm_table->entries[i].mutex)
-atomic_set(&_tm_table->entries[i].locker_pid, mypid)
Not my code, but I would say it is safe, because the only race condition
you could possibly encounter where it would make a difference is when
atomic_get(&locker_pid) returns a value other than mypid (true
condition) and is then subsequently set to mypid by a different thread
before the mutex can be acquired (flipping the condition to false),
which cannot happen because all threads have different PIDs.
Cheers