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.


Release 1.0
[palacios.git] / geekos / include / uip / lc.h
1 /*
2  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions
7  * are met:
8  * 1. Redistributions of source code must retain the above copyright
9  *    notice, this list of conditions and the following disclaimer.
10  * 2. Redistributions in binary form must reproduce the above copyright
11  *    notice, this list of conditions and the following disclaimer in the
12  *    documentation and/or other materials provided with the distribution.
13  * 3. Neither the name of the Institute nor the names of its contributors
14  *    may be used to endorse or promote products derived from this software
15  *    without specific prior written permission.
16  *
17  * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
18  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
19  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
20  * ARE DISCLAIMED.  IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
21  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27  * SUCH DAMAGE.
28  *
29  * This file is part of the uIP TCP/IP stack
30  *
31  * Author: Adam Dunkels <adam@sics.se>
32  *
33  * $Id: lc.h,v 1.2 2008/08/06 23:40:07 andrewlxia Exp $
34  */
35
36 /**
37  * \addtogroup pt
38  * @{
39  */
40
41 /**
42  * \defgroup lc Local continuations
43  * @{
44  *
45  * Local continuations form the basis for implementing protothreads. A
46  * local continuation can be <i>set</i> in a specific function to
47  * capture the state of the function. After a local continuation has
48  * been set can be <i>resumed</i> in order to restore the state of the
49  * function at the point where the local continuation was set.
50  *
51  *
52  */
53
54 /**
55  * \file lc.h
56  * Local continuations
57  * \author
58  * Adam Dunkels <adam@sics.se>
59  *
60  */
61
62 #ifdef DOXYGEN
63 /**
64  * Initialize a local continuation.
65  *
66  * This operation initializes the local continuation, thereby
67  * unsetting any previously set continuation state.
68  *
69  * \hideinitializer
70  */
71 #define LC_INIT(lc)
72
73 /**
74  * Set a local continuation.
75  *
76  * The set operation saves the state of the function at the point
77  * where the operation is executed. As far as the set operation is
78  * concerned, the state of the function does <b>not</b> include the
79  * call-stack or local (automatic) variables, but only the program
80  * counter and such CPU registers that needs to be saved.
81  *
82  * \hideinitializer
83  */
84 #define LC_SET(lc)
85
86 /**
87  * Resume a local continuation.
88  *
89  * The resume operation resumes a previously set local continuation, thus
90  * restoring the state in which the function was when the local
91  * continuation was set. If the local continuation has not been
92  * previously set, the resume operation does nothing.
93  *
94  * \hideinitializer
95  */
96 #define LC_RESUME(lc)
97
98 /**
99  * Mark the end of local continuation usage.
100  *
101  * The end operation signifies that local continuations should not be
102  * used any more in the function. This operation is not needed for
103  * most implementations of local continuation, but is required by a
104  * few implementations.
105  *
106  * \hideinitializer
107  */
108 #define LC_END(lc)
109
110 /**
111  * \var typedef lc_t;
112  *
113  * The local continuation type.
114  *
115  * \hideinitializer
116  */
117 #endif /* DOXYGEN */
118
119 #ifndef __LC_H__
120 #define __LC_H__
121
122 #ifdef LC_CONF_INCLUDE
123 #include LC_CONF_INCLUDE
124 #else
125 #include <uip/lc-switch.h>
126 #endif /* LC_CONF_INCLUDE */
127
128 #endif /* __LC_H__ */
129
130 /** @} */
131 /** @} */