mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2025-08-24 23:41:23 +01:00

The current implementation of SPIN_LOCK_INIT() provides the spinlock to be initialized as reference. This does not allow a direct initialization of the spinlock object at the creation site. Let's pass the spinlock directly instead (like Linux does as well) and adjust all users of the macro (in fact there is only one user). Signed-off-by: Christoph Muellner <cmuellner@linux.com> Reviewed-by: Anup Patel <anup.patel@wdc.com>
35 lines
658 B
C
35 lines
658 B
C
/*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*
|
|
* Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
*
|
|
* Authors:
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
*/
|
|
|
|
#ifndef __RISCV_LOCKS_H__
|
|
#define __RISCV_LOCKS_H__
|
|
|
|
typedef struct {
|
|
volatile long lock;
|
|
} spinlock_t;
|
|
|
|
#define __RISCV_SPIN_UNLOCKED 0
|
|
|
|
#define SPIN_LOCK_INIT(x) (x).lock = __RISCV_SPIN_UNLOCKED
|
|
|
|
#define SPIN_LOCK_INITIALIZER \
|
|
{ \
|
|
.lock = __RISCV_SPIN_UNLOCKED, \
|
|
}
|
|
|
|
int spin_lock_check(spinlock_t *lock);
|
|
|
|
int spin_trylock(spinlock_t *lock);
|
|
|
|
void spin_lock(spinlock_t *lock);
|
|
|
|
void spin_unlock(spinlock_t *lock);
|
|
|
|
#endif
|