All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP
@ 2017-02-22  9:10 simran singhal
  2017-02-22  9:27 ` [Outreachy kernel] " Julia Lawall
  0 siblings, 1 reply; 5+ messages in thread
From: simran singhal @ 2017-02-22  9:10 UTC (permalink / raw)
  To: gregkh; +Cc: devel, linux-kernel, outreachy-kernel

The macro DIV_ROUND_UP performs the computation (((n) + (d) - 1) /(d)).
It clarifies the divisor calculations. This occurence was detected using
the coccinelle script:

@@
expression e1;
expression e2;
@@
(
- ((e1) + e2 - 1) / (e2)
+ DIV_ROUND_UP(e1,e2)
|
- ((e1) + (e2 - 1)) / (e2)
+ DIV_ROUND_UP(e1,e2)
)

Signed-off-by: simran singhal <singhalsimran0@gmail.com>
---
 
 v2:
   -Included kernel.h as DIV_ROUND_UP is defined in it,
    before it was giving compilation error.

 drivers/staging/most/hdm-dim2/dim2_hal.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/drivers/staging/most/hdm-dim2/dim2_hal.c b/drivers/staging/most/hdm-dim2/dim2_hal.c
index 0b9816c..d604ec09 100644
--- a/drivers/staging/most/hdm-dim2/dim2_hal.c
+++ b/drivers/staging/most/hdm-dim2/dim2_hal.c
@@ -18,6 +18,7 @@
 #include "dim2_errors.h"
 #include "dim2_reg.h"
 #include <linux/stddef.h>
+#include <linux/kernel.h>
 
 /*
  * Size factor for isochronous DBR buffer.
@@ -49,7 +50,7 @@
 #define DBR_SIZE  (16 * 1024) /* specified by IP */
 #define DBR_BLOCK_SIZE  (DBR_SIZE / 32 / DBR_MAP_SIZE)
 
-#define ROUND_UP_TO(x, d)  (((x) + (d) - 1) / (d) * (d))
+#define ROUND_UP_TO(x, d)  (DIV_ROUND_UP(x, (d)) * (d))
 
 /* -------------------------------------------------------------------------- */
 /* generic helper functions and macros */
@@ -117,7 +118,7 @@ static int alloc_dbr(u16 size)
 		return DBR_SIZE; /* out of memory */
 
 	for (i = 0; i < DBR_MAP_SIZE; i++) {
-		u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / DBR_BLOCK_SIZE;
+		u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE);
 		u32 mask = ~((~(u32)0) << blocks);
 
 		do {
@@ -137,7 +138,7 @@ static int alloc_dbr(u16 size)
 static void free_dbr(int offs, int size)
 {
 	int block_idx = offs / DBR_BLOCK_SIZE;
-	u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / DBR_BLOCK_SIZE;
+	u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE);
 	u32 mask = ~((~(u32)0) << blocks);
 
 	mask <<= block_idx % 32;
-- 
2.7.4



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

* Re: [Outreachy kernel] [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP
  2017-02-22  9:10 [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP simran singhal
@ 2017-02-22  9:27 ` Julia Lawall
  2017-02-22 10:07   ` Joe Perches
  2017-02-22 11:31   ` SIMRAN SINGHAL
  0 siblings, 2 replies; 5+ messages in thread
From: Julia Lawall @ 2017-02-22  9:27 UTC (permalink / raw)
  To: simran singhal; +Cc: gregkh, devel, linux-kernel, outreachy-kernel

> @@ -117,7 +118,7 @@ static int alloc_dbr(u16 size)
>  		return DBR_SIZE; /* out of memory */
>
>  	for (i = 0; i < DBR_MAP_SIZE; i++) {
> -		u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / DBR_BLOCK_SIZE;
> +		u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE);
>  		u32 mask = ~((~(u32)0) << blocks);

Totally unrelated to DIV_ROUND_UP, would this code be a candidate for
GENMASK?

julia

>
>  		do {
> @@ -137,7 +138,7 @@ static int alloc_dbr(u16 size)
>  static void free_dbr(int offs, int size)
>  {
>  	int block_idx = offs / DBR_BLOCK_SIZE;
> -	u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / DBR_BLOCK_SIZE;
> +	u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE);
>  	u32 mask = ~((~(u32)0) << blocks);
>
>  	mask <<= block_idx % 32;
> --
> 2.7.4
>
> --
> You received this message because you are subscribed to the Google Groups "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to outreachy-kernel+unsubscribe@googlegroups.com.
> To post to this group, send email to outreachy-kernel@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/outreachy-kernel/20170222091015.GA11058%40singhal-Inspiron-5558.
> For more options, visit https://groups.google.com/d/optout.
>


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

* Re: [Outreachy kernel] [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP
  2017-02-22  9:27 ` [Outreachy kernel] " Julia Lawall
@ 2017-02-22 10:07   ` Joe Perches
  2017-02-22 11:31   ` SIMRAN SINGHAL
  1 sibling, 0 replies; 5+ messages in thread
From: Joe Perches @ 2017-02-22 10:07 UTC (permalink / raw)
  To: Julia Lawall, simran singhal
  Cc: gregkh, devel, linux-kernel, outreachy-kernel

On Wed, 2017-02-22 at 10:27 +0100, Julia Lawall wrote:
> > @@ -117,7 +118,7 @@ static int alloc_dbr(u16 size)
> >  		return DBR_SIZE; /* out of memory */
> > 
> >  	for (i = 0; i < DBR_MAP_SIZE; i++) {
> > -		u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / DBR_BLOCK_SIZE;
> > +		u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE);
> >  		u32 mask = ~((~(u32)0) << blocks);
> 
> Totally unrelated to DIV_ROUND_UP, would this code be a candidate for
> GENMASK?

Maybe "(1 << blocks) - 1" would be more intelligible.



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

* Re: [Outreachy kernel] [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP
  2017-02-22  9:27 ` [Outreachy kernel] " Julia Lawall
  2017-02-22 10:07   ` Joe Perches
@ 2017-02-22 11:31   ` SIMRAN SINGHAL
  2017-02-22 11:36     ` Julia Lawall
  1 sibling, 1 reply; 5+ messages in thread
From: SIMRAN SINGHAL @ 2017-02-22 11:31 UTC (permalink / raw)
  To: outreachy-kernel; +Cc: singhalsimran0, gregkh, devel, linux-kernel


[-- Attachment #1.1: Type: text/plain, Size: 1653 bytes --]



On Wednesday, February 22, 2017 at 2:57:17 PM UTC+5:30, Julia Lawall wrote:
>
> > @@ -117,7 +118,7 @@ static int alloc_dbr(u16 size) 
> >                  return DBR_SIZE; /* out of memory */ 
> > 
> >          for (i = 0; i < DBR_MAP_SIZE; i++) { 
> > -                u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / 
> DBR_BLOCK_SIZE; 
> > +                u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE); 
> >                  u32 mask = ~((~(u32)0) << blocks); 
>
> Totally unrelated to DIV_ROUND_UP, would this code be a candidate for 
> GENMASK? 
>
 

> Not sure, what you are trying to say.
>
 

julia 
>
> > 
> >                  do { 
> > @@ -137,7 +138,7 @@ static int alloc_dbr(u16 size) 
> >  static void free_dbr(int offs, int size) 
> >  { 
> >          int block_idx = offs / DBR_BLOCK_SIZE; 
> > -        u32 const blocks = (size + DBR_BLOCK_SIZE - 1) / 
> DBR_BLOCK_SIZE; 
> > +        u32 const blocks = DIV_ROUND_UP(size, DBR_BLOCK_SIZE); 
> >          u32 mask = ~((~(u32)0) << blocks); 
> > 
> >          mask <<= block_idx % 32; 
> > -- 
> > 2.7.4 
> > 
> > -- 
> > You received this message because you are subscribed to the Google 
> Groups "outreachy-kernel" group. 
> > To unsubscribe from this group and stop receiving emails from it, send 
> an email to outreachy-kern...@googlegroups.com <javascript:>. 
> > To post to this group, send email to outreach...@googlegroups.com 
> <javascript:>. 
> > To view this discussion on the web visit 
> https://groups.google.com/d/msgid/outreachy-kernel/20170222091015.GA11058%40singhal-Inspiron-5558. 
>
> > For more options, visit https://groups.google.com/d/optout. 
> > 
>

[-- Attachment #1.2: Type: text/html, Size: 3487 bytes --]

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

* Re: [Outreachy kernel] [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP
  2017-02-22 11:31   ` SIMRAN SINGHAL
@ 2017-02-22 11:36     ` Julia Lawall
  0 siblings, 0 replies; 5+ messages in thread
From: Julia Lawall @ 2017-02-22 11:36 UTC (permalink / raw)
  To: SIMRAN SINGHAL; +Cc: outreachy-kernel, gregkh, devel, linux-kernel

[-- Attachment #1: Type: text/plain, Size: 2945 bytes --]



On Wed, 22 Feb 2017, SIMRAN SINGHAL wrote:

>
>
> On Wednesday, February 22, 2017 at 2:57:17 PM UTC+5:30, Julia Lawall wrote:
>       > @@ -117,7 +118,7 @@ static int alloc_dbr(u16 size)
>       >                  return DBR_SIZE; /* out of memory */
>       >
>       >          for (i = 0; i < DBR_MAP_SIZE; i++) {
>       > -                u32 const blocks = (size + DBR_BLOCK_SIZE -
>       1) / DBR_BLOCK_SIZE;
>       > +                u32 const blocks = DIV_ROUND_UP(size,
>       DBR_BLOCK_SIZE);
>       >                  u32 mask = ~((~(u32)0) << blocks);
>
>       Totally unrelated to DIV_ROUND_UP, would this code be a
>       candidate for
>       GENMASK?
>
>  
>       Not sure, what you are trying to say.

There was a discussion on the list recently about GENMASK, which allows to
create a mask containing a sequence of 1s, like 000011110000.  It looks
like that is what is being done here, because ~0 is 11111111 and then it
ie being shifted left and all the bits inverted.  But Joe had another
suggestion.  One could double check that his suggestion gives the right
result.

julia

>
>  
>
>       julia
>
>       >
>       >                  do {
>       > @@ -137,7 +138,7 @@ static int alloc_dbr(u16 size)
>       >  static void free_dbr(int offs, int size)
>       >  {
>       >          int block_idx = offs / DBR_BLOCK_SIZE;
>       > -        u32 const blocks = (size + DBR_BLOCK_SIZE - 1) /
>       DBR_BLOCK_SIZE;
>       > +        u32 const blocks = DIV_ROUND_UP(size,
>       DBR_BLOCK_SIZE);
>       >          u32 mask = ~((~(u32)0) << blocks);
>       >
>       >          mask <<= block_idx % 32;
>       > --
>       > 2.7.4
>       >
>       > --
>       > You received this message because you are subscribed to the
>       Google Groups "outreachy-kernel" group.
>       > To unsubscribe from this group and stop receiving emails from
>       it, send an email to outreachy-kern...@googlegroups.com.
>       > To post to this group, send email to
>       outreach...@googlegroups.com.
>       > To view this discussion on the web visithttps://groups.google.com/d/msgid/outreachy-kernel/20170222091015.GA11058%4
>       0singhal-Inspiron-5558.
>       > For more options, visit https://groups.google.com/d/optout.
>       >
>
> --
> You received this message because you are subscribed to the Google Groups
> "outreachy-kernel" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to outreachy-kernel+unsubscribe@googlegroups.com.
> To post to this group, send email to outreachy-kernel@googlegroups.com.
> To view this discussion on the web visithttps://groups.google.com/d/msgid/outreachy-kernel/d1716b00-a408-4f3c-8c17-
> 04a70acca4dd%40googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>
>

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

end of thread, other threads:[~2017-02-22 11:38 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-02-22  9:10 [PATCH v2 2/7] staging: most: Using macro DIV_ROUND_UP simran singhal
2017-02-22  9:27 ` [Outreachy kernel] " Julia Lawall
2017-02-22 10:07   ` Joe Perches
2017-02-22 11:31   ` SIMRAN SINGHAL
2017-02-22 11:36     ` Julia Lawall

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.