Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Halt handling uses global performance parameters to decide yield strategy
[palacios.git] / geekos / include / uip / timer.h
1 /**
2  * \defgroup timer Timer library
3  *
4  * The timer library provides functions for setting, resetting and
5  * restarting timers, and for checking if a timer has expired. An
6  * application must "manually" check if its timers have expired; this
7  * is not done automatically.
8  *
9  * A timer is declared as a \c struct \c timer and all access to the
10  * timer is made by a pointer to the declared timer.
11  *
12  * \note The timer library uses the \ref clock "Clock library" to
13  * measure time. Intervals should be specified in the format used by
14  * the clock library.
15  *
16  * @{
17  */
18
19
20 /**
21  * \file
22  * Timer library header file.
23  * \author
24  * Adam Dunkels <adam@sics.se>
25  */
26
27 /*
28  * Copyright (c) 2004, Swedish Institute of Computer Science.
29  * All rights reserved.
30  *
31  * Redistribution and use in source and binary forms, with or without
32  * modification, are permitted provided that the following conditions
33  * are met:
34  * 1. Redistributions of source code must retain the above copyright
35  *    notice, this list of conditions and the following disclaimer.
36  * 2. Redistributions in binary form must reproduce the above copyright
37  *    notice, this list of conditions and the following disclaimer in the
38  *    documentation and/or other materials provided with the distribution.
39  * 3. Neither the name of the Institute nor the names of its contributors
40  *    may be used to endorse or promote products derived from this software
41  *    without specific prior written permission.
42  *
43  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
44  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
45  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
46  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
47  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
48  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
49  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
50  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
51  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
52  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
53  * SUCH DAMAGE.
54  *
55  * This file is part of the uIP TCP/IP stack
56  *
57  * Author: Adam Dunkels <adam@sics.se>
58  *
59  * $Id: timer.h,v 1.2 2008/08/06 23:40:07 andrewlxia Exp $
60  */
61 #ifndef __TIMER_H__
62 #define __TIMER_H__
63
64 #include <uip/clock.h>
65
66 /**
67  * A timer.
68  *
69  * This structure is used for declaring a timer. The timer must be set
70  * with timer_set() before it can be used.
71  *
72  * \hideinitializer
73  */
74 struct timer {
75   clock_time_t start;
76   clock_time_t interval;
77 };
78
79 void timer_set(struct timer *t, clock_time_t interval);
80 void timer_reset(struct timer *t);
81 void timer_restart(struct timer *t);
82 int timer_expired(struct timer *t);
83
84 #endif /* __TIMER_H__ */
85
86 /** @} */