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
|
/* Stores the thread that holds the lock with the locking CPU
|
||||||
* ID in the bottom two bits.
|
* ID in the bottom two bits.
|
||||||
*/
|
*/
|
||||||
size_t thread_cpu;
|
uintptr_t thread_cpu;
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -727,7 +727,7 @@ bool z_spin_lock_valid(struct k_spinlock *l)
|
||||||
|
|
||||||
bool z_spin_unlock_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;
|
return false;
|
||||||
}
|
}
|
||||||
l->thread_cpu = 0;
|
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)
|
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
|
#endif
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue