Initial revision
This commit is contained in:
55
proj/unixsim/apps/fs.c
Normal file
55
proj/unixsim/apps/fs.c
Normal file
@@ -0,0 +1,55 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#include "lwip/def.h"
|
||||
#include "fs.h"
|
||||
#include "fsdata.h"
|
||||
#include "fsdata.c"
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
int
|
||||
fs_open(char *name, struct fs_file *file)
|
||||
{
|
||||
struct fsdata_file_noconst *f;
|
||||
|
||||
for(f = (struct fsdata_file_noconst *)FS_ROOT; f != NULL; f = (struct fsdata_file_noconst *)f->next) {
|
||||
if(!strcmp(name, f->name)) {
|
||||
file->data = f->data;
|
||||
file->len = f->len;
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
44
proj/unixsim/apps/fs.h
Normal file
44
proj/unixsim/apps/fs.h
Normal file
@@ -0,0 +1,44 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __FS_H__
|
||||
#define __FS_H__
|
||||
|
||||
struct fs_file {
|
||||
char *data;
|
||||
int len;
|
||||
};
|
||||
|
||||
/* file must be allocated by caller and will be filled in
|
||||
by the function. */
|
||||
int fs_open(char *name, struct fs_file *file);
|
||||
|
||||
#endif /* __FS_H__ */
|
||||
191
proj/unixsim/apps/fs/documentation.html
Normal file
191
proj/unixsim/apps/fs/documentation.html
Normal file
@@ -0,0 +1,191 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - Documentation</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
[Documentation]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>Documentation</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
<ul>
|
||||
<li><a href="os.html">Using lwIP with and without an operating
|
||||
system</a>.
|
||||
<br><br>
|
||||
|
||||
<li>The lwIP source archive contains documentation on how to port lwIP
|
||||
and how to write applications using the native API. They can also be
|
||||
found here: <a href="doc/sys_arch.txt">sys_arch.txt</a>, <a
|
||||
href="doc/rawapi.txt">rawapi.txt</a>.
|
||||
<br><br>
|
||||
|
||||
<li>Selected messages from the mailinglist: <a
|
||||
href="maillist/msg00231.html">lwIP memory buffers and allocators</a>,
|
||||
<a href="maillist/msg00227.html">Threads, semaphores and raw interface
|
||||
question</a>, <a href="maillist/msg00242.html">Threads, semaphores and
|
||||
raw interface question [2]</a>. <a href="maillist/msg00460.html">Some notes on using lwIP with the development enviroment ADS
|
||||
1.1 from ARM.</a>
|
||||
<br><br>
|
||||
|
||||
<li>A report describing the design and implementation of an old
|
||||
version of lwIP. The algorithms and data structures used both in the
|
||||
protocol implementations and in the sub systems such as the memory and
|
||||
buffer management systems are described. Also included in this report
|
||||
is a reference manual for the lwIP sequential API and some code
|
||||
examples of using lwIP. <a href="doc/lwip.pdf">PDF</a>, <a
|
||||
href="doc/lwip.ps.gz">.ps.gz</a>.
|
||||
|
||||
<br><br>
|
||||
|
||||
<li>Slides from a presentation that talks a bit about lwIP: <a
|
||||
href="doc/pres.pdf">PDF</a> (86k), <a href="doc/pres.ps.gz">.ps.gz</a>
|
||||
(36k).
|
||||
</ul>
|
||||
|
||||
<p align="justify">
|
||||
For more documentation regarding lwIP and a proxy architecture to
|
||||
support TCP/IP communication for small clients, look in <a
|
||||
href="/~adam/publications.html">Adam Dunkels' masters thesis</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<p align="justify">
|
||||
The <a href="mailinglist.html">lwIP mailing list</a> can be used to
|
||||
discuss lwIP.
|
||||
</p>
|
||||
|
||||
<p align="justify">
|
||||
For questions or suggestions, please contact the author at <a
|
||||
href="mailto:Adam Dunkels <adam@sics.se>">Adam Dunkels
|
||||
<adam@sics.se></a>.
|
||||
</p>
|
||||
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:01 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
[Documentation]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
232
proj/unixsim/apps/fs/download.html
Normal file
232
proj/unixsim/apps/fs/download.html
Normal file
@@ -0,0 +1,232 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - Download</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
[Download]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>Download</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
|
||||
<p align="justify">
|
||||
lwIP is avaliable for download provided that you read and accept <a
|
||||
href="licence.html">this</a> BSD-style license.
|
||||
</p>
|
||||
|
||||
<h3>Release versions</h3>
|
||||
<p align="justify">
|
||||
The latest version is 0.5.3. (Older versions are also provided for an
|
||||
unknown reason.)
|
||||
</p>
|
||||
<ul>
|
||||
<li>Version 0.5.3 (latest): <a
|
||||
href="download/?f=lwip-0.5.3.tar.gz">lwip-0.5.3.tar.gz</a>
|
||||
<br><br>
|
||||
|
||||
<li>
|
||||
<font size="-2">
|
||||
Obsolete versions: <a
|
||||
href="download/?f=lwip-0.5.2.tar.gz">lwip-0.5.2.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.5.1.tar.gz">lwip-0.5.1.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.5.0.tar.gz">lwip-0.5.0.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.4.2.tar.gz">lwip-0.4.2.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.4.1.tar.gz">lwip-0.4.1.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.4.tar.gz">lwip-0.4.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.3.1.tar.gz">lwip-0.3.1.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.3.tar.gz">lwip-0.3.tar.gz</a>
|
||||
<a
|
||||
href="download/?f=lwip-0.2.tar.gz">lwip-0.2.tar.gz</a>
|
||||
</font>
|
||||
<br>
|
||||
</ul>
|
||||
|
||||
<h3>Development version</h3>
|
||||
<p align="justify">
|
||||
The latest development code from the CVS is also avaliable <a
|
||||
href="download/?f=lwip-cvs.tar.gz">here</a>. Note that this code may
|
||||
very well be unstable and might not even compile.
|
||||
</p>
|
||||
|
||||
<h3>Source code online</h3>
|
||||
<p align="justify">
|
||||
Joe MacDonald has put an HTML version of the latest lwIP source code
|
||||
online at <a
|
||||
href="http://www.deserted.net/lwIP/">http://www.deserted.net/lwIP/</a>.
|
||||
</p>
|
||||
|
||||
<h3>Ports</h3>
|
||||
<p align="justify">
|
||||
Florian Shulze has ported lwIP to DJGPP/MS-DOS and to Visual C++
|
||||
6.0/Win32. They can be downloaded <a
|
||||
href="http://homepages.fh-giessen.de/~hg10836/dev/djgpp/lwipdjgpptest-0.1.zip">here</a>
|
||||
(DJGPP/MS-DOS) and <a
|
||||
href="http://homepages.fh-giessen.de/~hg10836/crowproductions/dev/lwip-win32-msvc-0.1.zip">here</a>
|
||||
(Visual C++ 6.0/Win32).
|
||||
</p>
|
||||
|
||||
<h3>Add-ons/drivers/applications</h3>
|
||||
|
||||
<h4>DHCP client</h4>
|
||||
<p align="justify">
|
||||
Leon Woestenberg from Axon Digital Design B.V. has written a CS8900a
|
||||
network interface driver and is currently developing a DHCP client for
|
||||
lwIP. They can both be found <a
|
||||
href="http://www.esrac.ele.tue.nl/~leon/lwip/">here</a>. The plan is
|
||||
to eventually integrate Leon's DHCP client in the main lwIP
|
||||
distribution.
|
||||
</p>
|
||||
|
||||
<h4>IGMPv2 implementation</h4>
|
||||
<p align="justify">
|
||||
Steve Reynolds of Citel Technologies Ltd. has donated his IGMPv2
|
||||
implementation for lwIP to the community. It is avaliable for download
|
||||
<a href="download/igmpfiles.zip">here</a> (note that the copyright and
|
||||
license differs slightly from lwIP - read the license in the igmp.c
|
||||
file). The plan is to integrate his code into the main lwIP
|
||||
distribution.
|
||||
</p>
|
||||
|
||||
<h4>Alternative BSD socket layer</h4>
|
||||
<p align="justify">
|
||||
Paul Sheer has incorporated lwIP into his PaulOS system and has
|
||||
written an alternative BSD socket layer. It is avaliable for download
|
||||
<a href="download/bsdsocket.c">here</a>. It is copyright Paul Sheer
|
||||
and licensed under the <a
|
||||
href="http://www.gnu.org/licenses/gpl.html">GNU GPL</a>.
|
||||
</p>
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:06 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
[Download]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
BIN
proj/unixsim/apps/fs/img/sics.gif
Normal file
BIN
proj/unixsim/apps/fs/img/sics.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 724 B |
169
proj/unixsim/apps/fs/licence.html
Normal file
169
proj/unixsim/apps/fs/licence.html
Normal file
@@ -0,0 +1,169 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - lwIP source code licence</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>lwIP source code licence</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
Copyright (c) 2001, Swedish Institute of Computer Science.
|
||||
All rights reserved.<br>
|
||||
<br>
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:<br>
|
||||
<ol>
|
||||
<li> Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.<br>
|
||||
<br>
|
||||
<li> 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.<br>
|
||||
<br>
|
||||
<li> Neither the name of the Institute nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission. <br>
|
||||
</ol>
|
||||
<br>
|
||||
THIS SOFTWARE IS PROVIDED BY THE INSTITUTE 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 INSTITUTE 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. <br>
|
||||
|
||||
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:01 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
266
proj/unixsim/apps/fs/links.html
Normal file
266
proj/unixsim/apps/fs/links.html
Normal file
@@ -0,0 +1,266 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - Links</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
[Links]
|
||||
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>Links</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
lwIP pages:
|
||||
<ul>
|
||||
<li><a href="http://www.esrac.ele.tue.nl/~leon/lwip/">Leon Woestenberg's lwIP page</a>
|
||||
</ul>
|
||||
|
||||
Companies using lwIP in their products:
|
||||
<ul>
|
||||
<li>UK based <a href="http://www.tangentdevices.co.uk/">Tangent Devices Ltd</a> are incorporating lwIP in their film
|
||||
and video post-production equipment.
|
||||
<li><a href="http://www.axon.tv">Axon Digital Design BV</a> in The
|
||||
Netherlands is merging lwIP with their current IP stack for use in the
|
||||
Synapse modular broadcasting system.
|
||||
</ul>
|
||||
|
||||
Projects using lwIP:
|
||||
<ul>
|
||||
<li><a href="http://www.cdt.luth.se/projects/arena/">The ARENA Project</a> - Hockey players equipped with pulse and breathing sensors running lwIP.<br>
|
||||
<li><a href="http://bart.sm.luth.se/eis2001/">The Embedded Internet Systems 2001 Student Project</a> - Flow meter and belt tension sensors
|
||||
running lwIP.<br>
|
||||
<li><a href="http://dcdev.allusion.net/">KOS</a> - The KOS operating system for
|
||||
Sega Dreamcast uses lwIP.<br>
|
||||
</ul>
|
||||
|
||||
Other small TCP/IP implementations:
|
||||
<ul>
|
||||
<li><a href="http://dunkels.com/adam/uip/">uIP</a> - A very small TCP/IP
|
||||
implementation, suitable for systems with hundreds of bytes free RAM
|
||||
and a few kilobytes of free code space.<br>
|
||||
<li><a href="http://ucip.sourceforge.net/">uC/IP</a> - uC/IP is a BSD-based
|
||||
TCP/IP protocol stack for microcontrollers.<br>
|
||||
<li><a href="http://liquorice.sourceforge.net">Liquorice</a> - Liquorice
|
||||
includes a TCP/IP stack.<br>
|
||||
<li><a href="http://www.nenie.org/cpcip/">CPC/IP</a> - A TCP/IP stack for
|
||||
Amstrad CPCs.<br>
|
||||
<li><a href="http://lng.sourceforge.net/">LUnix</a> - LUnix contains a small
|
||||
TCP/IP stack.<br>
|
||||
<li><a href="http://www.sweetcherrie.com/jolz64/jos/">JOS</a> - JOS includes a
|
||||
TCP/IP implementation.<br>
|
||||
<li><a href="http://www.csonline.net/bpaddock/tinytcp/default.htm">TinyTCP</a> - A very slim
|
||||
TCP, IP, and FTP implementation.<br>
|
||||
<li><a href="http://kyllikki.fluff.org/hardware/wwwpic2/">WWWpic2</a> - Small
|
||||
HTTP/TCP/IP implementation for a PIC.<br>
|
||||
<li><a href="http://www.rmbeales.fsnet.co.uk/files/html/picserver/picservd.htm">PIC Web Server</a> - Small HTTP/TCP/IP/SLIP PIC implementation.<br>
|
||||
</ul>
|
||||
|
||||
Very small web servers:
|
||||
<ul>
|
||||
<li><a href="http://world.std.com/~fwhite/ace/">webACE</a> - World's Smallest
|
||||
Web Server.<br>
|
||||
<li><a href="http://www-ccs.cs.umass.edu/~shri/iPic.html">iPIC</a> - A Match
|
||||
Head Sized Web Server.<br>
|
||||
</ul>
|
||||
|
||||
Related RFCs:
|
||||
<ul>
|
||||
<li>J. Postel, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc791.txt">Internet Protocol</a>, RFC791, September 1981.
|
||||
<li>J. Postel, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc792.txt">Internet Control Message Protocol</a>, RFC792, September 1981.
|
||||
<li>J. Postel, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc768.txt">User Datagram Protocol</a>, RFC768, August 1980.
|
||||
<li>J. Postel, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc793.txt">Transmission Control Protocol</a>, RFC793, September 1981.
|
||||
<li>D. D. Clark, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc813.txt">Window and Acknowledgement Strategy in TCP</a>, RFC813, July 1982.
|
||||
<li>D. D. Clark, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc817.txt">Modularity and Efficiency in Protocol Implementation</a>, RFC817, July 1982.
|
||||
<li>R. Braden, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc1122.txt">Requirements for Internet Hosts -- Communication Layers</a>, RFC1122, October 1989.
|
||||
<li>T. Mallory and A. Kullberg, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc1141.txt">Incremental Updating of the Internet Checksum</a>, RFC1141, January 1990.
|
||||
<li>A. Rijsinghani, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc1624.txt">Computation of the Internet Checksum via Incremental Update</a>, RFC1624, May 1994.
|
||||
<li>R. Braden, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc1337.txt">TIME-WAIT Assasination Hazards in TCP</a>, RFC1337, May 1992.
|
||||
<li>B. Carpenter, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc1958.txt">Architectural Principles of the Internet</a>, RFC1958, June 1996.
|
||||
<li>M. Allman, V. Paxson and W. Stevens, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc2581.txt">TCP Congestion Control</a>, RFC2581, April 1999.
|
||||
<li>S. Parker and C. Schmechel, <a
|
||||
href="ftp://ftp.ietf.org/rfc/rfc2398.txt">Some Testing Tools for TCP Implementors</a>, RFC2398, August 1998.
|
||||
</ul>
|
||||
|
||||
Related publications:
|
||||
<ul>
|
||||
<li>V. Jacobson. Congestion avoidance and control. In <i>Proceedings of
|
||||
the SIGCOMM '88 Conference</i>, Stanford, California, August 1988.
|
||||
<li>V. Jacobson. 4.3BSD TCP header prediction. <i>ACM Computer
|
||||
Communications Review</i>, 20(2), April 1990.
|
||||
<li>P. Karn and C. Partridge. Improving round-trip time estimates
|
||||
in reliablie transport protocols. In <i>Proceedings of the SIGCOMM '87
|
||||
Conference</i>, Stowe, Vermont, August 1987.
|
||||
<li>J. Kay and J. Pasquale. Profiling and Reducing Processing
|
||||
Overheads in TCP/IP. <i>IEEE/ACM Transactions of Networking</i>, 4(6), December 1996.
|
||||
<li>L. Larzon, M. Degermark, and S. Pink. UDP Lite for
|
||||
real-time multimedia applications. In <i>Proceedings of the IEEE
|
||||
International Conference of Communications</i>, Vancouver, British
|
||||
Columbia, Canada, June 1999.
|
||||
<li>P. E. McKenney and K. F. Dove. Efcient demultiplexing of
|
||||
incoming TCP packets. In <i>Proceedings of the SIGCOMM '92 Conference</i>, Baltimore, Maryland, August 1992.
|
||||
<li>C. Partridge and S. Pink. A faster UDP. <i>IEEE/ACM Transactions
|
||||
in Networking</i>, 1(4), August 1993.
|
||||
</ul>
|
||||
|
||||
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:02 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
[Links]
|
||||
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
187
proj/unixsim/apps/fs/mailinglist.html
Normal file
187
proj/unixsim/apps/fs/mailinglist.html
Normal file
@@ -0,0 +1,187 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - Mailing list</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
[Mailing list]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>Mailing list</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
|
||||
<p align="justify">
|
||||
The lwIP mailing list is the place to discuss lwIP. All topics related
|
||||
to lwIP, such as porting or using lwIP, writing device drivers or
|
||||
application programs for lwIP can be discussed here.
|
||||
</p>
|
||||
|
||||
<h3>Archives</h3>
|
||||
<p align="justify">
|
||||
Archives can be found <a href="maillist/">here</a>.
|
||||
</p>
|
||||
|
||||
<h3>Subscribe</h3>
|
||||
<p align="justify">
|
||||
To subscribe, send a mail to <a
|
||||
href="mailto:majordomo@sics.se">majordomo@sics.se</a> with the message
|
||||
<pre>
|
||||
subscribe lwip
|
||||
|
||||
</pre>
|
||||
in the message body. The subject should be kept blank.
|
||||
</p>
|
||||
<p align="justify">
|
||||
In a few minutes, you should receive a welcome message and some
|
||||
information regarding the subscription, including instructions for
|
||||
unsubscribing. Save those messages for future reference.
|
||||
</p>
|
||||
|
||||
<p align="justify">
|
||||
You are now an lwIP mailing list subscriber!
|
||||
</p>
|
||||
|
||||
<h3>Post</h3>
|
||||
<p align="justify">
|
||||
Posting to the lwIP mailing list is a simple as sending a mail to the
|
||||
address <a href="mailto:lwip@sics.se">lwip@sics.se</a>.
|
||||
</p>
|
||||
|
||||
<h3>Unsubscribe</h3>
|
||||
<p align="justify">
|
||||
To subscribe, send a mail to <a
|
||||
href="mailto:majordomo@sics.se">majordomo@sics.se</a> with the message
|
||||
<pre>
|
||||
unsubscribe lwip
|
||||
|
||||
</pre>
|
||||
in the message body. The subject should be kept blank.
|
||||
</p>
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:02 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
[Mailing list]
|
||||
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
225
proj/unixsim/apps/fs/os.html
Normal file
225
proj/unixsim/apps/fs/os.html
Normal file
@@ -0,0 +1,225 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<html>
|
||||
<head><title>lwIP - A Lightweight TCP/IP Stack - OS vs non-OS</title></head>
|
||||
|
||||
|
||||
<body bgcolor="white">
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td>
|
||||
<center><h1>lwIP - A Lightweight TCP/IP Stack</h1></center>
|
||||
</td></tr></table>
|
||||
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
</td></tr>
|
||||
<tr>
|
||||
<td><center><h2>OS vs non-OS</h2></center>
|
||||
</td></tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0"><tr>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
<td bgcolor="white" width="540">
|
||||
|
||||
<h2>Using lwIP with or without an operating system</h2>
|
||||
|
||||
<p align="justify">
|
||||
There has been a few questions about how lwIP can be used in a
|
||||
standalone environment (i.e., an environment without a multi-threaded
|
||||
operating system) lately. The purpose of this document is to describe
|
||||
how lwIP is designed to be used with and without a multi-threaded
|
||||
operating system.
|
||||
</p>
|
||||
|
||||
<center><img src="os.png"></center>
|
||||
|
||||
<h3>The lwIP single-threaded core</h3>
|
||||
<p align="justify">
|
||||
The core of lwIP consists of the actual implementations of the IP,
|
||||
ICMP, UDP, and TCP protocols, as well as the support functions such as
|
||||
buffer and memory management. The core components are the only ones
|
||||
that are needed when lwIP is to be run in a single-threaded (non-OS)
|
||||
environment.
|
||||
</p>
|
||||
<p align="justify">
|
||||
The core components can be viewed as a software library which has the
|
||||
following interface:
|
||||
</p>
|
||||
<ul>
|
||||
<li><tt>ip_input(pbuf, netif)</tt>: Takes an IP packet and the incoming network
|
||||
interface as arguments and does the TCP/IP processing for the packet.
|
||||
<li><tt>tcp_tmr()</tt>: Should be called every 100 ms. Does all TCP
|
||||
timer processing such as doing retransmissions.
|
||||
</ul>
|
||||
<p align="justify">
|
||||
Because none of the core functions ever needs to block when run in a
|
||||
single-threaded environment, the <tt>sys_arch</tt> (the operating
|
||||
system abstraction layer) does not need to implement locking
|
||||
semaphores or mailboxes. In future versions of lwIP, the dependancy of
|
||||
the <tt>sys_arch</tt> will be removed in the single-threaded case.
|
||||
</p>
|
||||
<p align="justify">
|
||||
A simple main loop for a single-threaded system might look
|
||||
like this:
|
||||
</p>
|
||||
<pre>
|
||||
while(1) {
|
||||
if(poll_driver(netif) == PACKET_READY) {
|
||||
pbuf = get_packet(netif);
|
||||
ip_input(pbuf, netif);
|
||||
}
|
||||
|
||||
if(clock() - last_time == 100 * CLOCK_MS) {
|
||||
tcp_tmr();
|
||||
last_time = clock();
|
||||
}
|
||||
}
|
||||
</pre>
|
||||
|
||||
<h3>lwIP in a multi-threaded system</h3>
|
||||
<p align="justify">
|
||||
lwIP is designed to be able to be run in a multi-threaded system with
|
||||
applications running in concurrent threads. The model used in this
|
||||
case is that all TCP/IP processing is done in a single thread. The
|
||||
application thread communicate with the TCP/IP thread using the
|
||||
sequential API.
|
||||
</p>
|
||||
|
||||
<center><img src="threads.png"></center>
|
||||
|
||||
<p align="justify">
|
||||
The inter-thread communication is implemented in the two files
|
||||
<tt>api_lib.c</tt> and <tt>api_msg.c</tt>. The former contains the
|
||||
functions used by the application programs and the latter implements
|
||||
the TCP/IP stack interface. A third file, <tt>tcpip.c</tt>, handles
|
||||
incoming packets and timer events as described in the previous
|
||||
section.
|
||||
</p>
|
||||
|
||||
<p align="justify">
|
||||
When run in a multi-threaded environment, incoming packets are handled
|
||||
by the function <tt>tcpip_input()</tt>, which takes the same arguments
|
||||
as the <tt>ip_input()</tt> function. The difference between the two
|
||||
functions is that the <tt>tcpip_input()</tt> function does not process
|
||||
the incoming packet immediately. It merely puts the packet on a queue
|
||||
which later is drained by the TCP/IP thread.
|
||||
</p>
|
||||
|
||||
<p align="justify">
|
||||
When being run in a multi-threaded system, timer events are taken care
|
||||
of internally in <tt>tcpip.c</tt>.
|
||||
</p>
|
||||
|
||||
<p align="right">
|
||||
<font size="-1"><i>
|
||||
$Date: 2002/10/19 13:00:03 $
|
||||
</i></font>
|
||||
</p>
|
||||
|
||||
|
||||
</td>
|
||||
<td width="50">
|
||||
|
||||
</td>
|
||||
</tr></table>
|
||||
|
||||
<table width="640" border="0" cellpadding="0"
|
||||
cellspacing="0">
|
||||
<tr><td align="center">
|
||||
|
||||
<hr>
|
||||
|
||||
|
||||
|
||||
|
||||
<a href="index.html">Introduction</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="news.html">News</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="documentation.html">Documentation</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="mailinglist.html">Mailing list</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="changelog.html">Changelog</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="download.html">Download</a>
|
||||
|
||||
|
|
||||
|
||||
<a href="links.html">Links</a>
|
||||
|
||||
|
||||
|
||||
<hr>
|
||||
|
||||
</td></tr><tr>
|
||||
<td>
|
||||
<div align="right">
|
||||
<a href="http://www.sics.se/~adam/">Adam Dunkels</a></div>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
BIN
proj/unixsim/apps/fs/os.png
Normal file
BIN
proj/unixsim/apps/fs/os.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 8.1 KiB |
BIN
proj/unixsim/apps/fs/threads.png
Normal file
BIN
proj/unixsim/apps/fs/threads.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
4188
proj/unixsim/apps/fsdata.c
Normal file
4188
proj/unixsim/apps/fsdata.c
Normal file
File diff suppressed because it is too large
Load Diff
49
proj/unixsim/apps/fsdata.h
Normal file
49
proj/unixsim/apps/fsdata.h
Normal file
@@ -0,0 +1,49 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __FSDATA_H__
|
||||
#define __FSDATA_H__
|
||||
|
||||
struct fsdata_file {
|
||||
const struct fsdata_file *next;
|
||||
const char *name;
|
||||
const char *data;
|
||||
const int len;
|
||||
};
|
||||
|
||||
struct fsdata_file_noconst {
|
||||
struct fsdata_file *next;
|
||||
char *name;
|
||||
char *data;
|
||||
int len;
|
||||
};
|
||||
|
||||
#endif /* __FSDATA_H__ */
|
||||
244
proj/unixsim/apps/httpd.c
Normal file
244
proj/unixsim/apps/httpd.c
Normal file
@@ -0,0 +1,244 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lwip/debug.h"
|
||||
|
||||
#include "lwip/stats.h"
|
||||
|
||||
#include "httpd.h"
|
||||
|
||||
#include "lwip/tcp.h"
|
||||
|
||||
#include "fs.h"
|
||||
|
||||
struct http_state {
|
||||
char *file;
|
||||
u32_t left;
|
||||
u8_t retries;
|
||||
};
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
conn_err(void *arg, err_t err)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
mem_free(hs);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
close_conn(struct tcp_pcb *pcb, struct http_state *hs)
|
||||
{
|
||||
tcp_arg(pcb, NULL);
|
||||
tcp_sent(pcb, NULL);
|
||||
tcp_recv(pcb, NULL);
|
||||
mem_free(hs);
|
||||
tcp_close(pcb);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
send_data(struct tcp_pcb *pcb, struct http_state *hs)
|
||||
{
|
||||
err_t err;
|
||||
u16_t len;
|
||||
|
||||
/* We cannot send more data than space avaliable in the send
|
||||
buffer. */
|
||||
if(tcp_sndbuf(pcb) < hs->left) {
|
||||
len = tcp_sndbuf(pcb);
|
||||
} else {
|
||||
len = hs->left;
|
||||
}
|
||||
|
||||
do {
|
||||
err = tcp_write(pcb, hs->file, len, 0);
|
||||
if(err == ERR_MEM) {
|
||||
len /= 2;
|
||||
}
|
||||
} while(err == ERR_MEM && len > 1);
|
||||
|
||||
if(err == ERR_OK) {
|
||||
hs->file += len;
|
||||
hs->left -= len;
|
||||
/* } else {
|
||||
printf("send_data: error %s len %d %d\n", lwip_strerr(err), len, tcp_sndbuf(pcb));*/
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static err_t
|
||||
http_poll(void *arg, struct tcp_pcb *pcb)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
/* printf("Polll\n");*/
|
||||
if(hs == NULL) {
|
||||
/* printf("Null, close\n");*/
|
||||
tcp_abort(pcb);
|
||||
return ERR_ABRT;
|
||||
} else {
|
||||
++hs->retries;
|
||||
if(hs->retries == 4) {
|
||||
tcp_abort(pcb);
|
||||
return ERR_ABRT;
|
||||
}
|
||||
send_data(pcb, hs);
|
||||
}
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static err_t
|
||||
http_sent(void *arg, struct tcp_pcb *pcb, u16_t len)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
hs->retries = 0;
|
||||
|
||||
if(hs->left > 0) {
|
||||
send_data(pcb, hs);
|
||||
} else {
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static err_t
|
||||
http_recv(void *arg, struct tcp_pcb *pcb, struct pbuf *p, err_t err)
|
||||
{
|
||||
int i;
|
||||
char *data;
|
||||
struct fs_file file;
|
||||
struct http_state *hs;
|
||||
|
||||
hs = arg;
|
||||
|
||||
if(err == ERR_OK && p != NULL) {
|
||||
|
||||
/* Inform TCP that we have taken the data. */
|
||||
tcp_recved(pcb, p->tot_len);
|
||||
|
||||
if(hs->file == NULL) {
|
||||
data = p->payload;
|
||||
|
||||
if(strncmp(data, "GET ", 4) == 0) {
|
||||
for(i = 0; i < 40; i++) {
|
||||
if(((char *)data + 4)[i] == ' ' ||
|
||||
((char *)data + 4)[i] == '\r' ||
|
||||
((char *)data + 4)[i] == '\n') {
|
||||
((char *)data + 4)[i] = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if(*(char *)(data + 4) == '/' &&
|
||||
*(char *)(data + 5) == 0) {
|
||||
fs_open("/index.html", &file);
|
||||
} else if(!fs_open((char *)data + 4, &file)) {
|
||||
fs_open("/404.html", &file);
|
||||
}
|
||||
hs->file = file.data;
|
||||
hs->left = file.len;
|
||||
/* printf("data %p len %ld\n", hs->file, hs->left);*/
|
||||
|
||||
pbuf_free(p);
|
||||
send_data(pcb, hs);
|
||||
|
||||
/* Tell TCP that we wish be to informed of data that has been
|
||||
successfully sent by a call to the http_sent() function. */
|
||||
tcp_sent(pcb, http_sent);
|
||||
} else {
|
||||
pbuf_free(p);
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
} else {
|
||||
pbuf_free(p);
|
||||
}
|
||||
}
|
||||
|
||||
if(err == ERR_OK && p == NULL) {
|
||||
close_conn(pcb, hs);
|
||||
}
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static err_t
|
||||
http_accept(void *arg, struct tcp_pcb *pcb, err_t err)
|
||||
{
|
||||
struct http_state *hs;
|
||||
|
||||
tcp_setprio(pcb, TCP_PRIO_MIN);
|
||||
|
||||
/* Allocate memory for the structure that holds the state of the
|
||||
connection. */
|
||||
hs = mem_malloc(sizeof(struct http_state));
|
||||
|
||||
if(hs == NULL) {
|
||||
printf("http_accept: Out of memory\n");
|
||||
return ERR_MEM;
|
||||
}
|
||||
|
||||
/* Initialize the structure. */
|
||||
hs->file = NULL;
|
||||
hs->left = 0;
|
||||
hs->retries = 0;
|
||||
|
||||
/* Tell TCP that this is the structure we wish to be passed for our
|
||||
callbacks. */
|
||||
tcp_arg(pcb, hs);
|
||||
|
||||
/* Tell TCP that we wish to be informed of incoming data by a call
|
||||
to the http_recv() function. */
|
||||
tcp_recv(pcb, http_recv);
|
||||
|
||||
tcp_err(pcb, conn_err);
|
||||
|
||||
tcp_poll(pcb, http_poll, 4);
|
||||
return ERR_OK;
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void
|
||||
httpd_init(void)
|
||||
{
|
||||
struct tcp_pcb *pcb;
|
||||
|
||||
pcb = tcp_new();
|
||||
tcp_bind(pcb, IP_ADDR_ANY, 80);
|
||||
pcb = tcp_listen(pcb);
|
||||
tcp_accept(pcb, http_accept);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
37
proj/unixsim/apps/httpd.h
Normal file
37
proj/unixsim/apps/httpd.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __HTTPD_H__
|
||||
#define __HTTPD_H__
|
||||
|
||||
void httpd_init(void);
|
||||
|
||||
#endif /* __HTTPD_H__ */
|
||||
97
proj/unixsim/apps/makefsdata
Normal file
97
proj/unixsim/apps/makefsdata
Normal file
@@ -0,0 +1,97 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
open(OUTPUT, "> fsdata.c");
|
||||
|
||||
chdir("fs");
|
||||
open(FILES, "find . -type f |");
|
||||
|
||||
while($file = <FILES>) {
|
||||
|
||||
# Do not include files in CVS directories nor backup files.
|
||||
if($file =~ /(CVS|~)/) {
|
||||
next;
|
||||
}
|
||||
|
||||
chop($file);
|
||||
|
||||
open(HEADER, "> /tmp/header") || die $!;
|
||||
if($file =~ /404/) {
|
||||
print(HEADER "HTTP/1.0 404 File not found\r\n");
|
||||
} else {
|
||||
print(HEADER "HTTP/1.0 200 OK\r\n");
|
||||
}
|
||||
print(HEADER "Server: lwIP/pre-0.6 (http://www.sics.se/~adam/lwip/)\r\n");
|
||||
if($file =~ /\.html$/) {
|
||||
print(HEADER "Content-type: text/html\r\n");
|
||||
} elsif($file =~ /\.gif$/) {
|
||||
print(HEADER "Content-type: image/gif\r\n");
|
||||
} elsif($file =~ /\.png$/) {
|
||||
print(HEADER "Content-type: image/png\r\n");
|
||||
} elsif($file =~ /\.jpg$/) {
|
||||
print(HEADER "Content-type: image/jpeg\r\n");
|
||||
} elsif($file =~ /\.class$/) {
|
||||
print(HEADER "Content-type: application/octet-stream\r\n");
|
||||
} elsif($file =~ /\.ram$/) {
|
||||
print(HEADER "Content-type: audio/x-pn-realaudio\r\n");
|
||||
} else {
|
||||
print(HEADER "Content-type: text/plain\r\n");
|
||||
}
|
||||
print(HEADER "\r\n");
|
||||
close(HEADER);
|
||||
|
||||
unless($file =~ /\.plain$/ || $file =~ /cgi/) {
|
||||
system("cat /tmp/header $file > /tmp/file");
|
||||
} else {
|
||||
system("cp $file /tmp/file");
|
||||
}
|
||||
|
||||
open(FILE, "/tmp/file");
|
||||
unlink("/tmp/file");
|
||||
unlink("/tmp/header");
|
||||
|
||||
$file =~ s/\.//;
|
||||
$fvar = $file;
|
||||
$fvar =~ s-/-_-g;
|
||||
$fvar =~ s-\.-_-g;
|
||||
print(OUTPUT "static const char data".$fvar."[] = {\n");
|
||||
print(OUTPUT "\t/* $file */\n\t");
|
||||
for($j = 0; $j < length($file); $j++) {
|
||||
printf(OUTPUT "%#02x, ", unpack("C", substr($file, $j, 1)));
|
||||
}
|
||||
printf(OUTPUT "0,\n");
|
||||
|
||||
|
||||
$i = 0;
|
||||
while(read(FILE, $data, 1)) {
|
||||
if($i == 0) {
|
||||
print(OUTPUT "\t");
|
||||
}
|
||||
printf(OUTPUT "%#02x, ", unpack("C", $data));
|
||||
$i++;
|
||||
if($i == 10) {
|
||||
print(OUTPUT "\n");
|
||||
$i = 0;
|
||||
}
|
||||
}
|
||||
print(OUTPUT "};\n\n");
|
||||
close(FILE);
|
||||
push(@fvars, $fvar);
|
||||
push(@files, $file);
|
||||
}
|
||||
|
||||
for($i = 0; $i < @fvars; $i++) {
|
||||
$file = $files[$i];
|
||||
$fvar = $fvars[$i];
|
||||
|
||||
if($i == 0) {
|
||||
$prevfile = "NULL";
|
||||
} else {
|
||||
$prevfile = "file" . $fvars[$i - 1];
|
||||
}
|
||||
print(OUTPUT "const struct fsdata_file file".$fvar."[] = {{$prevfile, data$fvar, ");
|
||||
print(OUTPUT "data$fvar + ". (length($file) + 1) .", ");
|
||||
print(OUTPUT "sizeof(data$fvar) - ". (length($file) + 1) ."}};\n\n");
|
||||
}
|
||||
|
||||
print(OUTPUT "#define FS_ROOT file$fvars[$i - 1]\n\n");
|
||||
print(OUTPUT "#define FS_NUMFILES $i");
|
||||
1056
proj/unixsim/apps/shell.c
Normal file
1056
proj/unixsim/apps/shell.c
Normal file
File diff suppressed because it is too large
Load Diff
37
proj/unixsim/apps/shell.h
Normal file
37
proj/unixsim/apps/shell.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __SHELL_H__
|
||||
#define __SHELL_H__
|
||||
|
||||
void shell_init(void);
|
||||
|
||||
#endif /* __SHELL_H__ */
|
||||
88
proj/unixsim/apps/tcpecho.c
Normal file
88
proj/unixsim/apps/tcpecho.c
Normal file
@@ -0,0 +1,88 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lwip/sys.h"
|
||||
#include "lwip/api.h"
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
static void
|
||||
tcpecho_thread(void *arg)
|
||||
{
|
||||
struct netconn *conn, *newconn;
|
||||
err_t err;
|
||||
|
||||
/* Create a new connection identifier. */
|
||||
conn = netconn_new(NETCONN_TCP);
|
||||
|
||||
/* Bind connection to well known port number 7. */
|
||||
netconn_bind(conn, NULL, 7);
|
||||
|
||||
/* Tell connection to go into listening mode. */
|
||||
netconn_listen(conn);
|
||||
|
||||
while(1) {
|
||||
|
||||
/* Grab new connection. */
|
||||
newconn = netconn_accept(conn);
|
||||
/*printf("accepted new connection %p\n", newconn);*/
|
||||
/* Process the new connection. */
|
||||
if(newconn != NULL) {
|
||||
struct netbuf *buf;
|
||||
void *data;
|
||||
u16_t len;
|
||||
|
||||
while((buf = netconn_recv(newconn)) != NULL) {
|
||||
/*printf("Recved\n");*/
|
||||
do {
|
||||
netbuf_data(buf, &data, &len);
|
||||
err = netconn_write(newconn, data, len, NETCONN_COPY);
|
||||
if(err != ERR_OK) {
|
||||
/* printf("tcpecho: netconn_write: error \"%s\"\n", lwip_strerr(err));*/
|
||||
}
|
||||
} while(netbuf_next(buf) >= 0);
|
||||
netbuf_delete(buf);
|
||||
}
|
||||
/*printf("Got EOF, looping\n");*/
|
||||
/* Close connection and discard connection identifier. */
|
||||
netconn_delete(newconn);
|
||||
}
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void
|
||||
tcpecho_init(void)
|
||||
{
|
||||
sys_thread_new(tcpecho_thread, NULL);
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
|
||||
|
||||
|
||||
38
proj/unixsim/apps/tcpecho.h
Normal file
38
proj/unixsim/apps/tcpecho.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __TCPECHO_H__
|
||||
#define __TCPECHO_H__
|
||||
|
||||
void tcpecho_init(void);
|
||||
|
||||
#endif /* __TCPECHO_H__ */
|
||||
65
proj/unixsim/apps/udpecho.c
Normal file
65
proj/unixsim/apps/udpecho.c
Normal file
@@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
|
||||
#include "lwip/api.h"
|
||||
#include "lwip/sys.h"
|
||||
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void
|
||||
udpecho_thread(void *arg)
|
||||
{
|
||||
static struct netconn *conn;
|
||||
static struct netbuf *buf;
|
||||
static struct ip_addr *addr;
|
||||
static unsigned short port;
|
||||
char buffer[4096];
|
||||
|
||||
conn = netconn_new(NETCONN_UDP);
|
||||
netconn_bind(conn, NULL, 7);
|
||||
|
||||
while(1) {
|
||||
buf = netconn_recv(conn);
|
||||
addr = netbuf_fromaddr(buf);
|
||||
port = netbuf_fromport(buf);
|
||||
netconn_connect(conn, addr, port);
|
||||
netconn_send(conn, buf);
|
||||
netbuf_copy(buf, buffer, sizeof(buffer));
|
||||
printf("got %s\n", buffer);
|
||||
netbuf_delete(buf);
|
||||
}
|
||||
}
|
||||
/*-----------------------------------------------------------------------------------*/
|
||||
void
|
||||
udpecho_init(void)
|
||||
{
|
||||
sys_thread_new(udpecho_thread, NULL);
|
||||
}
|
||||
37
proj/unixsim/apps/udpecho.h
Normal file
37
proj/unixsim/apps/udpecho.h
Normal file
@@ -0,0 +1,37 @@
|
||||
/*
|
||||
* Copyright (c) 2001, 2002 Swedish Institute of Computer Science.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without modification,
|
||||
* are permitted provided that the following conditions are met:
|
||||
*
|
||||
* 1. Redistributions of source code must retain the above copyright notice,
|
||||
* this list of conditions and the following disclaimer.
|
||||
* 2. 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.
|
||||
* 3. The name of the author may not be used to endorse or promote products
|
||||
* derived from this software without specific prior written permission.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
|
||||
*
|
||||
* This file is part of the lwIP TCP/IP stack.
|
||||
*
|
||||
* Author: Adam Dunkels <adam@sics.se>
|
||||
*
|
||||
*/
|
||||
#ifndef __UDPECHO_H__
|
||||
#define __UDPECHO_H__
|
||||
|
||||
void udpecho_init(void);
|
||||
|
||||
#endif /* __UDPECHO_H__ */
|
||||
Reference in New Issue
Block a user