Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
watchdog.c File Reference
#include <unistd.h>
#include "os/watchdog.h"
#include "os/os.h"

Go to the source code of this file.

Functions

static void * watchdog_thread (void *arg)
 Thread running a watchdog.
 
void start_watchdog (int period_msec)
 Starts a watchdog thread that must be reset more often than period_msec.
 
void reset_watchdog (void)
 Resets the watchdog.
 
void add_watchdog_reset_timer (int period_msec)
 Inserts a timer that will periodically reset the watchdog, thereby practically making the watchdog watch the timer thread.
 

Variables

static int watchdog_period_msec
 What is the timeout of the watchdog in milliseconds.
 
static int watchdog_ticks = 0
 How many times have we seen the watchdog tick without being fed.
 

Detailed Description

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Implements a simple software watchdog that runs a thread which terminates if the watchdog was not reset in the given period.

Author
Balazs Racz
Date
26 May 2013

Definition in file watchdog.c.

Macro Definition Documentation

◆ _DEFAULT_SOURCE

#define _DEFAULT_SOURCE

Definition at line 36 of file watchdog.c.

Function Documentation

◆ add_watchdog_reset_timer()

void add_watchdog_reset_timer ( int  period_msec)

Inserts a timer that will periodically reset the watchdog, thereby practically making the watchdog watch the timer thread.

This makes it possible to add timers that watch other resources for not overflowing.

Parameters
period_msectells how often to reset the watchdog.

Definition at line 93 of file watchdog.c.

◆ reset_watchdog()

void reset_watchdog ( void  )

Resets the watchdog.

Definition at line 80 of file watchdog.c.

◆ start_watchdog()

void start_watchdog ( int  period_msec)

Starts a watchdog thread that must be reset more often than period_msec.

Definition at line 67 of file watchdog.c.

◆ watchdog_thread()

static void * watchdog_thread ( void *  arg)
static

Thread running a watchdog.

Definition at line 50 of file watchdog.c.

Variable Documentation

◆ watchdog_period_msec

int watchdog_period_msec
static

What is the timeout of the watchdog in milliseconds.

Definition at line 45 of file watchdog.c.

◆ watchdog_ticks

int watchdog_ticks = 0
static

How many times have we seen the watchdog tick without being fed.

Definition at line 47 of file watchdog.c.