uIP 1.0
C:/asm/STM32-ethernet/ENC28J60prj/uip-master/uip/lc.h
См. документацию.
00001 /*
00002  * Copyright (c) 2004-2005, Swedish Institute of Computer Science.
00003  * Все права зарезервированы. *
00004  * Повторное распространение, использование в исходном и двоичном виде,
00005  * с модификацией или без - разрешается, если выполняются следующие
00006  * условия:
00007  * 1. Распространение исходного кода должно сохранить вышеуказанную пометку
00008  *    копирайта, этот список условий и следующую правовую оговорку.
00009  * 2. Распространение исходного кода должно сохранить вышеуказанную пометку
00010  *    копирайта, этот список условий и следующую правовую оговорку в
00011  *    документации и/или других материалах, которые будут предоставлены
00012  *    вместе с распространяемыми материалами.
00013  * 3. Имя автора не может использоваться, чтобы подтвердить или продвинуть
00014  *    продукты, написанные с использованием этого программного обеспечения
00015  *    без специального на то разрешения.
00016  *
00017  * ЭТО ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ АВТОРОМ ``КАК ЕСТЬ'', БЕЗ
00018  * КАКОЙ-ЛИБО ЛЮБОЙ РАСШИРЕННОЙ ИЛИ ПОДРАЗУМЕВАЕМОЙ ГАРАНТИИ, ВКЛЮЧАЯ,
00019  * НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМ, ГАРАНТИИ ВЫСОКОГО СПРОСА И ПРИГОДНОСТИ
00020  * ДЛЯ КОНКРЕТНОЙ ЦЕЛИ. АВТОР НИ ПРИ КАКИХ УСЛОВИЯХ НЕ ОТВЕТСТВЕНЕН
00021  * ЗА ЛЮБЫЕ УБЫТКИ - ПРЯМЫЕ, КОСВЕННЫЕ, СЛУЧАЙНЫЕ, СПЕЦИАЛЬНЫЕ, ОБРАЗЦОВЫЕ
00022  * ИЛИ ПОСЛЕДОВАТЕЛЬНЫЕ (ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ ЭТИМ, ТРЕБОВАНИЯ
00023  * ЗАМЕНЫ ТОВАРА ИЛИ СЕРВИСА; ПОТЕРИ ИСПОЛЬЗОВАНИЯ, ДАННЫХ ИЛИ ВЫГОДЫ;
00024  * ИЛИ ПРЕКРАЩЕНИЕ БИЗНЕСА), ОДНАКО ВЫЗВАННЫЕ ПО ЛЮБОЙ ТЕОРИИ ОТВЕТСТВЕННОСТИ,
00025  * ЛИБО В КОНТРАКТЕ, ПРЯМОЙ ОТВЕТСТВЕННОСТИ, ЛИБО В НАРУШЕНИИ ЗАКОННЫХ ПРАВ
00026  * (ВКЛЮЧАЯ ТАК ИЛИ ИНАЧЕ НЕБРЕЖНОСТЬ), ВОЗНИКАЮЩИЕ ВСЕГДА ИЗ ИСПОЛЬЗОВАНИЯ
00027  * ЭТОГО ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ, ДАЖЕ ЕСЛИ БЫЛО ПРЕДУПРЕЖДЕНИЕ О ВОЗМОЖНОСТИ
00028  * ТАКОГО ПОВРЕЖДЕНИЯ.
00029  *
00030  * Этот файл является частью стека uIP TCP/IP.
00031  *
00032  * Author: Adam Dunkels <adam@sics.se>
00033  *
00034  * $Id: lc.h,v 1.2 2006/06/12 08:00:30 adam Exp $
00035  */
00036 
00037 /**
00038  * \addtogroup pt
00039  * @{
00040  */
00041 
00042 /**
00043  * \defgroup lc Локальные продолжения (Local continuations, далее LC)
00044  * @{
00045  *
00046  * LC являются базой для реализации протопотоков. LC может быть <i>set</i> 
00047  * (установлено) в отдельной функции в захват состояния функции. После того,
00048  * как LC было установлено, оно может быть <i>resumed</i> (возобновлено)
00049  * для восстановления состояния функции в точке, где было установлено LC.
00050  *
00051  *
00052  */
00053 
00054 /**
00055  * \file lc.h
00056  * Local continuations (локальные продолжения, LC)
00057  * \author
00058  * Adam Dunkels <adam@sics.se>
00059  *
00060  */
00061 
00062 #ifdef DOXYGEN
00063 /**
00064  * Инициализирует LC.
00065  *
00066  * Эта операция инициализирует LC, так что сбрасывается любое ранее
00067  * установленное состояние LC.
00068  *
00069  * \hideinitializer
00070  */
00071 #define LC_INIT(lc)
00072 
00073 /**
00074  * Установка LC.
00075  *
00076  * Операция set (установка) сохраняет состояние функции в точке, где
00077  * операция установки была выполнена. Операция set сохраняет состояние
00078  * функции не очень глубоко, так что это сохранение <b>не</b> включает
00079  * переменные, передаваемые через стек (call-stack) или локальные 
00080  * (автоматические) переменные. Сохраняется только программный счетчик
00081  * и регистры CPU, которые должны быть сохранены.
00082  *
00083  * \hideinitializer
00084  */
00085 #define LC_SET(lc)
00086 
00087 /**
00088  * Возобновление LC.
00089  *
00090  * Операция resume (возобновление) восстанавливает выполнение ранее
00091  * установленного LC, так что выполнение функции продолжается с места,
00092  * где LC было установлено. Если LC не было ранее установлено, то 
00093  * resume ничего не делает.
00094  *
00095  * \hideinitializer
00096  */
00097 #define LC_RESUME(lc)
00098 
00099 /**
00100  * Пометка места окончания использования LC.
00101  *
00102  * Операция end (завершение) обозначает, что LC не должны больше нигде
00103  * далее использоваться в функции. Эта операция не нужна для большинства
00104  * реализаций LC, но в некоторых случаях она нужна.
00105  *
00106  * \hideinitializer
00107  */
00108 #define LC_END(lc)
00109 
00110 /**
00111  * \var typedef lc_t;
00112  *
00113  * Тип для LC.
00114  *
00115  * \hideinitializer
00116  */
00117 #endif /* DOXYGEN */
00118 
00119 #ifndef __LC_H__
00120 #define __LC_H__
00121 
00122 #ifdef LC_CONF_INCLUDE
00123 #include LC_CONF_INCLUDE
00124 #else
00125 #include "lc-switch.h"
00126 #endif /* LC_CONF_INCLUDE */
00127 
00128 #endif /* __LC_H__ */
00129 
00130 /** @} */
00131 /** @} */