All of lore.kernel.org
 help / color / mirror / Atom feed
* [KJ] [PATCH 20/21] polling loops: change exit condition to
@ 2005-12-04  0:24 Marcin Slusarz
  2005-12-04  4:15 ` Jesper Juhl
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Marcin Slusarz @ 2005-12-04  0:24 UTC (permalink / raw)
  To: kernel-janitors

who is responsible for those files?

Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
diff -upr -X linux-2.6.15-rc4/Documentation/dontdiff linux-2.6.15-rc4-orig/drivers/serial/icom.c linux-2.6.15-rc4/drivers/serial/icom.c
--- linux-2.6.15-rc4-orig/drivers/serial/icom.c	2005-11-20 16:53:29.000000000 +0100
+++ linux-2.6.15-rc4/drivers/serial/icom.c	2005-12-03 16:53:10.000000000 +0100
@@ -350,6 +350,7 @@ static void load_code(struct icom_port *
 	unsigned char *new_page = NULL;
 	unsigned char cable_id = NO_CABLE;
 	struct pci_dev *dev = icom_port->adapter->pci_dev;
+	unsigned long end_time;
 
 	/* Clear out any pending interrupts */
 	writew(0x3FFF, icom_port->int_reg);
@@ -461,13 +462,14 @@ static void load_code(struct icom_port *
 	writeb(START_DOWNLOAD, &icom_port->dram->sync);
 
 	/* Wait max 1 Sec for data download and processor to start */
-	for (index = 0; index < 10; index++) {
+	end_time = jiffies + msecs_to_jiffies(1000);
+	while (time_before(jiffies, end_time)) {
 		msleep(100);
 		if (readb(&icom_port->dram->misc_flags) & ICOM_HDW_ACTIVE)
 			break;
 	}
 
-	if (index = 10)
+	if (time_after_eq(jiffies, end_time))
 		status = -1;
 
 	/*
@@ -1015,11 +1017,13 @@ static void icom_send_xchar(struct uart_
 	unsigned char xdata;
 	int index;
 	unsigned long flags;
+	unsigned long end_time;
 
 	trace(ICOM_PORT, "SEND_XCHAR", ch);
 
 	/* wait .1 sec to send char */
-	for (index = 0; index < 10; index++) {
+	end_time = jiffies + msecs_to_jiffies(100);
+	while (time_before(jiffies, end_time)) {
 		spin_lock_irqsave(&port->lock, flags);
 		xdata = readb(&ICOM_PORT->dram->xchar);
 		if (xdata = 0x00) {
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors

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

* Re: [KJ] [PATCH 20/21] polling loops: change exit condition to
  2005-12-04  0:24 [KJ] [PATCH 20/21] polling loops: change exit condition to Marcin Slusarz
@ 2005-12-04  4:15 ` Jesper Juhl
  2005-12-04  5:06 ` Roland Dreier
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Jesper Juhl @ 2005-12-04  4:15 UTC (permalink / raw)
  To: kernel-janitors

On 12/4/05, Marcin Slusarz <marcin.slusarz@gmail.com> wrote:
> who is responsible for those files?
>
> Signed-off-by: Marcin Slusarz <marcin.slusarz@gmail.com>
> diff -upr -X linux-2.6.15-rc4/Documentation/dontdiff linux-2.6.15-rc4-orig/drivers/serial/icom.c linux-2.6.15-rc4/drivers/serial/icom.c
> --- linux-2.6.15-rc4-orig/drivers/serial/icom.c 2005-11-20 16:53:29.000000000 +0100
> +++ linux-2.6.15-rc4/drivers/serial/icom.c      2005-12-03 16:53:10.000000000 +0100
> @@ -350,6 +350,7 @@ static void load_code(struct icom_port *
>         unsigned char *new_page = NULL;
>         unsigned char cable_id = NO_CABLE;
>         struct pci_dev *dev = icom_port->adapter->pci_dev;
> +       unsigned long end_time;
>
>         /* Clear out any pending interrupts */
>         writew(0x3FFF, icom_port->int_reg);
> @@ -461,13 +462,14 @@ static void load_code(struct icom_port *
>         writeb(START_DOWNLOAD, &icom_port->dram->sync);
>
>         /* Wait max 1 Sec for data download and processor to start */
> -       for (index = 0; index < 10; index++) {
> +       end_time = jiffies + msecs_to_jiffies(1000);
> +       while (time_before(jiffies, end_time)) {
>                 msleep(100);
>                 if (readb(&icom_port->dram->misc_flags) & ICOM_HDW_ACTIVE)
>                         break;
>         }
>
> -       if (index = 10)
> +       if (time_after_eq(jiffies, end_time))
>                 status = -1;
>
>         /*
> @@ -1015,11 +1017,13 @@ static void icom_send_xchar(struct uart_
>         unsigned char xdata;
>         int index;
>         unsigned long flags;
> +       unsigned long end_time;
>
>         trace(ICOM_PORT, "SEND_XCHAR", ch);
>
>         /* wait .1 sec to send char */
> -       for (index = 0; index < 10; index++) {
> +       end_time = jiffies + msecs_to_jiffies(100);
> +       while (time_before(jiffies, end_time)) {
>                 spin_lock_irqsave(&port->lock, flags);
>                 xdata = readb(&ICOM_PORT->dram->xchar);
>                 if (xdata = 0x00) {

Why add a new variable in this second part of the patch? end_time is
only used once,so you could just do
  while (time_before(jiffies, jiffies + msecs_to_jiffies(100))) {

Adding a new variable end_time in the first part of the patch makes
sense since you use it more than once, but in the second part I don't
see a need for it - I'd say save the extra variable and also save the
assignment to it.

--
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors

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

* Re: [KJ] [PATCH 20/21] polling loops: change exit condition to
  2005-12-04  0:24 [KJ] [PATCH 20/21] polling loops: change exit condition to Marcin Slusarz
  2005-12-04  4:15 ` Jesper Juhl
@ 2005-12-04  5:06 ` Roland Dreier
  2005-12-04  5:09 ` Jesper Juhl
  2005-12-04 10:55 ` Marcin Slusarz
  3 siblings, 0 replies; 5+ messages in thread
From: Roland Dreier @ 2005-12-04  5:06 UTC (permalink / raw)
  To: kernel-janitors

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

 > Why add a new variable in this second part of the patch? end_time is
 > only used once,so you could just do
 >   while (time_before(jiffies, jiffies + msecs_to_jiffies(100))) {

Umm, think about it... how could that loop ever exit?

The end_time has to be computed before the loop starts and then not
change again.

With that said I'm not sure that these patches are a good idea.  For
example, what if in the code below:

>         /* Wait max 1 Sec for data download and processor to start */
> -       for (index = 0; index < 10; index++) {
> +       end_time = jiffies + msecs_to_jiffies(1000);

this gets preempted for a while and never even enters the loop below:

> +       while (time_before(jiffies, end_time)) {
>                 msleep(100);

then the function will fail without even checking the hardware once.

 - R.

[-- Attachment #2: Type: text/plain, Size: 168 bytes --]

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors

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

* Re: [KJ] [PATCH 20/21] polling loops: change exit condition to
  2005-12-04  0:24 [KJ] [PATCH 20/21] polling loops: change exit condition to Marcin Slusarz
  2005-12-04  4:15 ` Jesper Juhl
  2005-12-04  5:06 ` Roland Dreier
@ 2005-12-04  5:09 ` Jesper Juhl
  2005-12-04 10:55 ` Marcin Slusarz
  3 siblings, 0 replies; 5+ messages in thread
From: Jesper Juhl @ 2005-12-04  5:09 UTC (permalink / raw)
  To: kernel-janitors

On 12/4/05, Roland Dreier <roland@digitalvampire.org> wrote:
>  > Why add a new variable in this second part of the patch? end_time is
>  > only used once,so you could just do
>  >   while (time_before(jiffies, jiffies + msecs_to_jiffies(100))) {
>
> Umm, think about it... how could that loop ever exit?
>
Ouch, you are right. I was not thinking straight.


--
Jesper Juhl <jesper.juhl@gmail.com>
Don't top-post  http://www.catb.org/~esr/jargon/html/T/top-post.html
Plain text mails only, please      http://www.expita.com/nomime.html

_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors

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

* Re: [KJ] [PATCH 20/21] polling loops: change exit condition to
  2005-12-04  0:24 [KJ] [PATCH 20/21] polling loops: change exit condition to Marcin Slusarz
                   ` (2 preceding siblings ...)
  2005-12-04  5:09 ` Jesper Juhl
@ 2005-12-04 10:55 ` Marcin Slusarz
  3 siblings, 0 replies; 5+ messages in thread
From: Marcin Slusarz @ 2005-12-04 10:55 UTC (permalink / raw)
  To: kernel-janitors

Roland Dreier wrote:
> The end_time has to be computed before the loop starts and then not
> change again.
> 
> With that said I'm not sure that these patches are a good idea.  For
> example, what if in the code below:
> 
> 
>>        /* Wait max 1 Sec for data download and processor to start */
>>-       for (index = 0; index < 10; index++) {
>>+       end_time = jiffies + msecs_to_jiffies(1000);
> 
> 
> this gets preempted for a while and never even enters the loop below:
> 
> 
>>+       while (time_before(jiffies, end_time)) {
>>                msleep(100);
> 
> 
> then the function will fail without even checking the hardware once.

ok, so maybe while loops should be changed to do while loops?

ps: does anyone know why i don't get my own emails? (i checked subscription
page and everything is fine there)

regards,
Marcin
_______________________________________________
Kernel-janitors mailing list
Kernel-janitors@lists.osdl.org
https://lists.osdl.org/mailman/listinfo/kernel-janitors

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

end of thread, other threads:[~2005-12-04 10:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-12-04  0:24 [KJ] [PATCH 20/21] polling loops: change exit condition to Marcin Slusarz
2005-12-04  4:15 ` Jesper Juhl
2005-12-04  5:06 ` Roland Dreier
2005-12-04  5:09 ` Jesper Juhl
2005-12-04 10:55 ` Marcin Slusarz

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.