Linux s390 Architecture development
 help / color / mirror / Atom feed
* [PATCH 0/7] bitops: introduce for_each_clear_bit()
@ 2012-01-13 15:53 Akinobu Mita
  2012-01-13 15:53 ` [PATCH 3/7] bitops: introduce list_for_each_clear_bit Akinobu Mita
  2012-01-13 15:53 ` [PATCH 5/7] s390/char: use for_each_clear_bit Akinobu Mita
  0 siblings, 2 replies; 5+ messages in thread
From: Akinobu Mita @ 2012-01-13 15:53 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: linux-s390, linux-usb, Robert Richter, x86, Heiko Carstens,
	Akinobu Mita, Ingo Molnar, linux-mtd, H. Peter Anvin,
	Martin Schwidefsky, linux390, Thomas Gleixner, David Woodhouse

This patch set introduces for_each_clear_bit() which is similar to
for_each_set_bit(), but it iterates over all the cleared bits in a
memory region.

This also renames for_each_set_bit_cont() to for_each_set_bit_from()
because it is anologous to list_for_each_entry_from() in list.h
rather than list_for_each_entry_continue(), and then introduces
for_each_clear_bit_from(), too.

Akinobu Mita (7):
  bitops: rename for_each_set_bit_cont in favor of anologous to list.h
    function
  bitops: remove for_each_set_bit_cont
  bitops: introduce list_for_each_clear_bit
  mtd: use for_each_clear_bit
  s390/char: use for_each_clear_bit
  uwb: use for_each_clear_bit
  x86: use for_each_clear_bit_from

 arch/x86/kernel/cpu/perf_event.c       |    4 ++--
 arch/x86/kernel/irqinit.c              |    6 +++---
 drivers/mtd/chips/cfi_cmdset_0001.c    |    6 ++----
 drivers/s390/char/sclp_cmd.c           |    5 ++---
 drivers/uwb/allocator.c                |    6 ++----
 include/linux/bitops.h                 |   13 ++++++++++++-
 tools/perf/util/include/linux/bitops.h |    2 +-
 7 files changed, 24 insertions(+), 18 deletions(-)

Cc: Robert Richter <robert.richter@amd.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: linux-mtd@lists.infradead.org
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
Cc: linux-usb@vger.kernel.org

-- 
1.7.4.4

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [PATCH 3/7] bitops: introduce list_for_each_clear_bit
  2012-01-13 15:53 [PATCH 0/7] bitops: introduce for_each_clear_bit() Akinobu Mita
@ 2012-01-13 15:53 ` Akinobu Mita
  2012-01-13 17:16   ` Sergei Shtylyov
  2012-01-13 15:53 ` [PATCH 5/7] s390/char: use for_each_clear_bit Akinobu Mita
  1 sibling, 1 reply; 5+ messages in thread
From: Akinobu Mita @ 2012-01-13 15:53 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: linux-s390, linux-usb, Robert Richter, x86, Heiko Carstens,
	Akinobu Mita, Ingo Molnar, linux-mtd, H. Peter Anvin,
	Martin Schwidefsky, linux390, Thomas Gleixner, David Woodhouse

Introduce list_for_each_clear_bit() and list_for_each_clear_bit_from().
They are similar to for_each_set_bit() and list_for_each_set_bit_from(),
but they iterate over all the cleared bits in a memory region.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Robert Richter <robert.richter@amd.com>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: Ingo Molnar <mingo@redhat.com>
Cc: "H. Peter Anvin" <hpa@zytor.com>
Cc: x86@kernel.org
Cc: David Woodhouse <dwmw2@infradead.org>
Cc: linux-mtd@lists.infradead.org
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
Cc: linux-usb@vger.kernel.org
---
 include/linux/bitops.h |   11 +++++++++++
 1 files changed, 11 insertions(+), 0 deletions(-)

diff --git a/include/linux/bitops.h b/include/linux/bitops.h
index 15ad702..c8a0d65 100644
--- a/include/linux/bitops.h
+++ b/include/linux/bitops.h
@@ -32,6 +32,17 @@ extern unsigned long __sw_hweight64(__u64 w);
 	     (bit) < (size);					\
 	     (bit) = find_next_bit((addr), (size), (bit) + 1))
 
+#define for_each_clear_bit(bit, addr, size) \
+	for ((bit) = find_first_zero_bit((addr), (size));	\
+	     (bit) < (size);					\
+	     (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
+
+/* same as for_each_clear_bit() but use bit as value to start with */
+#define for_each_clear_bit_from(bit, addr, size) \
+	for ((bit) = find_next_zero_bit((addr), (size), (bit));	\
+	     (bit) < (size);					\
+	     (bit) = find_next_zero_bit((addr), (size), (bit) + 1))
+
 static __inline__ int get_bitmask_order(unsigned int count)
 {
 	int order;
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* [PATCH 5/7] s390/char: use for_each_clear_bit
  2012-01-13 15:53 [PATCH 0/7] bitops: introduce for_each_clear_bit() Akinobu Mita
  2012-01-13 15:53 ` [PATCH 3/7] bitops: introduce list_for_each_clear_bit Akinobu Mita
@ 2012-01-13 15:53 ` Akinobu Mita
  1 sibling, 0 replies; 5+ messages in thread
From: Akinobu Mita @ 2012-01-13 15:53 UTC (permalink / raw)
  To: linux-kernel, akpm
  Cc: Akinobu Mita, Martin Schwidefsky, Heiko Carstens, linux390,
	linux-s390

Use for_each_clear_bit() to iterate over all the cleared bit in a
memory region.

Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Cc: Martin Schwidefsky <schwidefsky@de.ibm.com>
Cc: Heiko Carstens <heiko.carstens@de.ibm.com>
Cc: linux390@de.ibm.com
Cc: linux-s390@vger.kernel.org
---
 drivers/s390/char/sclp_cmd.c |    5 ++---
 1 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/s390/char/sclp_cmd.c b/drivers/s390/char/sclp_cmd.c
index 0b54a91..168525a 100644
--- a/drivers/s390/char/sclp_cmd.c
+++ b/drivers/s390/char/sclp_cmd.c
@@ -441,9 +441,8 @@ static int sclp_mem_notifier(struct notifier_block *nb,
 	start = arg->start_pfn << PAGE_SHIFT;
 	size = arg->nr_pages << PAGE_SHIFT;
 	mutex_lock(&sclp_mem_mutex);
-	for (id = 0; id <= sclp_max_storage_id; id++)
-		if (!test_bit(id, sclp_storage_ids))
-			sclp_attach_storage(id);
+	for_each_clear_bit(id, sclp_storage_ids, sclp_max_storage_id + 1)
+		sclp_attach_storage(id);
 	switch (action) {
 	case MEM_ONLINE:
 	case MEM_GOING_OFFLINE:
-- 
1.7.4.4

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/7] bitops: introduce list_for_each_clear_bit
  2012-01-13 15:53 ` [PATCH 3/7] bitops: introduce list_for_each_clear_bit Akinobu Mita
@ 2012-01-13 17:16   ` Sergei Shtylyov
  2012-01-13 23:36     ` Akinobu Mita
  0 siblings, 1 reply; 5+ messages in thread
From: Sergei Shtylyov @ 2012-01-13 17:16 UTC (permalink / raw)
  To: Akinobu Mita
  Cc: linux-s390, linux-usb, Robert Richter, x86, Heiko Carstens,
	linux-kernel, Ingo Molnar, linux-mtd, H. Peter Anvin,
	Martin Schwidefsky, linux390, akpm, David Woodhouse,
	Thomas Gleixner

Hello.

On 01/13/2012 06:53 PM, Akinobu Mita wrote:

> Introduce list_for_each_clear_bit() and list_for_each_clear_bit_from().

    It seems you've got somewhat muddled -- you're actually introducing 
for_each_clear_bit() and for_each_clear_bit_from()

> They are similar to for_each_set_bit() and list_for_each_set_bit_from(),
> but they iterate over all the cleared bits in a memory region.

> Signed-off-by: Akinobu Mita<akinobu.mita@gmail.com>
> Cc: Robert Richter<robert.richter@amd.com>
> Cc: Thomas Gleixner<tglx@linutronix.de>
> Cc: Ingo Molnar<mingo@redhat.com>
> Cc: "H. Peter Anvin"<hpa@zytor.com>
> Cc: x86@kernel.org
> Cc: David Woodhouse<dwmw2@infradead.org>
> Cc: linux-mtd@lists.infradead.org
> Cc: Martin Schwidefsky<schwidefsky@de.ibm.com>
> Cc: Heiko Carstens<heiko.carstens@de.ibm.com>
> Cc: linux390@de.ibm.com
> Cc: linux-s390@vger.kernel.org
> Cc: linux-usb@vger.kernel.org

WBR, Sergei

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [PATCH 3/7] bitops: introduce list_for_each_clear_bit
  2012-01-13 17:16   ` Sergei Shtylyov
@ 2012-01-13 23:36     ` Akinobu Mita
  0 siblings, 0 replies; 5+ messages in thread
From: Akinobu Mita @ 2012-01-13 23:36 UTC (permalink / raw)
  To: Sergei Shtylyov
  Cc: linux-s390, linux-usb, Robert Richter, x86, Heiko Carstens,
	linux-kernel, Ingo Molnar, linux-mtd, H. Peter Anvin,
	Martin Schwidefsky, linux390, akpm, David Woodhouse,
	Thomas Gleixner

2012/1/14 Sergei Shtylyov <sshtylyov@mvista.com>:
> Hello.
>
> On 01/13/2012 06:53 PM, Akinobu Mita wrote:
>
>> Introduce list_for_each_clear_bit() and list_for_each_clear_bit_from().
>
>
>   It seems you've got somewhat muddled -- you're actually introducing
> for_each_clear_bit() and for_each_clear_bit_from()

Oops, thanks for a notification.

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2012-01-13 23:36 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-01-13 15:53 [PATCH 0/7] bitops: introduce for_each_clear_bit() Akinobu Mita
2012-01-13 15:53 ` [PATCH 3/7] bitops: introduce list_for_each_clear_bit Akinobu Mita
2012-01-13 17:16   ` Sergei Shtylyov
2012-01-13 23:36     ` Akinobu Mita
2012-01-13 15:53 ` [PATCH 5/7] s390/char: use for_each_clear_bit Akinobu Mita

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox