Re: [patch] timer: Add a mod_timer_msec() API function

From: Arjan van de Ven
Date: Sun Nov 22 2009 - 18:40:39 EST


Users of the new API;

these will be split up and sent to the various maintainers
once there is agreement on the API; for now this is just to
show how the API will be used.




diff --git a/drivers/ata/ahci.c b/drivers/ata/ahci.c
index d8f2145..758d1ce 100644
--- a/drivers/ata/ahci.c
+++ b/drivers/ata/ahci.c
@@ -1373,7 +1373,7 @@ static void ahci_sw_activity(struct ata_link *link)

emp->activity++;
if (!timer_pending(&emp->timer))
- mod_timer(&emp->timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&emp->timer, 10, 1);
}

static void ahci_sw_activity_blink(unsigned long arg)
@@ -1409,7 +1409,7 @@ static void ahci_sw_activity_blink(unsigned long arg)

/* toggle state */
led_message |= (activity_led_state << 16);
- mod_timer(&emp->timer, jiffies + msecs_to_jiffies(100));
+ mod_timer_msec(&emp->timer, 100, 5);
} else {
/* switch to idle */
led_message &= ~EM_MSG_LED_VALUE_ACTIVITY;
diff --git a/drivers/bluetooth/bluecard_cs.c b/drivers/bluetooth/bluecard_cs.c
index b0e569b..54005e2 100644
--- a/drivers/bluetooth/bluecard_cs.c
+++ b/drivers/bluetooth/bluecard_cs.c
@@ -188,13 +188,13 @@ static void bluecard_enable_activity_led(bluecard_info_t *info)
outb(0x10 | 0x40, iobase + 0x30);

/* Stop the LED after HZ/4 */
- mod_timer(&(info->timer), jiffies + HZ / 4);
+ mod_timer_msec(&(info->timer), 250, 20);
} else {
/* Enable power LED */
outb(0x08 | 0x20, iobase + 0x30);

/* Stop the LED after HZ/2 */
- mod_timer(&(info->timer), jiffies + HZ / 2);
+ mod_timer_msec(&(info->timer), 500, 40);
}
}

diff --git a/drivers/bluetooth/hci_bcsp.c b/drivers/bluetooth/hci_bcsp.c
index 40aec0f..5c2189f 100644
--- a/drivers/bluetooth/hci_bcsp.c
+++ b/drivers/bluetooth/hci_bcsp.c
@@ -312,7 +312,7 @@ static struct sk_buff *bcsp_dequeue(struct hci_uart *hu)
struct sk_buff *nskb = bcsp_prepare_pkt(bcsp, skb->data, skb->len, bt_cb(skb)->pkt_type);
if (nskb) {
__skb_queue_tail(&bcsp->unack, skb);
- mod_timer(&bcsp->tbcsp, jiffies + HZ / 4);
+ mod_timer_msec(&bcsp->tbcsp, 250, 20);
spin_unlock_irqrestore(&bcsp->unack.lock, flags);
return nskb;
} else {
diff --git a/drivers/char/isicom.c b/drivers/char/isicom.c
index 426bfdd..cc9e7b4 100644
--- a/drivers/char/isicom.c
+++ b/drivers/char/isicom.c
@@ -506,7 +506,7 @@ unlock:
spin_unlock_irqrestore(&isi_card[card].card_lock, flags);
/* schedule another tx for hopefully in about 10ms */
sched_again:
- mod_timer(&tx, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&tx, 10, 0);
}

/*
diff --git a/drivers/char/moxa.c b/drivers/char/moxa.c
index dd0083b..4ad6113 100644
--- a/drivers/char/moxa.c
+++ b/drivers/char/moxa.c
@@ -869,7 +869,7 @@ static int moxa_init_board(struct moxa_board_conf *brd, struct device *dev)
spin_lock_bh(&moxa_lock);
brd->ready = 1;
if (!timer_pending(&moxaTimer))
- mod_timer(&moxaTimer, jiffies + HZ / 50);
+ mod_timer_msec(&moxaTimer, 20, 0);
spin_unlock_bh(&moxa_lock);

return 0;
@@ -1556,7 +1556,7 @@ static void moxa_poll(unsigned long ignored)
moxaLowWaterChk = 0;

if (served)
- mod_timer(&moxaTimer, jiffies + HZ / 50);
+ mod_timer_msec(&moxaTimer, 20, 0);
spin_unlock(&moxa_lock);
}

diff --git a/drivers/char/synclink.c b/drivers/char/synclink.c
index 4846b73..63d5b70 100644
--- a/drivers/char/synclink.c
+++ b/drivers/char/synclink.c
@@ -4024,7 +4024,7 @@ static bool load_next_tx_holding_buffer(struct mgsl_struct *info)
info->get_tx_holding_index=0;

/* restart transmit timer */
- mod_timer(&info->tx_timer, jiffies + msecs_to_jiffies(5000));
+ mod_timer_msec(&info->tx_timer, 5000, 100);

ret = true;
}
@@ -5653,8 +5653,7 @@ static void usc_start_transmitter( struct mgsl_struct *info )

usc_TCmd( info, TCmd_SendFrame );

- mod_timer(&info->tx_timer, jiffies +
- msecs_to_jiffies(5000));
+ mod_timer_msec(&info->tx_timer, 5000, 100);
}
info->tx_active = true;
}
diff --git a/drivers/char/synclink_gt.c b/drivers/char/synclink_gt.c
index 8678f0c..58402a0 100644
--- a/drivers/char/synclink_gt.c
+++ b/drivers/char/synclink_gt.c
@@ -803,7 +803,7 @@ static void update_tx_timer(struct slgt_info *info)
*/
if (info->params.mode == MGSL_MODE_HDLC) {
int timeout = (tbuf_bytes(info) * 7) + 1000;
- mod_timer(&info->tx_timer, jiffies + msecs_to_jiffies(timeout));
+ mod_timer_msec(&info->tx_timer, timeout, 0);
}
}

diff --git a/drivers/char/synclinkmp.c b/drivers/char/synclinkmp.c
index 2b18adc..b032af6 100644
--- a/drivers/char/synclinkmp.c
+++ b/drivers/char/synclinkmp.c
@@ -2685,7 +2685,7 @@ static int startup(SLMP_INFO * info)

change_params(info);

- mod_timer(&info->status_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&info->status_timer, 10, 0);

if (info->port.tty)
clear_bit(TTY_IO_ERROR, &info->port.tty->flags);
@@ -4252,8 +4252,7 @@ static void tx_start(SLMP_INFO *info)
write_reg(info, TXDMA + DIR, 0x40); /* enable Tx DMA interrupts (EOM) */
write_reg(info, TXDMA + DSR, 0xf2); /* clear Tx DMA IRQs, enable Tx DMA */

- mod_timer(&info->tx_timer, jiffies +
- msecs_to_jiffies(5000));
+ mod_timer_msec(&info->tx_timer, 5000, 100);
}
else {
tx_load_fifo(info);
@@ -5534,7 +5533,7 @@ static void status_timeout(unsigned long context)
if (status)
isr_io_pin(info,status);

- mod_timer(&info->status_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&info->status_timer, 10, 0);
}


diff --git a/drivers/input/gameport/gameport.c b/drivers/input/gameport/gameport.c
index ac11be0..8b391b2 100644
--- a/drivers/input/gameport/gameport.c
+++ b/drivers/input/gameport/gameport.c
@@ -147,7 +147,7 @@ void gameport_start_polling(struct gameport *gameport)
if (!gameport->poll_cnt++) {
BUG_ON(!gameport->poll_handler);
BUG_ON(!gameport->poll_interval);
- mod_timer(&gameport->poll_timer, jiffies + msecs_to_jiffies(gameport->poll_interval));
+ mod_timer_msec(&gameport->poll_timer, gameport->poll_interval, 0);
}

spin_unlock(&gameport->timer_lock);
@@ -171,7 +171,7 @@ static void gameport_run_poll_handler(unsigned long d)

gameport->poll_handler(gameport);
if (gameport->poll_cnt)
- mod_timer(&gameport->poll_timer, jiffies + msecs_to_jiffies(gameport->poll_interval));
+ mod_timer_msec(&gameport->poll_timer, gameport->poll_interval, 0);
}

/*
diff --git a/drivers/input/keyboard/corgikbd.c b/drivers/input/keyboard/corgikbd.c
index 634af6a..d49846f 100644
--- a/drivers/input/keyboard/corgikbd.c
+++ b/drivers/input/keyboard/corgikbd.c
@@ -179,7 +179,7 @@ static void corgikbd_scankeyboard(struct corgikbd *corgikbd_data)

/* if any keys are pressed, enable the timer */
if (num_pressed)
- mod_timer(&corgikbd_data->timer, jiffies + msecs_to_jiffies(SCAN_INTERVAL));
+ mod_timer_msec(&corgikbd_data->timer, SCAN_INTERVAL, 0);

spin_unlock_irqrestore(&corgikbd_data->lock, flags);
}
@@ -249,7 +249,7 @@ static void corgikbd_hinge_timer(unsigned long data)
spin_unlock_irqrestore(&corgikbd_data->lock, flags);
}
}
- mod_timer(&corgikbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+ mod_timer_msec(&corgikbd_data->htimer, HINGE_SCAN_INTERVAL, 0);
}

#ifdef CONFIG_PM
@@ -341,7 +341,7 @@ static int __devinit corgikbd_probe(struct platform_device *pdev)
if (err)
goto fail;

- mod_timer(&corgikbd->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+ mod_timer_msec(&corgikbd->htimer, HINGE_SCAN_INTERVAL, 0);

/* Setup sense interrupts - RisingEdge Detect, sense lines as inputs */
for (i = 0; i < CORGI_KEY_SENSE_NUM; i++) {
diff --git a/drivers/input/keyboard/spitzkbd.c b/drivers/input/keyboard/spitzkbd.c
index 1396742..c64e4d0 100644
--- a/drivers/input/keyboard/spitzkbd.c
+++ b/drivers/input/keyboard/spitzkbd.c
@@ -228,7 +228,7 @@ static void spitzkbd_scankeyboard(struct spitzkbd *spitzkbd_data)

/* if any keys are pressed, enable the timer */
if (num_pressed)
- mod_timer(&spitzkbd_data->timer, jiffies + msecs_to_jiffies(SCAN_INTERVAL));
+ mod_timer_msec(&spitzkbd_data->timer, SCAN_INTERVAL, 0);

spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
}
@@ -269,7 +269,7 @@ static irqreturn_t spitzkbd_hinge_isr(int irq, void *dev_id)
struct spitzkbd *spitzkbd_data = dev_id;

if (!timer_pending(&spitzkbd_data->htimer))
- mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+ mod_timer_msec(&spitzkbd_data->htimer, HINGE_SCAN_INTERVAL, 0);

return IRQ_HANDLED;
}
@@ -303,7 +303,7 @@ static void spitzkbd_hinge_timer(unsigned long data)

spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
} else {
- mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+ mod_timer_msec(&spitzkbd_data->htimer, HINGE_SCAN_INTERVAL, 0);
}
}

@@ -399,7 +399,7 @@ static int __devinit spitzkbd_probe(struct platform_device *dev)
if (err)
goto fail;

- mod_timer(&spitzkbd->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+ mod_timer_msec(&spitzkbd->htimer, HINGE_SCAN_INTERVAL, 0);

/* Setup sense interrupts - RisingEdge Detect, sense lines as inputs */
for (i = 0; i < SPITZ_KEY_SENSE_NUM; i++) {
diff --git a/drivers/input/touchscreen/corgi_ts.c b/drivers/input/touchscreen/corgi_ts.c
index 94a1919..031ca5c 100644
--- a/drivers/input/touchscreen/corgi_ts.c
+++ b/drivers/input/touchscreen/corgi_ts.c
@@ -199,10 +199,10 @@ static void ts_interrupt_main(struct corgi_ts *corgi_ts, int isTimer)
corgi_ts->pendown = 1;
new_data(corgi_ts);
}
- mod_timer(&corgi_ts->timer, jiffies + HZ / 100);
+ mod_timer_msec(&corgi_ts->timer, 10, 0);
} else {
if (corgi_ts->pendown == 1 || corgi_ts->pendown == 2) {
- mod_timer(&corgi_ts->timer, jiffies + HZ / 100);
+ mod_timer_msec(&corgi_ts->timer, 10, 0);
corgi_ts->pendown++;
return;
}
diff --git a/drivers/input/touchscreen/w90p910_ts.c b/drivers/input/touchscreen/w90p910_ts.c
index 6ccbdbb..a39e07e 100644
--- a/drivers/input/touchscreen/w90p910_ts.c
+++ b/drivers/input/touchscreen/w90p910_ts.c
@@ -133,7 +133,7 @@ static irqreturn_t w90p910_ts_interrupt(int irq, void *dev_id)
case TS_WAIT_Y_COORD:
w90p910_report_event(w90p910_ts, true);
w90p910_prepare_next_packet(w90p910_ts);
- mod_timer(&w90p910_ts->timer, jiffies + msecs_to_jiffies(100));
+ mod_timer_msec(&w90p910_ts->timer, 100, 0);
break;

case TS_IDLE:
diff --git a/drivers/isdn/gigaset/common.c b/drivers/isdn/gigaset/common.c
index 33dcd8d..83cd958 100644
--- a/drivers/isdn/gigaset/common.c
+++ b/drivers/isdn/gigaset/common.c
@@ -179,7 +179,7 @@ static void timer_tick(unsigned long data)
timeout = 1;

if (cs->running) {
- mod_timer(&cs->timer, jiffies + msecs_to_jiffies(GIG_TICK));
+ mod_timer_msec(&cs->timer, GIG_TICK, 0);
if (timeout) {
gig_dbg(DEBUG_CMD, "scheduling timeout");
tasklet_schedule(&cs->event_tasklet);
diff --git a/drivers/leds/ledtrig-ide-disk.c b/drivers/leds/ledtrig-ide-disk.c
index ec099fc..0667bf4 100644
--- a/drivers/leds/ledtrig-ide-disk.c
+++ b/drivers/leds/ledtrig-ide-disk.c
@@ -29,7 +29,7 @@ void ledtrig_ide_activity(void)
{
ide_activity++;
if (!timer_pending(&ledtrig_ide_timer))
- mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&ledtrig_ide_timer, 10, 0);
}
EXPORT_SYMBOL(ledtrig_ide_activity);

@@ -39,7 +39,7 @@ static void ledtrig_ide_timerfunc(unsigned long data)
ide_lastactivity = ide_activity;
/* INT_MAX will set each LED to its maximum brightness */
led_trigger_event(ledtrig_ide, INT_MAX);
- mod_timer(&ledtrig_ide_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&ledtrig_ide_timer, 10, 0);
} else {
led_trigger_event(ledtrig_ide, LED_OFF);
}
diff --git a/drivers/leds/ledtrig-timer.c b/drivers/leds/ledtrig-timer.c
index 3b83406..d136ad5 100644
--- a/drivers/leds/ledtrig-timer.c
+++ b/drivers/leds/ledtrig-timer.c
@@ -61,7 +61,7 @@ static void led_timer_function(unsigned long data)

led_set_brightness(led_cdev, brightness);

- mod_timer(&timer_data->timer, jiffies + msecs_to_jiffies(delay));
+ mod_timer_msec(&timer_data->timer, delay, 0);
}

static ssize_t led_delay_on_show(struct device *dev,
diff --git a/drivers/media/dvb/ttpci/budget-ci.c b/drivers/media/dvb/ttpci/budget-ci.c
index b5c6813..9ec51a7 100644
--- a/drivers/media/dvb/ttpci/budget-ci.c
+++ b/drivers/media/dvb/ttpci/budget-ci.c
@@ -182,7 +182,7 @@ static void msp430_ir_interrupt(unsigned long data)
budget_ci->ir.last_raw = raw;
}

- mod_timer(&budget_ci->ir.timer_keyup, jiffies + msecs_to_jiffies(IR_KEYPRESS_TIMEOUT));
+ mod_timer_msec(&budget_ci->ir.timer_keyup, IR_KEYPRESS_TIMEOUT, 0);
}

static int msp430_ir_init(struct budget_ci *budget_ci)
diff --git a/drivers/media/video/bt8xx/bttv-input.c b/drivers/media/video/bt8xx/bttv-input.c
index ebd51af..6448149 100644
--- a/drivers/media/video/bt8xx/bttv-input.c
+++ b/drivers/media/video/bt8xx/bttv-input.c
@@ -141,7 +141,7 @@ static void bttv_input_timer(unsigned long data)
ir_enltv_handle_key(btv);
else
ir_handle_key(btv);
- mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
+ mod_timer_msec(&ir->timer, ir->polling, 0);
}

/* ---------------------------------------------------------------*/
diff --git a/drivers/media/video/cx231xx/cx231xx-input.c b/drivers/media/video/cx231xx/cx231xx-input.c
index 48f22fa..4101a06 100644
--- a/drivers/media/video/cx231xx/cx231xx-input.c
+++ b/drivers/media/video/cx231xx/cx231xx-input.c
@@ -147,7 +147,7 @@ static void cx231xx_ir_work(struct work_struct *work)
struct cx231xx_IR *ir = container_of(work, struct cx231xx_IR, work);

cx231xx_ir_handle_key(ir);
- mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
+ mod_timer_msec(&ir->timer, ir->polling, 0);
}

void cx231xx_ir_start(struct cx231xx_IR *ir)
diff --git a/drivers/media/video/saa7134/saa7134-input.c b/drivers/media/video/saa7134/saa7134-input.c
index a0e8c62..a45510c 100644
--- a/drivers/media/video/saa7134/saa7134-input.c
+++ b/drivers/media/video/saa7134/saa7134-input.c
@@ -358,7 +358,7 @@ static void saa7134_input_timer(unsigned long data)
struct card_ir *ir = dev->remote;

build_key(dev);
- mod_timer(&ir->timer, jiffies + msecs_to_jiffies(ir->polling));
+ mod_timer_msec(&ir->timer, ir->polling, 0);
}

void saa7134_ir_start(struct saa7134_dev *dev, struct card_ir *ir)
@@ -941,7 +941,7 @@ static void nec_task(unsigned long data)
dprintk("Repeat last key\n");

/* Keep repeating the last key */
- mod_timer(&ir->timer_keyup, jiffies + msecs_to_jiffies(150));
+ mod_timer_msec(&ir->timer_keyup, 150, 0);

saa_setl(SAA7134_IRQ2, SAA7134_IRQ2_INTE_GPIO18);
}
diff --git a/drivers/media/video/tvaudio.c b/drivers/media/video/tvaudio.c
index 0869baf..47c58c8 100644
--- a/drivers/media/video/tvaudio.c
+++ b/drivers/media/video/tvaudio.c
@@ -329,7 +329,7 @@ static int chip_thread(void *data)
desc->setmode(chip, V4L2_TUNER_MODE_MONO);

/* schedule next check */
- mod_timer(&chip->wt, jiffies+msecs_to_jiffies(2000));
+ mod_timer_msec(&chip->wt, 2000, 100);
}

v4l2_dbg(1, debug, sd, "thread exiting\n");
@@ -1893,7 +1893,7 @@ static int tvaudio_s_frequency(struct v4l2_subdev *sd, struct v4l2_frequency *fr
desc->setmode(chip, V4L2_TUNER_MODE_MONO);
if (chip->prevmode != V4L2_TUNER_MODE_MONO)
chip->prevmode = -1; /* reset previous mode */
- mod_timer(&chip->wt, jiffies+msecs_to_jiffies(2000));
+ mod_timer_msec(&chip->wt, 2000, 100);
}
return 0;
}
diff --git a/drivers/mmc/host/atmel-mci.c b/drivers/mmc/host/atmel-mci.c
index fc25586..b1255c3 100644
--- a/drivers/mmc/host/atmel-mci.c
+++ b/drivers/mmc/host/atmel-mci.c
@@ -1471,7 +1471,7 @@ static irqreturn_t atmci_detect_interrupt(int irq, void *dev_id)
* middle of the timer routine when this interrupt triggers.
*/
disable_irq_nosync(irq);
- mod_timer(&slot->detect_timer, jiffies + msecs_to_jiffies(20));
+ mod_timer_msec(&slot->detect_timer, 20, 0);

return IRQ_HANDLED;
}
diff --git a/drivers/mmc/host/wbsd.c b/drivers/mmc/host/wbsd.c
index 89bf8cd..2f60f5d 100644
--- a/drivers/mmc/host/wbsd.c
+++ b/drivers/mmc/host/wbsd.c
@@ -906,7 +906,7 @@ static void wbsd_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
* We cannot resume card detection immediatly
* because of capacitance and delays in the chip.
*/
- mod_timer(&host->ignore_timer, jiffies + HZ / 100);
+ mod_timer_msec(&host->ignore_timer, 10, 0);
}
}
wbsd_write_index(host, WBSD_IDX_SETUP, setup);
diff --git a/drivers/net/s2io.c b/drivers/net/s2io.c
index 0dd7839..ba3a0c2 100644
--- a/drivers/net/s2io.c
+++ b/drivers/net/s2io.c
@@ -4309,7 +4309,7 @@ s2io_alarm_handle(unsigned long data)
struct net_device *dev = sp->dev;

s2io_handle_errors(dev);
- mod_timer(&sp->alarm_timer, jiffies + HZ / 2);
+ mod_timer_msec(&sp->alarm_timer, 500, 0);
}

static irqreturn_t s2io_msix_ring_handle(int irq, void *dev_id)
@@ -5483,7 +5483,7 @@ static void s2io_phy_id(unsigned long data)
writeq(val64, &bar0->adapter_control);
}

- mod_timer(&sp->id_timer, jiffies + HZ / 2);
+ mod_timer_msec(&sp->id_timer, 500, 0);
}

/**
diff --git a/drivers/net/wireless/at76c50x-usb.c b/drivers/net/wireless/at76c50x-usb.c
index 8e1a55d..616de6d 100644
--- a/drivers/net/wireless/at76c50x-usb.c
+++ b/drivers/net/wireless/at76c50x-usb.c
@@ -551,7 +551,7 @@ static void at76_ledtrig_tx_timerfunc(unsigned long data)
if (tx_lastactivity != tx_activity) {
tx_lastactivity = tx_activity;
led_trigger_event(ledtrig_tx, LED_FULL);
- mod_timer(&ledtrig_tx_timer, jiffies + HZ / 4);
+ mod_timer_msec(&ledtrig_tx_timer, 250, 0);
} else
led_trigger_event(ledtrig_tx, LED_OFF);
}
@@ -560,7 +560,7 @@ static void at76_ledtrig_tx_activity(void)
{
tx_activity++;
if (!timer_pending(&ledtrig_tx_timer))
- mod_timer(&ledtrig_tx_timer, jiffies + HZ / 4);
+ mod_timer_msec(&ledtrig_tx_timer, 250, 0);
}

static int at76_remap(struct usb_device *udev)
diff --git a/drivers/net/wireless/ath/ath9k/main.c b/drivers/net/wireless/ath/ath9k/main.c
index 52bed89..e0bb24e 100644
--- a/drivers/net/wireless/ath/ath9k/main.c
+++ b/drivers/net/wireless/ath/ath9k/main.c
@@ -416,7 +416,7 @@ set_timer:
if (!sc->ani.caldone)
cal_interval = min(cal_interval, (u32)short_cal_interval);

- mod_timer(&sc->ani.timer, jiffies + msecs_to_jiffies(cal_interval));
+ mod_timer_msec(&sc->ani.timer, cal_interval, 0);
}

static void ath_start_ani(struct ath_softc *sc)
@@ -427,8 +427,7 @@ static void ath_start_ani(struct ath_softc *sc)
sc->ani.shortcal_timer = timestamp;
sc->ani.checkani_timer = timestamp;

- mod_timer(&sc->ani.timer,
- jiffies + msecs_to_jiffies(ATH_ANI_POLLINTERVAL));
+ mod_timer_msec(&sc->ani.timer, ATH_ANI_POLLINTERVAL, 0);
}

/*
diff --git a/drivers/pci/intel-iommu.c b/drivers/pci/intel-iommu.c
index 1840a05..7efee46 100644
--- a/drivers/pci/intel-iommu.c
+++ b/drivers/pci/intel-iommu.c
@@ -2703,7 +2703,7 @@ static void add_unmap(struct dmar_domain *dom, struct iova *iova)
deferred_flush[iommu_id].next++;

if (!timer_on) {
- mod_timer(&unmap_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&unmap_timer, 10, 0);
timer_on = 1;
}
list_size++;
diff --git a/drivers/scsi/bfa/bfad.c b/drivers/scsi/bfa/bfad.c
index 6f2be5a..d7e26d4 100644
--- a/drivers/scsi/bfa/bfad.c
+++ b/drivers/scsi/bfa/bfad.c
@@ -558,7 +558,7 @@ bfad_bfa_tmo(unsigned long data)
spin_unlock_irqrestore(&bfad->bfad_lock, flags);
}

- mod_timer(&bfad->hal_tmo, jiffies + msecs_to_jiffies(BFA_TIMER_FREQ));
+ mod_timer_msec(&bfad->hal_tmo, BFA_TIMER_FREQ, 0);
}

void
@@ -568,7 +568,7 @@ bfad_init_timer(struct bfad_s *bfad)
bfad->hal_tmo.function = bfad_bfa_tmo;
bfad->hal_tmo.data = (unsigned long)bfad;

- mod_timer(&bfad->hal_tmo, jiffies + msecs_to_jiffies(BFA_TIMER_FREQ));
+ mod_timer_msec(&bfad->hal_tmo, BFA_TIMER_FREQ, 0);
}

int
diff --git a/drivers/scsi/cxgb3i/cxgb3i_offload.c b/drivers/scsi/cxgb3i/cxgb3i_offload.c
index c1d5be4..6941151 100644
--- a/drivers/scsi/cxgb3i/cxgb3i_offload.c
+++ b/drivers/scsi/cxgb3i/cxgb3i_offload.c
@@ -838,7 +838,7 @@ static void process_act_open_rpl(struct s3_conn *c3cn, struct sk_buff *skb)
if (rpl->status == CPL_ERR_CONN_EXIST &&
c3cn->retry_timer.function != act_open_retry_timer) {
c3cn->retry_timer.function = act_open_retry_timer;
- if (!mod_timer(&c3cn->retry_timer, jiffies + HZ / 2))
+ if (!mod_timer_msec(&c3cn->retry_timer, 500, 0))
c3cn_hold(c3cn);
} else
fail_act_open(c3cn, act_open_rpl_status_to_errno(rpl->status));
diff --git a/drivers/staging/otus/usbdrv.c b/drivers/staging/otus/usbdrv.c
index 48aa30a..c4a03be 100644
--- a/drivers/staging/otus/usbdrv.c
+++ b/drivers/staging/otus/usbdrv.c
@@ -397,7 +397,7 @@ int usbdrv_open(struct net_device *dev)

zfLnxCreateThread(dev);

- mod_timer(&(macp->hbTimer10ms), jiffies + (1*HZ)/100); //10 ms
+ mod_timer_msec(&(macp->hbTimer10ms), 10, 0);

netif_carrier_on(dev);

@@ -711,7 +711,7 @@ void zfLnx10msTimer(struct net_device* dev)
{
struct usbdrv_private *macp = dev->ml_priv;

- mod_timer(&(macp->hbTimer10ms), jiffies + (1*HZ)/100); //10 ms
+ mod_timer_msec(&(macp->hbTimer10ms), 10, 0);
zfiHeartBeat(dev);
return;
}
diff --git a/drivers/usb/atm/speedtch.c b/drivers/usb/atm/speedtch.c
index 3e86240..375cf55 100644
--- a/drivers/usb/atm/speedtch.c
+++ b/drivers/usb/atm/speedtch.c
@@ -582,7 +582,7 @@ static void speedtch_status_poll(unsigned long data)

/* The following check is racy, but the race is harmless */
if (instance->poll_delay < MAX_POLL_DELAY)
- mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(instance->poll_delay));
+ mod_timer_msec(&instance->status_checker.timer, instance->poll_delay, 0);
else
atm_warn(instance->usbatm, "Too many failures - disabling line status polling\n");
}
@@ -601,7 +601,7 @@ static void speedtch_resubmit_int(unsigned long data)
schedule_delayed_work(&instance->status_checker, 0);
else {
atm_dbg(instance->usbatm, "%s: usb_submit_urb failed with result %d\n", __func__, ret);
- mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY));
+ mod_timer_msec(&instance->resubmit_timer, RESUBMIT_DELAY, 0);
}
}
}
@@ -654,7 +654,7 @@ static void speedtch_handle_int(struct urb *int_urb)

fail:
if ((int_urb = instance->int_urb))
- mod_timer(&instance->resubmit_timer, jiffies + msecs_to_jiffies(RESUBMIT_DELAY));
+ mod_timer_msec(&instance->resubmit_timer, RESUBMIT_DELAY, 0);
}

static int speedtch_atm_start(struct usbatm_data *usbatm, struct atm_dev *atm_dev)
@@ -688,7 +688,7 @@ static int speedtch_atm_start(struct usbatm_data *usbatm, struct atm_dev *atm_de
}

/* Start status polling */
- mod_timer(&instance->status_checker.timer, jiffies + msecs_to_jiffies(1000));
+ mod_timer_msec(&instance->status_checker.timer, 1000, 50);

return 0;
}
diff --git a/drivers/usb/atm/usbatm.c b/drivers/usb/atm/usbatm.c
index fbea856..79481ea 100644
--- a/drivers/usb/atm/usbatm.c
+++ b/drivers/usb/atm/usbatm.c
@@ -248,7 +248,7 @@ static int usbatm_submit_urb(struct urb *urb)
spin_unlock_irq(&channel->lock);

/* make sure the channel doesn't stall */
- mod_timer(&channel->delay, jiffies + msecs_to_jiffies(THROTTLE_MSECS));
+ mod_timer_msec(&channel->delay, THROTTLE_MSECS, 0);
}

return ret;
@@ -282,7 +282,7 @@ static void usbatm_complete(struct urb *urb)
atm_warn(channel->usbatm, "%s: urb 0x%p failed (%d)!\n",
__func__, urb, status);
/* throttle processing in case of an error */
- mod_timer(&channel->delay, jiffies + msecs_to_jiffies(THROTTLE_MSECS));
+ mod_timer_msec(&channel->delay, THROTTLE_MSECS, 0);
} else
tasklet_schedule(&channel->tasklet);
}
diff --git a/drivers/usb/gadget/dummy_hcd.c b/drivers/usb/gadget/dummy_hcd.c
index 5e09664..83d6bc2 100644
--- a/drivers/usb/gadget/dummy_hcd.c
+++ b/drivers/usb/gadget/dummy_hcd.c
@@ -1520,7 +1520,7 @@ return_urb:
dum->udev = NULL;
} else if (dum->rh_state == DUMMY_RH_RUNNING) {
/* want a 1 msec delay here */
- mod_timer (&dum->timer, jiffies + msecs_to_jiffies(1));
+ mod_timer_msec (&dum->timer, 1, 0);
}

spin_unlock_irqrestore (&dum->lock, flags);
diff --git a/drivers/usb/gadget/m66592-udc.c b/drivers/usb/gadget/m66592-udc.c
index a8c8543..7428f94 100644
--- a/drivers/usb/gadget/m66592-udc.c
+++ b/drivers/usb/gadget/m66592-udc.c
@@ -1229,8 +1229,7 @@ static irqreturn_t m66592_irq(int irq, void *_m66592)
& M66592_VBSTS;
m66592->scount = M66592_MAX_SAMPLING;

- mod_timer(&m66592->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&m66592->timer, 50, 0);
}
if (intsts0 & M66592_DVSQ)
irq_device_state(m66592);
@@ -1277,14 +1276,12 @@ static void m66592_timer(unsigned long _m66592)
else
m66592_usb_disconnect(m66592);
} else {
- mod_timer(&m66592->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&m66592->timer, 50, 0);
}
} else {
m66592->scount = M66592_MAX_SAMPLING;
m66592->old_vbus = tmp;
- mod_timer(&m66592->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&m66592->timer, 50, 0);
}
}
spin_unlock_irqrestore(&m66592->lock, flags);
@@ -1493,7 +1490,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
m66592->old_vbus = m66592_read(m66592,
M66592_INTSTS0) & M66592_VBSTS;
m66592->scount = M66592_MAX_SAMPLING;
- mod_timer(&m66592->timer, jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&m66592->timer, 50, 0);
}

return 0;
diff --git a/drivers/usb/gadget/r8a66597-udc.c b/drivers/usb/gadget/r8a66597-udc.c
index e220fb8..bb0d70b 100644
--- a/drivers/usb/gadget/r8a66597-udc.c
+++ b/drivers/usb/gadget/r8a66597-udc.c
@@ -1167,8 +1167,7 @@ static irqreturn_t r8a66597_irq(int irq, void *_r8a66597)
& VBSTS;
r8a66597->scount = R8A66597_MAX_SAMPLING;

- mod_timer(&r8a66597->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&r8a66597->timer, 50, 0);
}
if (intsts0 & DVSQ)
irq_device_state(r8a66597);
@@ -1208,14 +1207,12 @@ static void r8a66597_timer(unsigned long _r8a66597)
else
r8a66597_usb_disconnect(r8a66597);
} else {
- mod_timer(&r8a66597->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&r8a66597->timer, 50, 0);
}
} else {
r8a66597->scount = R8A66597_MAX_SAMPLING;
r8a66597->old_vbus = tmp;
- mod_timer(&r8a66597->timer,
- jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&r8a66597->timer, 50, 0);
}
}
spin_unlock_irqrestore(&r8a66597->lock, flags);
@@ -1443,7 +1440,7 @@ int usb_gadget_register_driver(struct usb_gadget_driver *driver)
r8a66597->old_vbus = r8a66597_read(r8a66597,
INTSTS0) & VBSTS;
r8a66597->scount = R8A66597_MAX_SAMPLING;
- mod_timer(&r8a66597->timer, jiffies + msecs_to_jiffies(50));
+ mod_timer_msec(&r8a66597->timer, 50, 0);
}

return 0;
diff --git a/net/dsa/mv88e6xxx.c b/net/dsa/mv88e6xxx.c
index efe661a..2680d65 100644
--- a/net/dsa/mv88e6xxx.c
+++ b/net/dsa/mv88e6xxx.c
@@ -309,7 +309,7 @@ static void mv88e6xxx_ppu_access_put(struct dsa_switch *ds)
/*
* Schedule a timer to re-enable the PHY polling unit.
*/
- mod_timer(&ps->ppu_timer, jiffies + msecs_to_jiffies(10));
+ mod_timer_msec(&ps->ppu_timer, 10, 0);
mutex_unlock(&ps->ppu_mutex);
}

diff --git a/net/ipv4/ipmr.c b/net/ipv4/ipmr.c
index 99508d6..35476bd 100644
--- a/net/ipv4/ipmr.c
+++ b/net/ipv4/ipmr.c
@@ -371,7 +371,7 @@ static void ipmr_expire_process(unsigned long dummy)
struct mfc_cache *c, **cp;

if (!spin_trylock(&mfc_unres_lock)) {
- mod_timer(&ipmr_expire_timer, jiffies+HZ/10);
+ mod_timer_msec(&ipmr_expire_timer, 100, 0);
return;
}

diff --git a/net/sctp/sm_sideeffect.c b/net/sctp/sm_sideeffect.c
index 8674d49..4307e08 100644
--- a/net/sctp/sm_sideeffect.c
+++ b/net/sctp/sm_sideeffect.c
@@ -255,7 +255,7 @@ void sctp_generate_t3_rtx_event(unsigned long peer)
SCTP_DEBUG_PRINTK("%s:Sock is busy.\n", __func__);

/* Try again later. */
- if (!mod_timer(&transport->T3_rtx_timer, jiffies + (HZ/20)))
+ if (!mod_timer_msec(&transport->T3_rtx_timer, 50, 0))
sctp_transport_hold(transport);
goto out_unlock;
}
@@ -296,7 +296,7 @@ static void sctp_generate_timeout_event(struct sctp_association *asoc,
timeout_type);

/* Try again later. */
- if (!mod_timer(&asoc->timers[timeout_type], jiffies + (HZ/20)))
+ if (!mod_timer_msec(&asoc->timers[timeout_type], 50, 0))
sctp_association_hold(asoc);
goto out_unlock;
}
@@ -373,7 +373,7 @@ void sctp_generate_heartbeat_event(unsigned long data)
SCTP_DEBUG_PRINTK("%s:Sock is busy.\n", __func__);

/* Try again later. */
- if (!mod_timer(&transport->hb_timer, jiffies + (HZ/20)))
+ if (!mod_timer_msec(&transport->hb_timer, 50, 0))
sctp_transport_hold(transport);
goto out_unlock;
}
diff --git a/sound/soc/omap/ams-delta.c b/sound/soc/omap/ams-delta.c
index 5a5166a..842e8a4 100644
--- a/sound/soc/omap/ams-delta.c
+++ b/sound/soc/omap/ams-delta.c
@@ -338,7 +338,7 @@ static void cx81801_receive(struct tty_struct *tty,
/* Complete modem response received, apply config to codec */

spin_lock_bh(&ams_delta_lock);
- mod_timer(&cx81801_timer, jiffies + msecs_to_jiffies(150));
+ mod_timer_msec(&cx81801_timer, 150, 0);
apply = !ams_delta_muted && !cx81801_cmd_pending;
cx81801_cmd_pending = 1;
spin_unlock_bh(&ams_delta_lock);
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/