Re: [RFC][PATCH 1/2] locking: Introduce __cleanup__ based guards

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 5/26/23 11:05, Peter Zijlstra wrote:
Use __attribute__((__cleanup__(func))) to buid various guards:

  - ptr_guard()
  - void_guard() / void_scope()
  - lock_guard() / lock_scope()
  - double_lock_guard() / double_lock_scope()

Where the _guard thingies are variables with scope-based cleanup and
the _scope thingies are basically do-once for-loops with the same.

The CPP is rather impenetrable -- but I'll attempt to write proper
comments if/when people think this is worth pursuing.

Actual usage in the next patch

Signed-off-by: Peter Zijlstra (Intel) <peterz@xxxxxxxxxxxxx>
---
  include/linux/compiler_attributes.h |    2
  include/linux/irqflags.h            |    7 ++
  include/linux/guards.h          |  118 ++++++++++++++++++++++++++++++++++++
  include/linux/mutex.h               |    5 +
  include/linux/preempt.h             |    4 +
  include/linux/rcupdate.h            |    3
  include/linux/sched/task.h          |    2
  include/linux/spinlock.h            |   23 +++++++
  8 files changed, 164 insertions(+)

That is an interesting idea and may help to simplify some of the common code patterns that we have in the kernel. The macros are a bit hard to read and understand though I thought I got a rough idea of what they are trying to do.

BTW, do we have a use case for double_lock_guard/double_lock_scope? I can envision a nested lock_scope inside a lock_scope, but taking 2 auto locks of the same type at init time and then unlock them at exit just doesn't make sense to me.

Cheers,
Longman




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux