thread_cpu: make it 64-bit compatible
This stores a combination of a pointer and a CPU number in the low 2 bits. On 64-bit systems, the pointer part won't fit in an int. Let's use uintptr_t for this purpose. Signed-off-by: Nicolas Pitre <npitre@baylibre.com>
This commit is contained in:
parent
a58a852e80
commit
0b5d9f71f2
2 changed files with 3 additions and 3 deletions
|
@ -59,7 +59,7 @@ struct k_spinlock {
|
|||
/* Stores the thread that holds the lock with the locking CPU
|
||||
* ID in the bottom two bits.
|
||||
*/
|
||||
size_t thread_cpu;
|
||||
uintptr_t thread_cpu;
|
||||
#endif
|
||||
};
|
||||
|
||||
|
|
|
@ -727,7 +727,7 @@ bool z_spin_lock_valid(struct k_spinlock *l)
|
|||
|
||||
bool z_spin_unlock_valid(struct k_spinlock *l)
|
||||
{
|
||||
if (l->thread_cpu != (_current_cpu->id | (u32_t)_current)) {
|
||||
if (l->thread_cpu != (_current_cpu->id | (uintptr_t)_current)) {
|
||||
return false;
|
||||
}
|
||||
l->thread_cpu = 0;
|
||||
|
@ -736,7 +736,7 @@ bool z_spin_unlock_valid(struct k_spinlock *l)
|
|||
|
||||
void z_spin_lock_set_owner(struct k_spinlock *l)
|
||||
{
|
||||
l->thread_cpu = _current_cpu->id | (u32_t)_current;
|
||||
l->thread_cpu = _current_cpu->id | (uintptr_t)_current;
|
||||
}
|
||||
|
||||
#endif
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue