linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
* [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).