* [PATCH] arm64: spinlock: const qualify read-only functions
2015-10-28 19:44 Ian Coolidge
@ 2015-10-28 19:44 ` Ian Coolidge
0 siblings, 0 replies; 4+ messages in thread
From: Ian Coolidge @ 2015-10-28 19:44 UTC (permalink / raw)
To: linux-arm-kernel
This allows assert_spin_locked() to be used against
spinlocks that are const qualified.
Signed-off-by: Ian Coolidge <icoolidge@google.com>
---
arch/arm64/include/asm/spinlock.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/include/asm/spinlock.h b/arch/arm64/include/asm/spinlock.h
index c85e96d..72a7f33 100644
--- a/arch/arm64/include/asm/spinlock.h
+++ b/arch/arm64/include/asm/spinlock.h
@@ -122,17 +122,17 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
: "memory");
}
-static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
+static inline int arch_spin_value_unlocked(const arch_spinlock_t lock)
{
return lock.owner == lock.next;
}
-static inline int arch_spin_is_locked(arch_spinlock_t *lock)
+static inline int arch_spin_is_locked(const arch_spinlock_t *lock)
{
return !arch_spin_value_unlocked(READ_ONCE(*lock));
}
-static inline int arch_spin_is_contended(arch_spinlock_t *lock)
+static inline int arch_spin_is_contended(const arch_spinlock_t *lock)
{
arch_spinlock_t lockval = READ_ONCE(*lock);
return (lockval.next - lockval.owner) > 1;
--
2.6.0.rc2.230.g3dd15c0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] arm: spinlock: const qualify read-only functions
@ 2015-10-29 0:47 Ian Coolidge
2015-10-29 0:47 ` [PATCH] arm64: " Ian Coolidge
2015-10-31 16:30 ` [PATCH] arm: " Ard Biesheuvel
0 siblings, 2 replies; 4+ messages in thread
From: Ian Coolidge @ 2015-10-29 0:47 UTC (permalink / raw)
To: linux-arm-kernel
This allows assert_spin_locked() to be used against
spinlocks that are const qualified.
Signed-off-by: Ian Coolidge <icoolidge@google.com>
---
arch/arm/include/asm/spinlock.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h
index 0fa4184..3512d2d 100644
--- a/arch/arm/include/asm/spinlock.h
+++ b/arch/arm/include/asm/spinlock.h
@@ -113,17 +113,17 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
dsb_sev();
}
-static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
+static inline int arch_spin_value_unlocked(const arch_spinlock_t lock)
{
return lock.tickets.owner == lock.tickets.next;
}
-static inline int arch_spin_is_locked(arch_spinlock_t *lock)
+static inline int arch_spin_is_locked(const arch_spinlock_t *lock)
{
return !arch_spin_value_unlocked(READ_ONCE(*lock));
}
-static inline int arch_spin_is_contended(arch_spinlock_t *lock)
+static inline int arch_spin_is_contended(const arch_spinlock_t *lock)
{
struct __raw_tickets tickets = READ_ONCE(lock->tickets);
return (tickets.next - tickets.owner) > 1;
--
2.6.0.rc2.230.g3dd15c0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] arm64: spinlock: const qualify read-only functions
2015-10-29 0:47 [PATCH] arm: spinlock: const qualify read-only functions Ian Coolidge
@ 2015-10-29 0:47 ` Ian Coolidge
2015-10-31 16:30 ` [PATCH] arm: " Ard Biesheuvel
1 sibling, 0 replies; 4+ messages in thread
From: Ian Coolidge @ 2015-10-29 0:47 UTC (permalink / raw)
To: linux-arm-kernel
This allows assert_spin_locked() to be used against
spinlocks that are const qualified.
Signed-off-by: Ian Coolidge <icoolidge@google.com>
---
arch/arm64/include/asm/spinlock.h | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/include/asm/spinlock.h b/arch/arm64/include/asm/spinlock.h
index c85e96d..72a7f33 100644
--- a/arch/arm64/include/asm/spinlock.h
+++ b/arch/arm64/include/asm/spinlock.h
@@ -122,17 +122,17 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
: "memory");
}
-static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
+static inline int arch_spin_value_unlocked(const arch_spinlock_t lock)
{
return lock.owner == lock.next;
}
-static inline int arch_spin_is_locked(arch_spinlock_t *lock)
+static inline int arch_spin_is_locked(const arch_spinlock_t *lock)
{
return !arch_spin_value_unlocked(READ_ONCE(*lock));
}
-static inline int arch_spin_is_contended(arch_spinlock_t *lock)
+static inline int arch_spin_is_contended(const arch_spinlock_t *lock)
{
arch_spinlock_t lockval = READ_ONCE(*lock);
return (lockval.next - lockval.owner) > 1;
--
2.6.0.rc2.230.g3dd15c0
^ permalink raw reply related [flat|nested] 4+ messages in thread
* [PATCH] arm: spinlock: const qualify read-only functions
2015-10-29 0:47 [PATCH] arm: spinlock: const qualify read-only functions Ian Coolidge
2015-10-29 0:47 ` [PATCH] arm64: " Ian Coolidge
@ 2015-10-31 16:30 ` Ard Biesheuvel
1 sibling, 0 replies; 4+ messages in thread
From: Ard Biesheuvel @ 2015-10-31 16:30 UTC (permalink / raw)
To: linux-arm-kernel
On 29 October 2015 at 01:47, Ian Coolidge <icoolidge@google.com> wrote:
> This allows assert_spin_locked() to be used against
> spinlocks that are const qualified.
>
> Signed-off-by: Ian Coolidge <icoolidge@google.com>
> ---
> arch/arm/include/asm/spinlock.h | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/arch/arm/include/asm/spinlock.h b/arch/arm/include/asm/spinlock.h
> index 0fa4184..3512d2d 100644
> --- a/arch/arm/include/asm/spinlock.h
> +++ b/arch/arm/include/asm/spinlock.h
> @@ -113,17 +113,17 @@ static inline void arch_spin_unlock(arch_spinlock_t *lock)
> dsb_sev();
> }
>
> -static inline int arch_spin_value_unlocked(arch_spinlock_t lock)
> +static inline int arch_spin_value_unlocked(const arch_spinlock_t lock)
In this case, 'lock' is passed by value, so there is really no point
in constifying it.
> {
> return lock.tickets.owner == lock.tickets.next;
> }
>
> -static inline int arch_spin_is_locked(arch_spinlock_t *lock)
> +static inline int arch_spin_is_locked(const arch_spinlock_t *lock)
> {
> return !arch_spin_value_unlocked(READ_ONCE(*lock));
> }
>
> -static inline int arch_spin_is_contended(arch_spinlock_t *lock)
> +static inline int arch_spin_is_contended(const arch_spinlock_t *lock)
> {
> struct __raw_tickets tickets = READ_ONCE(lock->tickets);
> return (tickets.next - tickets.owner) > 1;
For these remaining cases, the 'const' only enforces that these
functions may not change the state of the lock. I think this is of
limited value for single-line static inline functions such as these.
Could you explain your use case? Do you have code that only has access
to constified references to arch_spinlock_t instances?
--
Ard.
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2015-10-31 16:30 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-29 0:47 [PATCH] arm: spinlock: const qualify read-only functions Ian Coolidge
2015-10-29 0:47 ` [PATCH] arm64: " Ian Coolidge
2015-10-31 16:30 ` [PATCH] arm: " Ard Biesheuvel
-- strict thread matches above, loose matches on Subject: below --
2015-10-28 19:44 Ian Coolidge
2015-10-28 19:44 ` [PATCH] arm64: " Ian Coolidge
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).