Commit 168c626c authored by Julia Lawall's avatar Julia Lawall Committed by Mauro Carvalho Chehab

V4L/DVB (7591): drivers/media/video: use time_before, time_before_eq, etc

The functions time_before, time_before_eq, time_after, and time_after_eq
are more robust for comparing jiffies against other values.

A simplified version of the semantic patch making this change is as follows:
(http://www.emn.fr/x-info/coccinelle/)

// <smpl>
@ change_compare_np @
expression E;
@@

(
- jiffies <= E
+ time_before_eq(jiffies,E)
|
- jiffies >= E
+ time_after_eq(jiffies,E)
|
- jiffies < E
+ time_before(jiffies,E)
|
- jiffies > E
+ time_after(jiffies,E)
)

@ include depends on change_compare_np @
@@

@ no_include depends on !include && change_compare_np @
@@

  #include <linux/...>
+ #include <linux/jiffies.h>
// </smpl>
Signed-off-by: default avatarJulia Lawall <julia@diku.dk>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarHans Verkuil <hverkuil@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@infradead.org>
parent 9e05c0f0
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include <linux/videodev.h> #include <linux/videodev.h>
#include <media/v4l2-common.h> #include <media/v4l2-common.h>
#include <linux/mutex.h> #include <linux/mutex.h>
#include <linux/jiffies.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
...@@ -95,7 +96,8 @@ static unsigned int qcam_await_ready1(struct qcam_device *qcam, ...@@ -95,7 +96,8 @@ static unsigned int qcam_await_ready1(struct qcam_device *qcam,
unsigned long oldjiffies = jiffies; unsigned long oldjiffies = jiffies;
unsigned int i; unsigned int i;
for (oldjiffies = jiffies; (jiffies - oldjiffies) < msecs_to_jiffies(40); ) for (oldjiffies = jiffies;
time_before(jiffies, oldjiffies + msecs_to_jiffies(40)); )
if (qcam_ready1(qcam) == value) if (qcam_ready1(qcam) == value)
return 0; return 0;
...@@ -120,7 +122,8 @@ static unsigned int qcam_await_ready2(struct qcam_device *qcam, int value) ...@@ -120,7 +122,8 @@ static unsigned int qcam_await_ready2(struct qcam_device *qcam, int value)
unsigned long oldjiffies = jiffies; unsigned long oldjiffies = jiffies;
unsigned int i; unsigned int i;
for (oldjiffies = jiffies; (jiffies - oldjiffies) < msecs_to_jiffies(40); ) for (oldjiffies = jiffies;
time_before(jiffies, oldjiffies + msecs_to_jiffies(40)); )
if (qcam_ready2(qcam) == value) if (qcam_ready2(qcam) == value)
return 0; return 0;
......
...@@ -219,7 +219,9 @@ static struct ivtv_buffer *ivtv_get_buffer(struct ivtv_stream *s, int non_block, ...@@ -219,7 +219,9 @@ static struct ivtv_buffer *ivtv_get_buffer(struct ivtv_stream *s, int non_block,
/* Process pending program info updates and pending VBI data */ /* Process pending program info updates and pending VBI data */
ivtv_update_pgm_info(itv); ivtv_update_pgm_info(itv);
if (jiffies - itv->dualwatch_jiffies > msecs_to_jiffies(1000)) { if (time_after(jiffies,
itv->dualwatch_jiffies +
msecs_to_jiffies(1000))) {
itv->dualwatch_jiffies = jiffies; itv->dualwatch_jiffies = jiffies;
ivtv_dualwatch(itv); ivtv_dualwatch(itv);
} }
......
...@@ -177,7 +177,8 @@ static int get_mailbox(struct ivtv *itv, struct ivtv_mailbox_data *mbdata, int f ...@@ -177,7 +177,8 @@ static int get_mailbox(struct ivtv *itv, struct ivtv_mailbox_data *mbdata, int f
/* Sleep before a retry, if not atomic */ /* Sleep before a retry, if not atomic */
if (!(flags & API_NO_WAIT_MB)) { if (!(flags & API_NO_WAIT_MB)) {
if (jiffies - then > msecs_to_jiffies(10*retries)) if (time_after(jiffies,
then + msecs_to_jiffies(10*retries)))
break; break;
ivtv_msleep_timeout(10, 0); ivtv_msleep_timeout(10, 0);
} }
...@@ -244,7 +245,9 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[]) ...@@ -244,7 +245,9 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[])
data, then just return 0 as there is no need to issue this command again. data, then just return 0 as there is no need to issue this command again.
Just an optimization to prevent unnecessary use of mailboxes. */ Just an optimization to prevent unnecessary use of mailboxes. */
if (itv->api_cache[cmd].last_jiffies && if (itv->api_cache[cmd].last_jiffies &&
jiffies - itv->api_cache[cmd].last_jiffies < msecs_to_jiffies(1800000) && time_before(jiffies,
itv->api_cache[cmd].last_jiffies +
msecs_to_jiffies(1800000)) &&
!memcmp(data, itv->api_cache[cmd].data, sizeof(itv->api_cache[cmd].data))) { !memcmp(data, itv->api_cache[cmd].data, sizeof(itv->api_cache[cmd].data))) {
itv->api_cache[cmd].last_jiffies = jiffies; itv->api_cache[cmd].last_jiffies = jiffies;
return 0; return 0;
...@@ -299,7 +302,7 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[]) ...@@ -299,7 +302,7 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[])
} }
} }
while (!(readl(&mbox->flags) & IVTV_MBOX_FIRMWARE_DONE)) { while (!(readl(&mbox->flags) & IVTV_MBOX_FIRMWARE_DONE)) {
if (jiffies - then > api_timeout) { if (time_after(jiffies, then + api_timeout)) {
IVTV_DEBUG_WARN("Could not get result (%s)\n", api_info[cmd].name); IVTV_DEBUG_WARN("Could not get result (%s)\n", api_info[cmd].name);
/* reset the mailbox, but it is likely too late already */ /* reset the mailbox, but it is likely too late already */
write_sync(0, &mbox->flags); write_sync(0, &mbox->flags);
...@@ -311,7 +314,7 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[]) ...@@ -311,7 +314,7 @@ static int ivtv_api_call(struct ivtv *itv, int cmd, int args, u32 data[])
else else
ivtv_msleep_timeout(1, 0); ivtv_msleep_timeout(1, 0);
} }
if (jiffies - then > msecs_to_jiffies(100)) if (time_after(jiffies, then + msecs_to_jiffies(100)))
IVTV_DEBUG_WARN("%s took %u jiffies\n", IVTV_DEBUG_WARN("%s took %u jiffies\n",
api_info[cmd].name, api_info[cmd].name,
jiffies_to_msecs(jiffies - then)); jiffies_to_msecs(jiffies - then));
......
...@@ -768,7 +768,8 @@ int ivtv_stop_v4l2_encode_stream(struct ivtv_stream *s, int gop_end) ...@@ -768,7 +768,8 @@ int ivtv_stop_v4l2_encode_stream(struct ivtv_stream *s, int gop_end)
/* wait 2s for EOS interrupt */ /* wait 2s for EOS interrupt */
while (!test_bit(IVTV_F_I_EOS, &itv->i_flags) && while (!test_bit(IVTV_F_I_EOS, &itv->i_flags) &&
jiffies < then + msecs_to_jiffies (2000)) { time_before(jiffies,
then + msecs_to_jiffies(2000))) {
schedule_timeout(msecs_to_jiffies(10)); schedule_timeout(msecs_to_jiffies(10));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment