mirror of
https://github.com/apache/nuttx.git
synced 2026-06-04 23:03:27 +08:00
sched/wdog: wd_start() is an internal OS function and should not set the errno value. Reviewed and updated every call to wd_start() to verify if return value is used and if so if the errno value is accessed.
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
<h1><big><font color="#3c34ec">
|
<h1><big><font color="#3c34ec">
|
||||||
<i>NuttX RTOS Porting Guide</i>
|
<i>NuttX RTOS Porting Guide</i>
|
||||||
</font></big></h1>
|
</font></big></h1>
|
||||||
<p>Last Updated: October 12, 2017</p>
|
<p>Last Updated: January 31, 2018</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
@@ -2605,7 +2605,7 @@ pointer to a watchdog structure.
|
|||||||
<p>
|
<p>
|
||||||
<b>Returned Value:</b>
|
<b>Returned Value:</b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>OK or ERROR
|
<li>Zero (<code>OK</code>) is returned on success; a negated <code>errno</code> value is return to indicate the nature of any failure.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
@@ -2662,7 +2662,7 @@ wd_start() on a given watchdog ID has any effect.
|
|||||||
<p>
|
<p>
|
||||||
<b>Returned Value:</b>
|
<b>Returned Value:</b>
|
||||||
<ul>
|
<ul>
|
||||||
<li>OK or ERROR
|
<li>Zero (<code>OK</code>) is returned on success; a negated <code>errno</code> value is return to indicate the nature of any failure.
|
||||||
</ul>
|
</ul>
|
||||||
|
|
||||||
<p>
|
<p>
|
||||||
|
|||||||
@@ -1493,7 +1493,7 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
|||||||
ret = wd_start(priv->wdog, (int)ticks, spi_dma_timeout, 1, (uint32_t)priv);
|
ret = wd_start(priv->wdog, (int)ticks, spi_dma_timeout, 1, (uint32_t)priv);
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: Failed to start timeout\n");
|
spierr("ERROR: Failed to start timeout: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Then wait for each to complete. TX should complete first */
|
/* Then wait for each to complete. TX should complete first */
|
||||||
|
|||||||
@@ -1183,8 +1183,8 @@ static int kinetis_i2c_transfer(struct i2c_master_s *dev,
|
|||||||
|
|
||||||
/* Wait for transfer complete */
|
/* Wait for transfer complete */
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, kinetis_i2c_timeout, 1,
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, kinetis_i2c_timeout, 1,
|
||||||
(uint32_t) priv);
|
(uint32_t)priv);
|
||||||
kinetis_i2c_wait(priv);
|
kinetis_i2c_wait(priv);
|
||||||
|
|
||||||
wd_cancel(priv->timeout);
|
wd_cancel(priv->timeout);
|
||||||
|
|||||||
@@ -2465,7 +2465,7 @@ static sdio_eventset_t kinetis_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)kinetis_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)kinetis_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1112,7 +1112,8 @@ static void khci_delayedrestart(struct khci_usbdev_s *priv, uint8_t epno)
|
|||||||
|
|
||||||
/* And start (or re-start) the watchdog timer */
|
/* And start (or re-start) the watchdog timer */
|
||||||
|
|
||||||
wd_start(priv->wdog, RESTART_DELAY, khci_rqrestart, 1, (uint32_t)priv);
|
(void)wd_start(priv->wdog, RESTART_DELAY, khci_rqrestart, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|||||||
@@ -215,7 +215,8 @@ static int lpc11_i2c_start(struct lpc11_i2cdev_s *priv)
|
|||||||
priv->base + LPC11_I2C_CONCLR_OFFSET);
|
priv->base + LPC11_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC11_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC11_I2C_CONSET_OFFSET);
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, lpc11_i2c_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, lpc11_i2c_timeout, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
nxsem_wait(&priv->wait);
|
nxsem_wait(&priv->wait);
|
||||||
|
|
||||||
wd_cancel(priv->timeout);
|
wd_cancel(priv->timeout);
|
||||||
|
|||||||
@@ -215,7 +215,8 @@ static int lpc17_i2c_start(struct lpc17_i2cdev_s *priv)
|
|||||||
priv->base + LPC17_I2C_CONCLR_OFFSET);
|
priv->base + LPC17_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC17_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC17_I2C_CONSET_OFFSET);
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, lpc17_i2c_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, lpc17_i2c_timeout, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
nxsem_wait(&priv->wait);
|
nxsem_wait(&priv->wait);
|
||||||
|
|
||||||
wd_cancel(priv->timeout);
|
wd_cancel(priv->timeout);
|
||||||
|
|||||||
@@ -2307,7 +2307,7 @@ static sdio_eventset_t lpc17_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc17_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc17_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -220,7 +220,8 @@ static int lpc2378_i2c_start(struct lpc2378_i2cdev_s *priv)
|
|||||||
priv->base + I2C_CONCLR_OFFSET);
|
priv->base + I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + I2C_CONSET_OFFSET);
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, lpc2378_i2c_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, lpc2378_i2c_timeout, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
nxsem_wait(&priv->wait);
|
nxsem_wait(&priv->wait);
|
||||||
|
|
||||||
wd_cancel(priv->timeout);
|
wd_cancel(priv->timeout);
|
||||||
|
|||||||
@@ -490,7 +490,7 @@ static int i2c_transfer(FAR struct i2c_master_s *dev, FAR struct i2c_msg_s *msgs
|
|||||||
|
|
||||||
/* Start a watchdog to timeout the transfer if the bus is locked up... */
|
/* Start a watchdog to timeout the transfer if the bus is locked up... */
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, i2c_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, i2c_timeout, 1, (uint32_t)priv);
|
||||||
|
|
||||||
/* Wait for the transfer to complete */
|
/* Wait for the transfer to complete */
|
||||||
|
|
||||||
|
|||||||
@@ -202,7 +202,8 @@ static int lpc43_i2c_start(struct lpc43_i2cdev_s *priv)
|
|||||||
priv->base + LPC43_I2C_CONCLR_OFFSET);
|
priv->base + LPC43_I2C_CONCLR_OFFSET);
|
||||||
putreg32(I2C_CONSET_STA, priv->base + LPC43_I2C_CONSET_OFFSET);
|
putreg32(I2C_CONSET_STA, priv->base + LPC43_I2C_CONSET_OFFSET);
|
||||||
|
|
||||||
wd_start(priv->timeout, I2C_TIMEOUT, lpc43_i2c_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, I2C_TIMEOUT, lpc43_i2c_timeout, 1,i
|
||||||
|
(uint32_t)priv);
|
||||||
nxsem_wait(&priv->wait);
|
nxsem_wait(&priv->wait);
|
||||||
|
|
||||||
wd_cancel(priv->timeout);
|
wd_cancel(priv->timeout);
|
||||||
|
|||||||
@@ -2262,7 +2262,7 @@ static sdio_eventset_t lpc43_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc43_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc43_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -765,10 +765,9 @@ static int lpc54_i2c_transfer(FAR struct i2c_master_s *dev,
|
|||||||
priv->result = OK;
|
priv->result = OK;
|
||||||
|
|
||||||
/* Set up the transfer timeout */
|
/* Set up the transfer timeout */
|
||||||
/* wd_start(priv->timeout ...); */
|
|
||||||
|
|
||||||
wd_start(priv->timeout, priv->nmsgs * I2C_WDOG_TIMEOUT, lpc54_i2c_timeout,
|
(void)wd_start(priv->timeout, priv->nmsgs * I2C_WDOG_TIMEOUT,
|
||||||
1, (uint32_t)priv);
|
lpc54_i2c_timeout, 1, (uint32_t)priv);
|
||||||
|
|
||||||
/* Initiate the transfer */
|
/* Initiate the transfer */
|
||||||
|
|
||||||
|
|||||||
@@ -2262,7 +2262,7 @@ static sdio_eventset_t lpc54_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc54_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)lpc54_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2317,7 +2317,7 @@ static sdio_eventset_t sam_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1590,7 +1590,7 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
|||||||
|
|
||||||
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
||||||
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: wd_start failed: %d\n", ret);
|
spierr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -386,7 +386,7 @@ static int twi_wait(struct twi_dev_s *priv)
|
|||||||
{
|
{
|
||||||
/* Start a timeout to avoid hangs */
|
/* Start a timeout to avoid hangs */
|
||||||
|
|
||||||
wd_start(priv->timeout, TWI_TIMEOUT, twi_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, TWI_TIMEOUT, twi_timeout, 1, (uint32_t)priv);
|
||||||
|
|
||||||
/* Wait for either the TWI transfer or the timeout to complete */
|
/* Wait for either the TWI transfer or the timeout to complete */
|
||||||
|
|
||||||
|
|||||||
@@ -2745,7 +2745,7 @@ static sdio_eventset_t sam_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
lcderr("ERROR: wd_start failed: %d\n", ret);
|
lcderr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1520,7 +1520,7 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
|||||||
|
|
||||||
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
||||||
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: wd_start failed: %d\n", ret);
|
spierr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -597,7 +597,8 @@ static void sam_tsd_bottomhalf(void *arg)
|
|||||||
* this case; we rely on the timer expiry to get us going again.
|
* this case; we rely on the timer expiry to get us going again.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wd_start(priv->wdog, TSD_WDOG_DELAY, sam_tsd_expiry, 1, (uint32_t)priv);
|
(void)wd_start(priv->wdog, TSD_WDOG_DELAY, sam_tsd_expiry, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
ier = 0;
|
ier = 0;
|
||||||
goto ignored;
|
goto ignored;
|
||||||
}
|
}
|
||||||
@@ -675,7 +676,8 @@ static void sam_tsd_bottomhalf(void *arg)
|
|||||||
|
|
||||||
/* Continue to sample the position while the pen is down */
|
/* Continue to sample the position while the pen is down */
|
||||||
|
|
||||||
wd_start(priv->wdog, TSD_WDOG_DELAY, sam_tsd_expiry, 1, (uint32_t)priv);
|
(void)wd_start(priv->wdog, TSD_WDOG_DELAY, sam_tsd_expiry, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
|
|
||||||
/* Check the thresholds. Bail if (1) this is not the first
|
/* Check the thresholds. Bail if (1) this is not the first
|
||||||
* measurement and (2) there is no significant difference from
|
* measurement and (2) there is no significant difference from
|
||||||
|
|||||||
@@ -487,7 +487,7 @@ static int twi_wait(struct twi_dev_s *priv, unsigned int size)
|
|||||||
* TWI transfer stalls.
|
* TWI transfer stalls.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wd_start(priv->timeout, timeout, twi_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, timeout, twi_timeout, 1, (uint32_t)priv);
|
||||||
|
|
||||||
/* Wait for either the TWI transfer or the timeout to complete */
|
/* Wait for either the TWI transfer or the timeout to complete */
|
||||||
|
|
||||||
|
|||||||
@@ -2791,7 +2791,7 @@ static sdio_eventset_t sam_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)sam_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -885,7 +885,7 @@ static int qspi_memory_dma(struct sam_qspidev_s *priv,
|
|||||||
|
|
||||||
ret = wd_start(priv->dmadog, DMA_TIMEOUT_TICKS,
|
ret = wd_start(priv->dmadog, DMA_TIMEOUT_TICKS,
|
||||||
(wdentry_t)qspi_dma_timeout, 1, (uint32_t)priv);
|
(wdentry_t)qspi_dma_timeout, 1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: wd_start failed: %d\n", ret);
|
spierr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1864,7 +1864,7 @@ static void spi_exchange(struct spi_dev_s *dev, const void *txbuffer,
|
|||||||
|
|
||||||
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
ret = wd_start(spics->dmadog, DMA_TIMEOUT_TICKS,
|
||||||
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
(wdentry_t)spi_dmatimeout, 1, (uint32_t)spics);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: wd_start failed: %d\n", ret);
|
spierr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -491,7 +491,8 @@ static int twi_wait(struct twi_dev_s *priv, unsigned int size)
|
|||||||
* TWIHS transfer stalls.
|
* TWIHS transfer stalls.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wd_start(priv->timeout, (timeout * size), twi_timeout, 1, (uint32_t)priv);
|
(void)wd_start(priv->timeout, (timeout * size), twi_timeout, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
|
|
||||||
/* Wait for either the TWIHS transfer or the timeout to complete */
|
/* Wait for either the TWIHS transfer or the timeout to complete */
|
||||||
|
|
||||||
|
|||||||
@@ -2500,7 +2500,7 @@ static sdio_eventset_t stm32_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2691,7 +2691,7 @@ static sdio_eventset_t stm32_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1447,7 +1447,7 @@ static int qspi_memory_dma(struct stm32l4_qspidev_s *priv,
|
|||||||
|
|
||||||
ret = wd_start(priv->dmadog, DMA_TIMEOUT_TICKS,
|
ret = wd_start(priv->dmadog, DMA_TIMEOUT_TICKS,
|
||||||
(wdentry_t)qspi_dma_timeout, 1, (uint32_t)priv);
|
(wdentry_t)qspi_dma_timeout, 1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
spierr("ERROR: wd_start failed: %d\n", ret);
|
spierr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2637,7 +2637,7 @@ static sdio_eventset_t stm32_eventwait(FAR struct sdio_dev_s *dev,
|
|||||||
delay = MSEC2TICK(timeout);
|
delay = MSEC2TICK(timeout);
|
||||||
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
ret = wd_start(priv->waitwdog, delay, (wdentry_t)stm32_eventtimeout,
|
||||||
1, (uint32_t)priv);
|
1, (uint32_t)priv);
|
||||||
if (ret != OK)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
mcerr("ERROR: wd_start failed: %d\n", ret);
|
mcerr("ERROR: wd_start failed: %d\n", ret);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1031,7 +1031,8 @@ static void pic32mx_delayedrestart(struct pic32mx_usbdev_s *priv, uint8_t epno)
|
|||||||
|
|
||||||
/* And start (or re-start) the watchdog timer */
|
/* And start (or re-start) the watchdog timer */
|
||||||
|
|
||||||
wd_start(priv->wdog, RESTART_DELAY, pic32mx_rqrestart, 1, (uint32_t)priv);
|
(void)wd_start(priv->wdog, RESTART_DELAY, pic32mx_rqrestart, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
|
|||||||
@@ -607,7 +607,8 @@ static void ads7843e_worker(FAR void *arg)
|
|||||||
* later.
|
* later.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
wd_start(priv->wdog, ADS7843E_WDOG_DELAY, ads7843e_wdog, 1, (uint32_t)priv);
|
(void)wd_start(priv->wdog, ADS7843E_WDOG_DELAY, ads7843e_wdog, 1,
|
||||||
|
(uint32_t)priv);
|
||||||
goto ignored;
|
goto ignored;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|||||||
@@ -592,8 +592,8 @@ static void max11802_worker(FAR void *arg)
|
|||||||
|
|
||||||
iinfo("Previous pen up event still in buffer\n");
|
iinfo("Previous pen up event still in buffer\n");
|
||||||
max11802_notify(priv);
|
max11802_notify(priv);
|
||||||
wd_start(priv->wdog, MAX11802_WDOG_DELAY, max11802_wdog, 1,
|
(void)wd_start(priv->wdog, MAX11802_WDOG_DELAY, max11802_wdog, 1,
|
||||||
(uint32_t)priv);
|
(uint32_t)priv);
|
||||||
goto ignored;
|
goto ignored;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -632,8 +632,8 @@ static void max11802_worker(FAR void *arg)
|
|||||||
|
|
||||||
/* Continue to sample the position while the pen is down */
|
/* Continue to sample the position while the pen is down */
|
||||||
|
|
||||||
wd_start(priv->wdog, MAX11802_WDOG_DELAY, max11802_wdog, 1,
|
(void)wd_start(priv->wdog, MAX11802_WDOG_DELAY, max11802_wdog, 1,
|
||||||
(uint32_t)priv);
|
i (uint32_t)priv);
|
||||||
|
|
||||||
/* Check if data is valid */
|
/* Check if data is valid */
|
||||||
|
|
||||||
|
|||||||
@@ -886,8 +886,8 @@ int bcmf_wl_start_scan(FAR struct bcmf_dev_s *priv, struct iwreq *iwr)
|
|||||||
|
|
||||||
/* Start scan_timeout timer */
|
/* Start scan_timeout timer */
|
||||||
|
|
||||||
wd_start(priv->scan_timeout, BCMF_SCAN_TIMEOUT_TICK,
|
(void)wd_start(priv->scan_timeout, BCMF_SCAN_TIMEOUT_TICK,
|
||||||
bcmf_wl_scan_timeout, (wdparm_t)priv);
|
bcmf_wl_scan_timeout, (wdparm_t)priv);
|
||||||
|
|
||||||
return OK;
|
return OK;
|
||||||
|
|
||||||
|
|||||||
@@ -665,8 +665,8 @@ int bcmf_bus_sdio_initialize(FAR struct bcmf_dev_s *priv,
|
|||||||
|
|
||||||
/* Start the waitdog timer */
|
/* Start the waitdog timer */
|
||||||
|
|
||||||
wd_start(sbus->waitdog, BCMF_WAITDOG_TIMEOUT_TICK, bcmf_sdio_waitdog_timeout,
|
(void)wd_start(sbus->waitdog, BCMF_WAITDOG_TIMEOUT_TICK,
|
||||||
(wdparm_t)priv);
|
bcmf_sdio_waitdog_timeout, (wdparm_t)priv);
|
||||||
|
|
||||||
/* Spawn bcmf daemon thread */
|
/* Spawn bcmf daemon thread */
|
||||||
|
|
||||||
@@ -760,8 +760,8 @@ int bcmf_sdio_thread(int argc, char **argv)
|
|||||||
|
|
||||||
/* Restart the waitdog timer */
|
/* Restart the waitdog timer */
|
||||||
|
|
||||||
wd_start(sbus->waitdog, BCMF_WAITDOG_TIMEOUT_TICK,
|
(void)wd_start(sbus->waitdog, BCMF_WAITDOG_TIMEOUT_TICK,
|
||||||
bcmf_sdio_waitdog_timeout, (wdparm_t)priv);
|
bcmf_sdio_waitdog_timeout, (wdparm_t)priv);
|
||||||
|
|
||||||
/* Wake up device */
|
/* Wake up device */
|
||||||
|
|
||||||
|
|||||||
@@ -303,11 +303,8 @@ static int automount_unmount(FAR struct automounter_state_s *priv)
|
|||||||
(uint32_t)((uintptr_t)priv));
|
(uint32_t)((uintptr_t)priv));
|
||||||
if (ret < 0)
|
if (ret < 0)
|
||||||
{
|
{
|
||||||
errcode = get_errno();
|
ferr("ERROR: wd_start failed: %d\n", ret);
|
||||||
DEBUGASSERT(errcode > 0);
|
return ret;
|
||||||
|
|
||||||
ferr("ERROR: wd_start failed: %d\n", errcode);
|
|
||||||
return -ret;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* include/nuttx/wdog.h
|
* include/nuttx/wdog.h
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2009, 2014-2015 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2009, 2014-2015, 2018 Gregory Nutt. All rights
|
||||||
|
* reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -196,7 +197,8 @@ WDOG_ID wd_create(void);
|
|||||||
* watchdog structure.
|
* watchdog structure.
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Returns OK or ERROR
|
* Zero (OK) is returned on success; a negated errno value is return to
|
||||||
|
* indicate the nature of any failure.
|
||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* The caller has assured that the watchdog is no longer in use.
|
* The caller has assured that the watchdog is no longer in use.
|
||||||
@@ -230,7 +232,8 @@ int wd_delete(WDOG_ID wdog);
|
|||||||
* parm1..4 - parameters to pass to wdentry
|
* parm1..4 - parameters to pass to wdentry
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* OK or ERROR
|
* Zero (OK) is returned on success; a negated errno value is return to
|
||||||
|
* indicate the nature of any failure.
|
||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* The watchdog routine runs in the context of the timer interrupt handler
|
* The watchdog routine runs in the context of the timer interrupt handler
|
||||||
|
|||||||
@@ -239,8 +239,8 @@ ssize_t nxmq_timedreceive(mqd_t mqdes, FAR char *msg, size_t msglen,
|
|||||||
|
|
||||||
/* Start the watchdog */
|
/* Start the watchdog */
|
||||||
|
|
||||||
wd_start(rtcb->waitdog, ticks, (wdentry_t)nxmq_rcvtimeout,
|
(void)wd_start(rtcb->waitdog, ticks, (wdentry_t)nxmq_rcvtimeout,
|
||||||
1, getpid());
|
1, getpid());
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Get the message from the message queue */
|
/* Get the message from the message queue */
|
||||||
|
|||||||
@@ -271,7 +271,8 @@ int nxmq_timedsend(mqd_t mqdes, FAR const char *msg, size_t msglen, int prio,
|
|||||||
|
|
||||||
/* Start the watchdog and begin the wait for MQ not full */
|
/* Start the watchdog and begin the wait for MQ not full */
|
||||||
|
|
||||||
wd_start(rtcb->waitdog, ticks, (wdentry_t)nxmq_sndtimeout, 1, getpid());
|
(void)wd_start(rtcb->waitdog, ticks, (wdentry_t)nxmq_sndtimeout,
|
||||||
|
1, getpid());
|
||||||
|
|
||||||
/* And wait for the message queue to be non-empty */
|
/* And wait for the message queue to be non-empty */
|
||||||
|
|
||||||
|
|||||||
@@ -274,8 +274,10 @@ int pthread_cond_timedwait(FAR pthread_cond_t *cond, FAR pthread_mutex_t *mutex,
|
|||||||
{
|
{
|
||||||
/* Start the watchdog */
|
/* Start the watchdog */
|
||||||
|
|
||||||
wd_start(rtcb->waitdog, ticks, (wdentry_t)pthread_condtimedout,
|
(void)wd_start(rtcb->waitdog, ticks,
|
||||||
2, (uint32_t)mypid, (uint32_t)SIGCONDTIMEDOUT);
|
(wdentry_t)pthread_condtimedout,
|
||||||
|
2, (uint32_t)mypid,
|
||||||
|
(uint32_t)SIGCONDTIMEDOUT);
|
||||||
|
|
||||||
/* Take the condition semaphore. Do not restore interrupts
|
/* Take the condition semaphore. Do not restore interrupts
|
||||||
* until we return from the wait. This is necessary to
|
* until we return from the wait. This is necessary to
|
||||||
|
|||||||
@@ -356,8 +356,8 @@ int nxsig_timedwait(FAR const sigset_t *set, FAR struct siginfo *info,
|
|||||||
|
|
||||||
/* Start the watchdog */
|
/* Start the watchdog */
|
||||||
|
|
||||||
wd_start(rtcb->waitdog, waitticks, (wdentry_t)nxsig_timeout,
|
(void)wd_start(rtcb->waitdog, waitticks,
|
||||||
1, wdparm.pvarg);
|
(wdentry_t)nxsig_timeout, 1, wdparm.pvarg);
|
||||||
|
|
||||||
/* Now wait for either the signal or the watchdog */
|
/* Now wait for either the signal or the watchdog */
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* sched/timer/timer_settime.c
|
* sched/timer/timer_settime.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2010, 2013-2016 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2010, 2013-2016, 2018 Gregory Nutt. All rights
|
||||||
|
* reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -390,6 +391,15 @@ int timer_settime(timer_t timerid, int flags,
|
|||||||
timer->pt_last = delay;
|
timer->pt_last = delay;
|
||||||
ret = wd_start(timer->pt_wdog, delay, (wdentry_t)timer_timeout,
|
ret = wd_start(timer->pt_wdog, delay, (wdentry_t)timer_timeout,
|
||||||
1, (uint32_t)((wdparm_t)timer));
|
1, (uint32_t)((wdparm_t)timer));
|
||||||
|
if (ret < 0)
|
||||||
|
{
|
||||||
|
set_errno(-ret);
|
||||||
|
ret = ERROR;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ret = OK;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
leave_critical_section(intflags);
|
leave_critical_section(intflags);
|
||||||
|
|||||||
@@ -68,7 +68,8 @@
|
|||||||
* watchdog structure.
|
* watchdog structure.
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* Returns OK or ERROR
|
* Zero (OK) is returned on success; a negated errno value is return to
|
||||||
|
* indicate the nature of any failure.
|
||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* The caller has assured that the watchdog is no longer in use.
|
* The caller has assured that the watchdog is no longer in use.
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
/****************************************************************************
|
/****************************************************************************
|
||||||
* sched/wdog/wd_start.c
|
* sched/wdog/wd_start.c
|
||||||
*
|
*
|
||||||
* Copyright (C) 2007-2009, 2012, 2014, 2016 Gregory Nutt. All rights reserved.
|
* Copyright (C) 2007-2009, 2012, 2014, 2016, 2018 Gregory Nutt. All
|
||||||
|
* rights reserved.
|
||||||
* Author: Gregory Nutt <gnutt@nuttx.org>
|
* Author: Gregory Nutt <gnutt@nuttx.org>
|
||||||
*
|
*
|
||||||
* Redistribution and use in source and binary forms, with or without
|
* Redistribution and use in source and binary forms, with or without
|
||||||
@@ -103,8 +104,6 @@ typedef void (*wdentry4_t)(int argc, wdparm_t arg1, wdparm_t arg2,
|
|||||||
* Return Value:
|
* Return Value:
|
||||||
* None
|
* None
|
||||||
*
|
*
|
||||||
* Assumptions:
|
|
||||||
*
|
|
||||||
****************************************************************************/
|
****************************************************************************/
|
||||||
|
|
||||||
static inline void wd_expiration(void)
|
static inline void wd_expiration(void)
|
||||||
@@ -211,7 +210,8 @@ static inline void wd_expiration(void)
|
|||||||
* parm1..4 - parameters to pass to wdentry
|
* parm1..4 - parameters to pass to wdentry
|
||||||
*
|
*
|
||||||
* Return Value:
|
* Return Value:
|
||||||
* OK or ERROR
|
* Zero (OK) is returned on success; a negated errno value is return to
|
||||||
|
* indicate the nature of any failure.
|
||||||
*
|
*
|
||||||
* Assumptions:
|
* Assumptions:
|
||||||
* The watchdog routine runs in the context of the timer interrupt handler
|
* The watchdog routine runs in the context of the timer interrupt handler
|
||||||
@@ -229,12 +229,11 @@ int wd_start(WDOG_ID wdog, int32_t delay, wdentry_t wdentry, int argc, ...)
|
|||||||
irqstate_t flags;
|
irqstate_t flags;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
/* Verify the wdog */
|
/* Verify the wdog and setup parameters */
|
||||||
|
|
||||||
if (!wdog || argc > CONFIG_MAX_WDOGPARMS || delay < 0)
|
if (wdog == NULL || argc > CONFIG_MAX_WDOGPARMS || delay < 0)
|
||||||
{
|
{
|
||||||
set_errno(EINVAL);
|
return -EINVAL;
|
||||||
return ERROR;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Check if the watchdog has been started. If so, stop it.
|
/* Check if the watchdog has been started. If so, stop it.
|
||||||
|
|||||||
Reference in New Issue
Block a user