From: vda <vda@port.imtp.ilyichevsk.odessa.ua>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: mathijs@knoware.nl (Mathijs Mohlmann), bulb@ucw.cz (Jan Hudec),
alan@lxorguk.ukuu.org.uk (Alan Cox),
linux-kernel@vger.kernel.org
Subject: Re: [BUG] Bad #define, nonportable C, missing {}
Date: Tue, 27 Nov 2001 16:03:54 -0200 [thread overview]
Message-ID: <01112716035401.00872@manta> (raw)
In-Reply-To: <E168SMG-0006k2-00@the-village.bc.nu>
In-Reply-To: <E168SMG-0006k2-00@the-village.bc.nu>
On Monday 26 November 2001 18:28, Alan Cox wrote:
> > > MODINC(x,y) (x = (x % y) + 1)
> >
> > drivers/message/i2o/i2o_config.c:#define MODINC(x,y) (x = x++ % y)
> >
> > Alan, can you clarify what this macro is doing?
> > What about making it less confusing?
>
> Nothing to do with me 8). I didnt write that bit of the i2o code. I agree
> its both confusing and buggy. Send a fix ?
This is a test to be sure my replacement is equivalent:
--------------------
#include <stdio.h>
#define MODINC(x,y) (x = x++ % y)
#define MODULO_INC(x,y) ((x) = ((x)%(y))+1)
int main() {
int x1=1;
int x2=1;
int y=7;
int i;
for(i=0;i<22;i++) {
printf("%d,%d -> ",x1,x2);
MODINC(x1,y);
MODULO_INC(x2,y);
printf("%d,%d\n",x1,x2);
}
}
Patch is below
--
vda
--- i2o_config.c.new Mon Oct 22 13:39:56 2001
+++ i2o_config.c.orig Tue Nov 27 16:03:19 2001
@@ -45,7 +45,7 @@
static spinlock_t i2o_config_lock = SPIN_LOCK_UNLOCKED;
struct wait_queue *i2o_wait_queue;
-#define MODINC(x,y) (x = x++ % y)
+#define MODULO_INC(x,y) ((x) = ((x)%(y))+1)
struct i2o_cfg_info
{
@@ -144,10 +144,10 @@
inf->event_q[inf->q_in].data_size);
spin_lock(&i2o_config_lock);
- MODINC(inf->q_in, I2O_EVT_Q_LEN);
+ MODULO_INC(inf->q_in, I2O_EVT_Q_LEN);
if(inf->q_len == I2O_EVT_Q_LEN)
{
- MODINC(inf->q_out, I2O_EVT_Q_LEN);
+ MODULO_INC(inf->q_out, I2O_EVT_Q_LEN);
inf->q_lost++;
}
else
@@ -803,7 +803,7 @@
}
memcpy(&kget.info, &p->event_q[p->q_out], sizeof(struct i2o_evt_info));
- MODINC(p->q_out, I2O_EVT_Q_LEN);
+ MODULO_INC(p->q_out, I2O_EVT_Q_LEN);
spin_lock_irqsave(&i2o_config_lock, flags);
p->q_len--;
kget.pending = p->q_len;
next prev parent reply other threads:[~2001-11-27 14:11 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-11-21 12:40 [BUG] Bad #define, nonportable C, missing {} vda
2001-11-21 11:10 ` Andreas Schwab
2001-11-21 11:16 ` Tim Waugh
2001-11-21 12:31 ` Ragnar Hojland Espinosa
2001-11-21 13:40 ` Jan Hudec
2001-11-21 14:19 ` Andreas Schwab
2001-11-21 14:52 ` Alexander Viro
2001-11-21 18:23 ` Neil Booth
2001-11-21 12:35 ` Vincent Sweeney
2001-11-21 13:37 ` Jan Hudec
2001-11-21 13:52 ` Mathijs Mohlmann
2001-11-21 17:12 ` vda
2001-11-26 20:28 ` Alan Cox
2001-11-27 18:03 ` vda [this message]
2001-11-27 18:38 ` Andreas Dilger
2001-11-28 13:19 ` vda
2001-11-21 14:12 ` Richard B. Johnson
2001-11-21 14:33 ` Eric W. Biederman
2001-11-21 14:56 ` Alexander Viro
2001-11-21 14:59 ` Andreas Schwab
2001-11-21 15:48 ` Momchil Velikov
2001-11-21 16:52 ` vda
2001-11-21 14:24 ` Sean Hunter
2001-11-21 14:25 ` Andreas Schwab
2001-11-22 20:43 ` Chris Gray
2001-11-22 4:24 ` Stevie O
2001-11-22 11:46 ` Horst von Brand
2001-11-22 12:03 ` Alexander Viro
2001-11-22 20:08 ` J.A. Magallon
[not found] ` <01112311540300.00886@manta>
2001-11-23 14:43 ` J.A. Magallon
-- strict thread matches above, loose matches on Subject: below --
2001-11-27 19:03 Nathan Myers
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=01112716035401.00872@manta \
--to=vda@port.imtp.ilyichevsk.odessa.ua \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=bulb@ucw.cz \
--cc=linux-kernel@vger.kernel.org \
--cc=mathijs@knoware.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.