From 48a7fa31f918a6fc88719b3c9393a9ba2829f42a Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Tue, 15 Nov 2016 10:37:59 -0600 Subject: Remove texinfo format documentation. Replaced by Sphinx formatted documentation. closes #2812. --- doc/networking/Makefile.am | 67 -- doc/networking/PCIreg.eps | 319 ---------- doc/networking/PCIreg.jpg | Bin 48116 -> 0 bytes doc/networking/PCIreg.txt | 2 - doc/networking/decdriver.t | 268 -------- doc/networking/driver.t | 339 ---------- doc/networking/networkapp.t | 924 --------------------------- doc/networking/networkflow.eps | 1343 ---------------------------------------- doc/networking/networkflow.jpg | Bin 36969 -> 0 bytes doc/networking/networkflow.png | Bin 12933 -> 0 bytes doc/networking/networkflow.txt | 2 - doc/networking/networking.texi | 97 --- doc/networking/networktasks.t | 44 -- doc/networking/preface.texi | 53 -- doc/networking/recvbd.eps | 181 ------ doc/networking/recvbd.jpg | Bin 11100 -> 0 bytes doc/networking/recvbd.txt | 2 - doc/networking/servers.t | 115 ---- doc/networking/stamp-vti | 4 - doc/networking/testing.t | 365 ----------- doc/networking/version.texi | 4 - 21 files changed, 4129 deletions(-) delete mode 100644 doc/networking/Makefile.am delete mode 100644 doc/networking/PCIreg.eps delete mode 100644 doc/networking/PCIreg.jpg delete mode 100644 doc/networking/PCIreg.txt delete mode 100644 doc/networking/decdriver.t delete mode 100644 doc/networking/driver.t delete mode 100644 doc/networking/networkapp.t delete mode 100644 doc/networking/networkflow.eps delete mode 100644 doc/networking/networkflow.jpg delete mode 100644 doc/networking/networkflow.png delete mode 100644 doc/networking/networkflow.txt delete mode 100644 doc/networking/networking.texi delete mode 100644 doc/networking/networktasks.t delete mode 100644 doc/networking/preface.texi delete mode 100644 doc/networking/recvbd.eps delete mode 100644 doc/networking/recvbd.jpg delete mode 100644 doc/networking/recvbd.txt delete mode 100644 doc/networking/servers.t delete mode 100644 doc/networking/stamp-vti delete mode 100644 doc/networking/testing.t delete mode 100644 doc/networking/version.texi (limited to 'doc/networking') diff --git a/doc/networking/Makefile.am b/doc/networking/Makefile.am deleted file mode 100644 index bb33fc48c2..0000000000 --- a/doc/networking/Makefile.am +++ /dev/null @@ -1,67 +0,0 @@ -# -# COPYRIGHT (c) 1988-2002. -# On-Line Applications Research Corporation (OAR). -# All rights reserved. - -PROJECT = networking - -include $(top_srcdir)/project.am -include $(top_srcdir)/main.am - -BMENU2 += -c - -GENERATED_FILES = networkapp.texi driver.texi networktasks.texi testing.texi \ - servers.texi decdriver.texi - -COMMON_FILES += $(top_srcdir)/common/cpright.texi - -FILES = networktasks.texi preface.texi - -info_TEXINFOS = networking.texi -networking_TEXINFOS = $(FILES) $(COMMON_FILES) $(GENERATED_FILES) - -$(PROJECT).dvi: networkflow.eps PCIreg.eps recvbd.eps - -PDF_IMAGES = networkflow.pdf PCIreg.pdf recvbd.pdf - -if USE_HTML -html_project_DATA += networkflow.jpg networkflow.png PCIreg.jpg recvbd.jpg -endif - -networktasks.texi: networktasks.t - $(BMENU2) -p "Preface" \ - -u "Top" \ - -n "Networking Driver" < $< > $@ - -driver.texi: driver.t - $(BMENU2) -p "Network Task Structure and Data Flow" \ - -u "Top" \ - -n "Using Networking in an RTEMS Application" < $< > $@ - -networkapp.texi: networkapp.t - $(BMENU2) -p "Write the Driver Statistic-Printing Function" \ - -u "Top" \ - -n "Testing the Driver" < $< > $@ - -testing.texi: testing.t - $(BMENU2) -p "Time Synchronization Using NTP" \ - -u "Top" \ - -n "Network Servers" < $< > $@ - -servers.texi: servers.t - $(BMENU2) -p "Throughput" \ - -u "Top" \ - -n "DEC 21140 Driver" < $< > $@ - -decdriver.texi: decdriver.t - $(BMENU2) -p "Using Hooks" \ - -u "Top" \ - -n "Command and Variable Index" < $< > $@ - -PICTURE_FILES = PCIreg.eps PCIreg.jpg networkflow.eps networkflow.jpg \ - networkflow.png recvbd.eps recvbd.jpg - -EXTRA_DIST = decdriver.t driver.t networkapp.t networktasks.t servers.t \ - testing.t $(PICTURE_FILES) - -CLEANFILES += networking.info networking.info-? diff --git a/doc/networking/PCIreg.eps b/doc/networking/PCIreg.eps deleted file mode 100644 index e627786434..0000000000 --- a/doc/networking/PCIreg.eps +++ /dev/null @@ -1,319 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: PCI_reg.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Mon Feb 8 15:09:56 1999 -%%For: raguet@genesis (Emmanuel Raguet) -%%Orientation: Portrait -%%BoundingBox: 0 0 270 592 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --172.0 622.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 10868 m -1000 -1000 l 8010 -1000 l 8010 10868 l cp clip - 0.06299 0.06299 sc -% Polyline -7.500 slw -n 2745 1305 m 6525 1305 l 6525 1800 l 2745 1800 l cp gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 4635 1305 m 4635 1800 l gs col7 s gr -% Polyline -n 2745 6750 m 6525 6750 l 6525 7245 l 2745 7245 l cp gs col0 s gr -% Polyline -n 4635 6750 m 4635 7245 l gs col0 s gr -% Polyline -n 2745 8730 m 6525 8730 l 6525 9225 l 2745 9225 l cp gs col0 s gr -% Polyline -n 4635 8730 m 4635 9225 l gs col0 s gr -% Polyline -n 3735 8730 m 3735 9225 l gs col0 s gr -% Polyline -n 5580 8730 m 5580 9225 l gs col0 s gr -% Polyline -n 2745 3285 m 6525 3285 l 6525 3780 l 2745 3780 l cp gs col0 s gr -% Polyline -n 2745 3780 m 6525 3780 l 6525 4275 l 2745 4275 l cp gs col0 s gr -% Polyline -n 2745 4275 m 6525 4275 l 6525 4770 l 2745 4770 l cp gs col0 s gr -% Polyline -n 2745 4770 m 6525 4770 l 6525 5265 l 2745 5265 l cp gs col0 s gr -% Polyline -n 2745 5265 m 6525 5265 l 6525 5760 l 2745 5760 l cp gs col0 s gr -% Polyline -n 2745 5760 m 6525 5760 l 6525 6255 l 2745 6255 l cp gs col0 s gr -% Polyline -n 2745 2790 m 6525 2790 l 6525 3285 l 2745 3285 l cp gs col0 s gr -% Polyline -n 4635 2790 m 4635 3285 l gs col0 s gr -% Polyline -n 3735 2790 m 3735 3285 l gs col0 s gr -% Polyline -n 5580 2790 m 5580 3285 l gs col0 s gr -% Polyline -n 2745 2295 m 6525 2295 l 6525 2790 l 2745 2790 l cp gs 0.00 setgray ef gr gs col7 s gr -% Polyline -n 5580 2295 m 5580 2790 l gs col7 s gr -% Polyline -n 2745 1800 m 6525 1800 l 6525 2295 l 2745 2295 l cp gs 0.00 setgray ef gr gs col7 s gr -% Polyline -n 4635 1800 m 4635 2295 l gs col7 s gr -% Polyline -n 3735 3285 m 4635 3285 l 4635 2790 l 3735 2790 l cp gs 0.00 setgray ef gr gs col7 s gr -% Polyline -n 2745 6255 m 6525 6255 l 6525 6750 l 2745 6750 l cp gs col0 s gr -% Polyline -n 2745 7740 m 6525 7740 l 6525 8235 l 2745 8235 l cp gs col0 s gr -% Polyline -n 2745 8235 m 6525 8235 l 6525 8730 l 2745 8730 l cp gs col0 s gr -% Polyline -n 2880 9585 m 3285 9585 l 3285 9855 l 2880 9855 l cp gs 0.00 setgray ef gr gs col0 s gr -% Polyline -n 2745 7245 m 6525 7245 l 6525 7740 l 2745 7740 l cp gs col0 s gr -% Polyline -gs clippath -6915 1140 m 6885 1260 l 6855 1140 l 6855 1275 l 6915 1275 l cp -clip -n 6885 1260 m 6885 675 l 6660 675 l gs col0 s gr gr - -% arrowhead -n 6915 1140 m 6885 1260 l 6855 1140 l col0 s -/Times-Roman ff 270.00 scf sf -3735 7155 m -gs 1 -1 sc (Subsystem ID) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4635 8145 m -gs 1 -1 sc (Reserved) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4635 8550 m -gs 1 -1 sc (Reserved) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -3240 3195 m -gs 1 -1 sc (BIST) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -3240 9135 m -gs 1 -1 sc (Max_Lat) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -4185 9135 m -gs 1 -1 sc (Min_Gnt) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5085 8955 m -gs 1 -1 sc (Interrupt) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 8955 m -gs 1 -1 sc (Interrupt) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5040 3015 m -gs 1 -1 sc (Latency) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5535 6975 m -gs 1 -1 sc (Subsystem) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5535 7200 m -gs 1 -1 sc (Vendor ID) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -4725 7695 m -gs 1 -1 sc (Base address) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -4725 7470 m -gs 1 -1 sc (Expansion ROM) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 3195 m -gs 1 -1 sc (Size Line) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5985 3015 m -gs 1 -1 sc (Cache) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5085 3240 m -gs 1 -1 sc (Timer) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4635 6615 m -gs 1 -1 sc (CardBus CIS Pointer) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 6120 m -gs 1 -1 sc (Base address 5) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 5625 m -gs 1 -1 sc (Base address 4) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 5130 m -gs 1 -1 sc (Base address 3) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 4635 m -gs 1 -1 sc (Base address 2) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 4140 m -gs 1 -1 sc (Base address 1) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -4680 3600 m -gs 1 -1 sc (Base address 0) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -5085 9180 m -gs 1 -1 sc (Pin) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 210.00 scf sf -6030 9180 m -gs 1 -1 sc (Line) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman ff 270.00 scf sf -5535 1665 m -gs 1 -1 sc (Vendor ID) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 270.00 scf sf -4185 2655 m -gs 1 -1 sc (Class code) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 210.00 scf sf -6030 2475 m -gs 1 -1 sc (Revision) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 210.00 scf sf -6030 2730 m -gs 1 -1 sc (ID) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 240.00 scf sf -5625 2160 m -gs 1 -1 sc (Command register) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 270.00 scf sf -3690 2160 m -gs 1 -1 sc (Status register) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 270.00 scf sf -3735 1665 m -gs 1 -1 sc (Device ID) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 210.00 scf sf -4185 2970 m -gs 1 -1 sc (Header) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 210.00 scf sf -4185 3225 m -gs 1 -1 sc (Type) dup sw pop 2 div neg 0 rm col7 sh gr -/Times-Roman ff 210.00 scf sf -3375 9810 m -gs 1 -1 sc (Required configuration registers) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 1665 m -gs 1 -1 sc (00) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 4140 m -gs 1 -1 sc (05) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 4635 m -gs 1 -1 sc (06) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 2160 m -gs 1 -1 sc (01) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 2655 m -gs 1 -1 sc (02) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 3645 m -gs 1 -1 sc (04) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 3150 m -gs 1 -1 sc (03) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 5085 m -gs 1 -1 sc (07) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 5580 m -gs 1 -1 sc (08) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 6570 m -gs 1 -1 sc (10) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 7110 m -gs 1 -1 sc (11) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 7605 m -gs 1 -1 sc (12) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 6075 m -gs 1 -1 sc (09) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 8100 m -gs 1 -1 sc (13) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 8595 m -gs 1 -1 sc (14) col0 sh gr -/Times-Roman ff 210.00 scf sf -6795 9090 m -gs 1 -1 sc (15) col0 sh gr -/Times-Roman ff 210.00 scf sf -5580 855 m -gs 1 -1 sc (\(in decimal\)) col0 sh gr -/Times-Roman ff 210.00 scf sf -4725 630 m -gs 1 -1 sc (Double word number) col0 sh gr -$F2psEnd -rs diff --git a/doc/networking/PCIreg.jpg b/doc/networking/PCIreg.jpg deleted file mode 100644 index c03257bed4..0000000000 Binary files a/doc/networking/PCIreg.jpg and /dev/null differ diff --git a/doc/networking/PCIreg.txt b/doc/networking/PCIreg.txt deleted file mode 100644 index adff06479e..0000000000 --- a/doc/networking/PCIreg.txt +++ /dev/null @@ -1,2 +0,0 @@ -Figure: PCI Device's Configuration Header Space Format - (Not available in ASCII version of this document.) diff --git a/doc/networking/decdriver.t b/doc/networking/decdriver.t deleted file mode 100644 index 74ade6c6d6..0000000000 --- a/doc/networking/decdriver.t +++ /dev/null @@ -1,268 +0,0 @@ -@c -@c RTEMS Remote Debugger Server Specifications -@c -@c Written by: Emmanuel Raguet -@c - -@chapter DEC 21140 Driver - -@section DEC 21240 Driver Introduction - -@c XXX add back in cross reference to list of boards. - -One aim of our project is to port RTEMS on a standard PowerPC platform. -To achieve it, we have chosen a Motorola MCP750 board. This board includes -an Ethernet controller based on a DEC21140 chip. Because RTEMS has a -TCP/IP stack, we will -have to develop the DEC21140 related ethernet driver for the PowerPC port of -RTEMS. As this controller is able to support 100Mbps network and as there is -a lot of PCI card using this DEC chip, we have decided to first -implement this driver on an Intel PC386 target to provide a solution for using -RTEMS on PC with the 100Mbps network and then to port this code on PowerPC in -a second phase. - - -The aim of this document is to give some PCI board generalities and -to explain the software architecture of the RTEMS driver. Finally, we will see -what will be done for ChorusOs and Netboot environment . - - -@section Document Revision History - -@b{Current release}: - -@itemize @bullet -@item Current applicable release is 1.0. -@end itemize -@b{Existing releases}: - -@itemize @bullet -@item 1.0 : Released the 10/02/98. First version of this document. -@item 0.1 : First draft of this document -@end itemize -@b{Planned releases}: - -@itemize @bullet -@item None planned today. -@end itemize - -@section DEC21140 PCI Board Generalities - -@c XXX add crossreference to PCI Register Figure -This chapter describes rapidely the PCI interface of this Ethernet controller. -The board we have chosen for our PC386 implementation is a D-Link DFE-500TX. -This is a dual-speed 10/100Mbps Ethernet PCI adapter with a DEC21140AF chip. -Like other PCI devices, this board has a PCI device's header containing some -required configuration registers, as shown in the PCI Register Figure. -By reading -or writing these registers, a driver can obtain information about the type of -the board, the interrupt it uses, the mapping of the chip specific registers, ... - - - -On Intel target, the chip specific registers can be accessed via 2 -methods : I/O port access or PCI address mapped access. We have chosen to implement -the PCI address access to obtain compatible source code to the port the driver -on a PowerPC target. - -@c -@c PCI Device's Configuration Header Space Format -@c - -@ifclear use-html -@image{PCIreg,,,PCI Device's Configuration Header Space Format} -@end ifclear - -@ifset use-html -@c PCI Device's Configuration Header Space Format -@html - PCI Device's Configuration Header Space Format -@end html -@end ifset - - -@c XXX add crossreference to PCI Register Figure - -On RTEMS, a PCI API exists. We have used it to configure the board. After initializing -this PCI module via the @code{pci_initialize()} function, we try to detect -the DEC21140 based ethernet board. This board is characterized by its Vendor -ID (0x1011) and its Device ID (0x0009). We give these arguments to the -@code{pcib_find_by_deviceid} -function which returns , if the device is present, a pointer to the configuration -header space (see PCI Registers Fgure). Once this operation performed, -the driver -is able to extract the information it needs to configure the board internal -registers, like the interrupt line, the base address,... The board internal -registers will not be detailled here. You can find them in @b{DIGITAL -Semiconductor 21140A PCI Fast Ethernet LAN Controller -- Hardware Reference Manual}. - -@c fix citation - - -@section RTEMS Driver Software Architecture - -In this chapter will see the initialization phase, how the controller uses the -host memory and the 2 threads launched at the initialization time. - - -@subsection Initialization phase - -The DEC21140 Ethernet driver keeps the same software architecture than the other -RTEMS ethernet drivers. The only API the programmer can use is the @code{rtems_dec21140_driver_attach} -@code{(struct rtems_bsdnet_ifconfig *config)} function which -detects the board and initializes the associated data structure (with registers -base address, entry points to low-level initialization function,...), if the -board is found. - -Once the attach function executed, the driver initializes the DEC -chip. Then the driver connects an interrupt handler to the interrupt line driven -by the Ethernet controller (the only interrupt which will be treated is the -receive interrupt) and launches 2 threads : a receiver thread and a transmitter -thread. Then the driver waits for incoming frame to give to the protocol stack -or outcoming frame to send on the physical link. - - -@subsection Memory Buffer - -@c XXX add cross reference to Problem -This DEC chip uses the host memory to store the incoming Ethernet frames and -the descriptor of these frames. We have chosen to use 7 receive buffers and -1 transmit buffer to optimize memory allocation due to cache and paging problem -that will be explained in the section @b{Encountered Problems}. - - -To reference these buffers to the DEC chip we use a buffer descriptors -ring. The descriptor structure is defined in the Buffer Descriptor Figure. -Each descriptor -can reference one or two memory buffers. We choose to use only one buffer of -1520 bytes per descriptor. - - -The difference between a receive and a transmit buffer descriptor -is located in the status and control bits fields. We do not give details here, -please refer to the [DEC21140 Hardware Manual]. - -@c -@c Buffer Descriptor -@c - -@ifclear use-html -@image{recvbd,,,"Buffer Descriptor"} -@end ifclear - -@ifset use-html -@c Buffer Descriptor -@html -Buffer Descriptor -@end html -@end ifset - - - -@subsection Receiver Thread - -This thread is event driven. Each time a DEC PCI board interrupt occurs, the -handler checks if this is a receive interrupt and send an event ``reception'' -to the receiver thread which looks into the entire buffer descriptors ring the -ones that contain a valid incoming frame (bit OWN=0 means descriptor belongs -to host processor). Each valid incoming ethernet frame is sent to the protocol -stack and the buffer descriptor is given back to the DEC board (the host processor -reset bit OWN, which means descriptor belongs to 21140). - - -@subsection Transmitter Thread - -This thread is also event driven. Each time an Ethernet frame is put in the -transmit queue, an event is sent to the transmit thread, which empty the queue -by sending each outcoming frame. Because we use only one transmit buffer, we -are sure that the frame is well-sent before sending the next. - - -@section Encountered Problems - -On Intel PC386 target, we were faced with a problem of memory cache management. -Because the DEC chip uses the host memory to store the incoming frame and because -the DEC21140 configuration registers are mapped into the PCI address space, -we must ensure that the data read (or written) by the host processor are the -ones written (or read) by the DEC21140 device in the host memory and not old -data stored in the cache memory. Therefore, we had to provide a way to manage -the cache. This module is described in the document @b{RTEMS -Cache Management For Intel}. On Intel, the -memory region cache management is available only if the paging unit is enabled. -We have used this paging mechanism, with 4Kb page. All the buffers allocated -to store the incoming or outcoming frames, buffer descriptor and also the PCI -address space of the DEC board are located in a memory space with cache disable. - - -Concerning the buffers and their descriptors, we have tried to optimize -the memory space in term of allocated page. One buffer has 1520 bytes, one descriptor -has 16 bytes. We have 7 receive buffers and 1 transmit buffer, and for each, -1 descriptor : (7+1)*(1520+16) = 12288 bytes = 12Kb = 3 entire pages. This -allows not to lose too much memory or not to disable cache memory for a page -which contains other data than buffer, which could decrease performance. - - -@section ChorusOs DEC Driver - -Because ChorusOs is used in several Canon CRF projects, we must provide such -a driver on this OS to ensure compatibility between the RTEMS and ChorusOs developments. -On ChorusOs, a DEC driver source code already exists but only for a PowerPC -target. We plan to port this code (which uses ChorusOs API) on Intel target. -This will allow us to have homogeneous developments. Moreover, the port of the -development performed with ChorusOs environment to RTEMS environment will be -easier for the developers. - - -@section Netboot DEC driver - -We use Netboot tool to load our development from a server to the target via -an ethernet network. Currently, this tool does not support the DEC board. We -plan to port the DEC driver for the Netboot tool. - - -But concerning the port of the DEC driver into Netboot, we are faced -with a problem : in RTEMS environment, the DEC driver is interrupt or event -driven, in Netboot environment, it must be used in polling mode. It means that -we will have to re-write some mechanisms of this driver. - - -@section List of Ethernet cards using the DEC chip - -Many Ethernet adapter cards use the Tulip chip. Here is a non exhaustive list -of adapters which support this driver : - -@itemize @bullet -@item Accton EtherDuo PCI. -@item Accton EN1207 All three media types supported. -@item Adaptec ANA6911/TX 21140-AC. -@item Cogent EM110 21140-A with DP83840 N-Way MII transceiver. -@item Cogent EM400 EM100 with 4 21140 100mbps-only ports + PCI Bridge. -@item Danpex EN-9400P3. -@item D-Link DFE500-Tx 21140-A with DP83840 transceiver. -@item Kingston EtherX KNE100TX 21140AE. -@item Netgear FX310 TX 10/100 21140AE. -@item SMC EtherPower10/100 With DEC21140 and 68836 SYM transceiver. -@item SMC EtherPower10/100 With DEC21140-AC and DP83840 MII transceiver. -Note: The EtherPower II uses the EPIC chip, which requires a different driver. -@item Surecom EP-320X DEC 21140. -@item Thomas Conrad TC5048. -@item Znyx ZX345 21140-A, usually with the DP83840 N-Way MII transciever. Some ZX345 -cards made in 1996 have an ICS 1890 transciver instead. -@item ZNYX ZX348 Two 21140-A chips using ICS 1890 transcievers and either a 21052 -or 21152 bridge. Early versions used National 83840 transcievers, but later -versions are depopulated ZX346 boards. -@item ZNYX ZX351 21140 chip with a Broadcom 100BaseT4 transciever. -@end itemize - -Our DEC driver has not been tested with all these cards, only with the D-Link -DFE500-TX. - -@itemize @code{ } -@item @cite{[DEC21140 Hardware Manual] DIGITAL, @b{DIGITAL -Semiconductor 21140A PCI Fast Ethernet LAN Controller - Hardware -Reference Manual}}. - -@item @cite{[99.TA.0021.M.ER]Emmanuel Raguet, -@b{RTEMS Cache Management For Intel}}. -@end itemize diff --git a/doc/networking/driver.t b/doc/networking/driver.t deleted file mode 100644 index 2f1a4c368e..0000000000 --- a/doc/networking/driver.t +++ /dev/null @@ -1,339 +0,0 @@ -@c -@c Written by Eric Norum -@c -@c COPYRIGHT (c) 1988-2002. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - -@chapter Networking Driver - -@section Introduction - -This chapter is intended to provide an introduction to the -procedure for writing RTEMS network device drivers. -The example code is taken from the `Generic 68360' network device -driver. The source code for this driver is located in the -@code{c/src/lib/libbsp/m68k/gen68360/network} directory in the RTEMS -source code distribution. Having a copy of this driver at -hand when reading the following notes will help significantly. - -@section Learn about the network device - -Before starting to write the network driver become completely -familiar with the programmer's view of the device. -The following points list some of the details of the -device that must be understood before a driver can be written. - -@itemize @bullet - -@item Does the device use DMA to transfer packets to and from -memory or does the processor have to -copy packets to and from memory on the device? - -@item If the device uses DMA, is it capable of forming a single -outgoing packet from multiple fragments scattered in separate -memory buffers? - -@item If the device uses DMA, is it capable of chaining multiple -outgoing packets, or does each outgoing packet require -intervention by the driver? - -@item Does the device automatically pad short frames to the minimum -64 bytes or does the driver have to supply the padding? - -@item Does the device automatically retry a transmission on detection -of a collision? - -@item If the device uses DMA, is it capable of buffering multiple -packets to memory, or does the receiver have to be restarted -after the arrival of each packet? - -@item How are packets that are too short, too long, or received with -CRC errors handled? Does the device automatically continue -reception or does the driver have to intervene? - -@item How is the device Ethernet address set? How is the device -programmed to accept or reject broadcast and multicast packets? - -@item What interrupts does the device generate? Does it generate an -interrupt for each incoming packet, or only for packets received -without error? Does it generate an interrupt for each packet -transmitted, or only when the transmit queue is empty? What -happens when a transmit error is detected? - -@end itemize - -In addition, some controllers have specific questions regarding -board specific configuration. For example, the SONIC Ethernet -controller has a very configurable data bus interface. It can -even be configured for sixteen and thirty-two bit data buses. This -type of information should be obtained from the board vendor. - -@section Understand the network scheduling conventions - -When writing code for the driver transmit and receive tasks, -take care to follow the network scheduling conventions. All tasks -which are associated with networking share various -data structures and resources. To ensure the consistency -of these structures the tasks -execute only when they hold the network semaphore (@code{rtems_bsdnet_semaphore}). -The transmit and receive tasks must abide by this protocol. Be very -careful to avoid `deadly embraces' with the other network tasks. -A number of routines are provided to make it easier for the network -driver code to conform to the network task scheduling conventions. - -@itemize @bullet - -@item @code{void rtems_bsdnet_semaphore_release(void)} - -This function releases the network semaphore. -The network driver tasks must call this function immediately before -making any blocking RTEMS request. - -@item @code{void rtems_bsdnet_semaphore_obtain(void)} - -This function obtains the network semaphore. -If a network driver task has released the network semaphore to allow other -network-related tasks to run while the task blocks, then this function must -be called to reobtain the semaphore immediately after the return from the -blocking RTEMS request. - -@item @code{rtems_bsdnet_event_receive(rtems_event_set, rtems_option, rtems_interval, rtems_event_set *)} -The network driver task should call this function when it wishes to wait -for an event. This function releases the network semaphore, -calls @code{rtems_event_receive} to wait for the specified event -or events and reobtains the semaphore. -The value returned is the value returned by the @code{rtems_event_receive}. - -@end itemize - -@section Network Driver Makefile - -Network drivers are considered part of the BSD network package and as such -are to be compiled with the appropriate flags. This can be accomplished by -adding @code{-D__INSIDE_RTEMS_BSD_TCPIP_STACK__} to the @code{command line}. -If the driver is inside the RTEMS source tree or is built using the -RTEMS application Makefiles, then adding the following line accomplishes -this: - -@example -DEFINES += -D__INSIDE_RTEMS_BSD_TCPIP_STACK__ -@end example - -This is equivalent to the following list of definitions. Early versions -of the RTEMS BSD network stack required that all of these be defined. - -@example --D_COMPILING_BSD_KERNEL_ -DKERNEL -DINET -DNFS \ - -DDIAGNOSTIC -DBOOTP_COMPAT -@end example - -Defining these macros tells the network header files that the driver -is to be compiled with extended visibility into the network stack. This -is in sharp contrast to applications that simply use the network stack. -Applications do not require this level of visibility and should stick -to the portable application level API. - -As a direct result of being logically internal to the network stack, -network drivers use the BSD memory allocation routines This means, -for example, that malloc takes three arguments. See the SONIC -device driver (@code{c/src/lib/libchip/network/sonic.c}) for an example -of this. Because of this, network drivers should not include -@code{}. Doing so will result in conflicting definitions -of @code{malloc()}. - -@b{Application level} code including network servers such as the FTP -daemon are @b{not} part of the BSD kernel network code and should not be -compiled with the BSD network flags. They should include -@code{} and not define the network stack visibility -macros. - -@section Write the Driver Attach Function - -The driver attach function is responsible for configuring the driver -and making the connection between the network stack -and the driver. - -Driver attach functions take a pointer to an -@code{rtems_bsdnet_ifconfig} structure as their only argument. -and set the driver parameters based on the -values in this structure. If an entry in the configuration -structure is zero the attach function chooses an -appropriate default value for that parameter. - - -The driver should then set up several fields in the ifnet structure -in the device-dependent data structure supplied and maintained by the driver: - -@table @code -@item ifp->if_softc -Pointer to the device-dependent data. The first entry -in the device-dependent data structure must be an @code{arpcom} -structure. - -@item ifp->if_name -The name of the device. The network stack uses this string -and the device number for device name lookups. The device name should -be obtained from the @code{name} entry in the configuration structure. - -@item ifp->if_unit -The device number. The network stack uses this number and the -device name for device name lookups. For example, if -@code{ifp->if_name} is @samp{scc} and @code{ifp->if_unit} is @samp{1}, -the full device name would be @samp{scc1}. The unit number should be -obtained from the `name' entry in the configuration structure. - -@item ifp->if_mtu -The maximum transmission unit for the device. For Ethernet -devices this value should almost always be 1500. - -@item ifp->if_flags -The device flags. Ethernet devices should set the flags -to @code{IFF_BROADCAST|IFF_SIMPLEX}, indicating that the -device can broadcast packets to multiple destinations -and does not receive and transmit at the same time. - -@item ifp->if_snd.ifq_maxlen -The maximum length of the queue of packets waiting to be -sent to the driver. This is normally set to @code{ifqmaxlen}. - -@item ifp->if_init -The address of the driver initialization function. - -@item ifp->if_start -The address of the driver start function. - -@item ifp->if_ioctl -The address of the driver ioctl function. - -@item ifp->if_output -The address of the output function. Ethernet devices -should set this to @code{ether_output}. -@end table - -RTEMS provides a function to parse the driver name in the -configuration structure into a device name and unit number. - -@example -int rtems_bsdnet_parse_driver_name ( - const struct rtems_bsdnet_ifconfig *config, - char **namep -); -@end example - -The function takes two arguments; a pointer to the configuration -structure and a pointer to a pointer to a character. The function -parses the configuration name entry, allocates memory for the driver -name, places the driver name in this memory, sets the second argument -to point to the name and returns the unit number. -On error, a message is printed and -1 is returned. - -Once the attach function has set up the above entries it must link the -driver data structure onto the list of devices by -calling @code{if_attach}. Ethernet devices should then -call @code{ether_ifattach}. Both functions take a pointer to the -device's @code{ifnet} structure as their only argument. - -The attach function should return a non-zero value to indicate that -the driver has been successfully configured and attached. - -@section Write the Driver Start Function. -This function is called each time the network stack wants to start the -transmitter. This occures whenever the network stack adds a packet -to a device's send queue and the @code{IFF_OACTIVE} bit in the -device's @code{if_flags} is not set. - -For many devices this function need only set the @code{IFF_OACTIVE} bit in the -@code{if_flags} and send an event to the transmit task -indicating that a packet is in the driver transmit queue. - - -@section Write the Driver Initialization Function. - -This function should initialize the device, attach to interrupt handler, -and start the driver transmit and receive tasks. The function - -@example -rtems_id -rtems_bsdnet_newproc (char *name, - int stacksize, - void(*entry)(void *), - void *arg); -@end example - -should be used to start the driver tasks. - -Note that the network stack may call the driver initialization function more -than once. -Make sure multiple versions of the receive and transmit tasks are not accidentally -started. - - - -@section Write the Driver Transmit Task - -This task is reponsible for removing packets from the driver send queue and sending them to the device. The task should block waiting for an event from the -driver start function indicating that packets are waiting to be transmitted. -When the transmit task has drained the driver send queue the task should clear -the @code{IFF_OACTIVE} bit in @code{if_flags} and block until another outgoing -packet is queued. - - -@section Write the Driver Receive Task -This task should block until a packet arrives from the device. If the -device is an Ethernet interface the function @code{ether_input} should be called -to forward the packet to the network stack. The arguments to @code{ether_input} -are a pointer to the interface data structure, a pointer to the ethernet -header and a pointer to an mbuf containing the packet itself. - - - - -@section Write the Driver Interrupt Handler -A typical interrupt handler will do nothing more than the hardware -manipulation required to acknowledge the interrupt and send an RTEMS event -to wake up the driver receive or transmit task waiting for the event. -Network interface interrupt handlers must not make any calls to other -network routines. - - - -@section Write the Driver IOCTL Function -This function handles ioctl requests directed at the device. The ioctl -commands which must be handled are: - -@table @code -@item SIOCGIFADDR -@item SIOCSIFADDR -If the device is an Ethernet interface these -commands should be passed on to @code{ether_ioctl}. - -@item SIOCSIFFLAGS -This command should be used to start or stop the device, -depending on the state of the interface @code{IFF_UP} and -@code{IFF_RUNNING} bits in @code{if_flags}: -@table @code -@item IFF_RUNNING -Stop the device. - -@item IFF_UP -Start the device. - -@item IFF_UP|IFF_RUNNING -Stop then start the device. - -@item 0 -Do nothing. - -@end table -@end table - - - -@section Write the Driver Statistic-Printing Function -This function should print the values of any statistic/diagnostic -counters the network driver may use. The driver ioctl function should call -the statistic-printing function when the ioctl command is -@code{SIO_RTEMS_SHOW_STATS}. - - diff --git a/doc/networking/networkapp.t b/doc/networking/networkapp.t deleted file mode 100644 index dd356a80a6..0000000000 --- a/doc/networking/networkapp.t +++ /dev/null @@ -1,924 +0,0 @@ -@c -@c Written by Eric Norum -@c -@c COPYRIGHT (c) 1988-2002. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - -@chapter Using Networking in an RTEMS Application - -@section Makefile changes -@subsection Including the required managers -The FreeBSD networking code requires several RTEMS managers -in the application: - -@example -MANAGERS = io event semaphore -@end example - -@subsection Increasing the size of the heap -The networking tasks allocate a lot of memory. For most applications -the heap should be at least 256 kbytes. -The amount of memory set aside for the heap can be adjusted by setting -the @code{CFLAGS_LD} definition as shown below: - -@example -CFLAGS_LD += -Wl,--defsym -Wl,HeapSize=0x80000 -@end example - -This sets aside 512 kbytes of memory for the heap. - -@section System Configuration - -The networking tasks allocate some RTEMS objects. These -must be accounted for in the application configuration table. The following -lists the requirements. - -@table @b -@item TASKS -One network task plus a receive and transmit task for each device. - -@item SEMAPHORES -One network semaphore plus one syslog mutex semaphore if the application uses -openlog/syslog. - -@item EVENTS -The network stack uses @code{RTEMS_EVENT_24} and @code{RTEMS_EVENT_25}. -This has no effect on the application configuration, but -application tasks which call the network functions should not -use these events for other purposes. - -@end table - -@section Initialization -@subsection Additional include files -The source file which declares the network configuration -structures and calls the network initialization function must include - -@example -#include -@end example - -@subsection Network Configuration -The network configuration is specified by declaring -and initializing the @code{rtems_bsdnet_config} -structure. - -@example -@group -struct rtems_bsdnet_config @{ - /* - * This entry points to the head of the ifconfig chain. - */ - struct rtems_bsdnet_ifconfig *ifconfig; - - /* - * This entry should be rtems_bsdnet_do_bootp if BOOTP - * is being used to configure the network, and NULL - * if BOOTP is not being used. - */ - void (*bootp)(void); - - /* - * The remaining items can be initialized to 0, in - * which case the default value will be used. - */ - rtems_task_priority network_task_priority; /* 100 */ - unsigned long mbuf_bytecount; /* 64 kbytes */ - unsigned long mbuf_cluster_bytecount; /* 128 kbytes */ - char *hostname; /* BOOTP */ - char *domainname; /* BOOTP */ - char *gateway; /* BOOTP */ - char *log_host; /* BOOTP */ - char *name_server[3]; /* BOOTP */ - char *ntp_server[3]; /* BOOTP */ - unsigned long sb_efficiency; /* 2 */ - /* UDP TX: 9216 bytes */ - unsigned long udp_tx_buf_size; - /* UDP RX: 40 * (1024 + sizeof(struct sockaddr_in)) */ - unsigned long udp_rx_buf_size; - /* TCP TX: 16 * 1024 bytes */ - unsigned long tcp_tx_buf_size; - /* TCP TX: 16 * 1024 bytes */ - unsigned long tcp_rx_buf_size; - /* Default Network Tasks CPU Affinity */ -#ifdef RTEMS_SMP - const cpu_set_t *network_task_cpuset; - size_t network_task_cpuset_size; -#endif -@}; -@end group -@end example - -The structure entries are described in the following table. -If your application uses BOOTP/DHCP to obtain network configuration -information and if you are happy with the default values described -below, you need to provide only the first two entries in this structure. - -@table @code - -@item struct rtems_bsdnet_ifconfig *ifconfig -A pointer to the first configuration structure of the first network -device. This structure is described in the following section. -You must provide a value for this entry since there is no default value for it. - -@item void (*bootp)(void) -This entry should be set to @code{rtems_bsdnet_do_bootp} if your -application by default uses the BOOTP/DHCP client protocol to obtain -network configuration information. It should be set to @code{NULL} if -your application does not use BOOTP/DHCP. - -You can also use @code{rtems_bsdnet_do_bootp_rootfs} to have a set of -standard files created with the information return by the BOOTP/DHCP -protocol. The IP address is added to @file{/etc/hosts} with the host -name and domain returned. If no host name or domain is returned -@code{me.mydomain} is used. The BOOTP/DHCP server's address is also -added to @file{/etc/hosts}. The domain name server listed in the -BOOTP/DHCP information are added to @file{/etc/resolv.conf}. A -@code{search} record is also added if a domain is returned. The files -are created if they do not exist. - -The default @code{rtems_bsdnet_do_bootp} and -@code{rtems_bsdnet_do_bootp_rootfs} handlers will loop for-ever -waiting for a BOOTP/DHCP server to respond. If an error is detected -such as not valid interface or valid hardware address the target will -reboot allowing any hardware reset to correct itself. - -You can provide your own custom handler which allows you to perform -an initialization that meets your specific system requirements. For -example you could try BOOTP/DHCP then enter a configuration tool if no -server is found allowing the user to switch to a static configuration. - -@item int network_task_priority -The priority at which the network task and network device -receive and transmit tasks will run. -If a value of 0 is specified the tasks will run at priority 100. - -@item unsigned long mbuf_bytecount -The number of bytes to allocate from the heap for use as mbufs. -If a value of 0 is specified, 64 kbytes will be allocated. - -@item unsigned long mbuf_cluster_bytecount -The number of bytes to allocate from the heap for use as mbuf clusters. -If a value of 0 is specified, 128 kbytes will be allocated. - -@item char *hostname -The host name of the system. -If this, or any of the following, entries are @code{NULL} the value -may be obtained from a BOOTP/DHCP server. - -@item char *domainname -The name of the Internet domain to which the system belongs. - -@item char *gateway -The Internet host number of the network gateway machine, -specified in 'dotted decimal' (@code{129.128.4.1}) form. - -@item char *log_host -The Internet host number of the machine to which @code{syslog} messages -will be sent. - -@item char *name_server[3] -The Internet host numbers of up to three machines to be used as -Internet Domain Name Servers. - -@item char *ntp_server[3] -The Internet host numbers of up to three machines to be used as -Network Time Protocol (NTP) Servers. - -@item unsigned long sb_efficiency -This is the first of five configuration parameters related to -the amount of memory each socket may consume for buffers. The -TCP/IP stack reserves buffers (e.g. mbufs) for each open socket. The -TCP/IP stack has different limits for the transmit and receive -buffers associated with each TCP and UDP socket. By tuning these -parameters, the application developer can make trade-offs between -memory consumption and performance. The default parameters favor -performance over memory consumption. See -@uref{http://www.rtems.org/ml/rtems-users/2004/february/msg00200.html} -for more details but note that after the RTEMS 4.8 release series, -the sb_efficiency default was changed from @code{8} to @code{2}. - -The user should also be aware of the @code{SO_SNDBUF} and @code{SO_RCVBUF} -IO control operations. These can be used to specify the -send and receive buffer sizes for a specific socket. There -is no standard IO control to change the @code{sb_efficiency} factor. - -The @code{sb_efficiency} parameter is a buffering factor used -in the implementation of the TCP/IP stack. The default is @code{2} -which indicates double buffering. When allocating memory for each -socket, this number is multiplied by the buffer sizes for that socket. - -@item unsigned long udp_tx_buf_size -This configuration parameter specifies the maximum amount of -buffer memory which may be used for UDP sockets to transmit -with. The default size is 9216 bytes which corresponds to -the maximum datagram size. - -@item unsigned long udp_rx_buf_size -This configuration parameter specifies the maximum amount of -buffer memory which may be used for UDP sockets to receive -into. The default size is the following length in bytes: - -@example -40 * (1024 + sizeof(struct sockaddr_in) -@end example - -@item unsigned long tcp_tx_buf_size -This configuration parameter specifies the maximum amount of -buffer memory which may be used for TCP sockets to transmit -with. The default size is sixteen kilobytes. - -@item unsigned long tcp_rx_buf_size -This configuration parameter specifies the maximum amount of -buffer memory which may be used for TCP sockets to receive -into. The default size is sixteen kilobytes. - -@item const cpu_set_t *network_task_cpuset -This configuration parameter specifies the CPU affinity of the -network task. If set to @code{0} the network task can be scheduled on -any CPU. Only available in SMP configurations. - -@item size_t network_task_cpuset_size -This configuration parameter specifies the size of the -@code{network_task_cpuset} used. Only available in SMP configurations. - -@end table - -In addition, the following fields in the @code{rtems_bsdnet_ifconfig} -are of interest. - -@table @b - -@item int port -The I/O port number (ex: 0x240) on which the external Ethernet -can be accessed. - -@item int irno -The interrupt number of the external Ethernet controller. - -@item int bpar -The address of the shared memory on the external Ethernet controller. - - -@end table - -@subsection Network device configuration -Network devices are specified and configured by declaring and initializing a -@code{struct rtems_bsdnet_ifconfig} structure for each network device. - -The structure entries are described in the following table. An application -which uses a single network interface, gets network configuration information -from a BOOTP/DHCP server, and uses the default values for all driver -parameters needs to initialize only the first two entries in the -structure. - -@table @code -@item char *name -The full name of the network device. This name consists of the -driver name and the unit number (e.g. @code{"scc1"}). -The @code{bsp.h} include file usually defines RTEMS_BSP_NETWORK_DRIVER_NAME as -the name of the primary (or only) network driver. - -@item int (*attach)(struct rtems_bsdnet_ifconfig *conf) -The address of the driver @code{attach} function. The network -initialization function calls this function to configure the driver and -attach it to the network stack. -The @code{bsp.h} include file usually defines RTEMS_BSP_NETWORK_DRIVER_ATTACH as -the name of the attach function of the primary (or only) network driver. - -@item struct rtems_bsdnet_ifconfig *next -A pointer to the network device configuration structure for the next network -interface, or @code{NULL} if this is the configuration structure of the -last network interface. - -@item char *ip_address -The Internet address of the device, -specified in `dotted decimal' (@code{129.128.4.2}) form, or @code{NULL} -if the device configuration information is being obtained from a -BOOTP/DHCP server. - -@item char *ip_netmask -The Internet inetwork mask of the device, -specified in `dotted decimal' (@code{255.255.255.0}) form, or @code{NULL} -if the device configuration information is being obtained from a -BOOTP/DHCP server. - - -@item void *hardware_address -The hardware address of the device, or @code{NULL} if the driver is -to obtain the hardware address in some other way (usually by reading -it from the device or from the bootstrap ROM). - -@item int ignore_broadcast -Zero if the device is to accept broadcast packets, non-zero if the device -is to ignore broadcast packets. - -@item int mtu -The maximum transmission unit of the device, or zero if the driver -is to choose a default value (typically 1500 for Ethernet devices). - -@item int rbuf_count -The number of receive buffers to use, or zero if the driver is to -choose a default value - -@item int xbuf_count -The number of transmit buffers to use, or zero if the driver is to -choose a default value -Keep in mind that some network devices may use 4 or more -transmit descriptors for a single transmit buffer. - -@end table - -A complete network configuration specification can be as simple as the one -shown in the following example. -This configuration uses a single network interface, gets -network configuration information -from a BOOTP/DHCP server, and uses the default values for all driver -parameters. - -@example -static struct rtems_bsdnet_ifconfig netdriver_config = @{ - RTEMS_BSP_NETWORK_DRIVER_NAME, - RTEMS_BSP_NETWORK_DRIVER_ATTACH -@}; -struct rtems_bsdnet_config rtems_bsdnet_config = @{ - &netdriver_config, - rtems_bsdnet_do_bootp, -@}; -@end example - - -@subsection Network initialization -The networking tasks must be started before any network I/O operations -can be performed. This is done by calling: - - -@example -rtems_bsdnet_initialize_network (); -@end example - -This function is declared in @code{rtems/rtems_bsdnet.h}. -t returns 0 on success and -1 on failure with an error code -in @code{errno}. It is not possible to undo the effects of -a partial initialization, though, so the function can be -called only once irregardless of the return code. Consequently, -if the condition for the failure can be corrected, the -system must be reset to permit another network initialization -attempt. - - - -@section Application Programming Interface - -The RTEMS network package provides almost a complete set of BSD network -services. The network functions work like their BSD counterparts -with the following exceptions: - -@itemize @bullet -@item A given socket can be read or written by only one task at a time. - -@item The @code{select} function only works for file descriptors associated -with sockets. - -@item You must call @code{openlog} before calling any of the @code{syslog} functions. - -@item @b{Some of the network functions are not thread-safe.} -For example the following functions return a pointer to a static -buffer which remains valid only until the next call: - -@table @code -@item gethostbyaddr -@item gethostbyname -@item inet_ntoa -(@code{inet_ntop} is thread-safe, though). -@end table - -@item The RTEMS network package gathers statistics. - -@item Addition of a mechanism to "tap onto" an interface -and monitor every packet received and transmitted. - -@item Addition of @code{SO_SNDWAKEUP} and @code{SO_RCVWAKEUP} socket options. - -@end itemize - -Some of the new features are discussed in more detail in the following -sections. - -@subsection Network Statistics - -There are a number of functions to print statistics gathered by -the network stack. -These function are declared in @code{rtems/rtems_bsdnet.h}. - -@table @code -@item rtems_bsdnet_show_if_stats -Display statistics gathered by network interfaces. - -@item rtems_bsdnet_show_ip_stats -Display IP packet statistics. - -@item rtems_bsdnet_show_icmp_stats -Display ICMP packet statistics. - -@item rtems_bsdnet_show_tcp_stats -Display TCP packet statistics. - -@item rtems_bsdnet_show_udp_stats -Display UDP packet statistics. - -@item rtems_bsdnet_show_mbuf_stats -Display mbuf statistics. - -@item rtems_bsdnet_show_inet_routes -Display the routing table. - -@end table - -@subsection Tapping Into an Interface - -RTEMS add two new ioctls to the BSD networking code: -SIOCSIFTAP and SIOCGIFTAP. These may be used to set and get a -@i{tap function}. The tap function will be called for every -Ethernet packet received by the interface. - -These are called like other interface ioctls, such as SIOCSIFADDR. -When setting the tap function with SIOCSIFTAP, set the ifr_tap field -of the ifreq struct to the tap function. When retrieving the tap -function with SIOCGIFTAP, the current tap function will be returned in -the ifr_tap field. To stop tapping packets, call SIOCSIFTAP with a -ifr_tap field of 0. - -The tap function is called like this: - -@example -int tap (struct ifnet *, struct ether_header *, struct mbuf *) -@end example - -The tap function should return 1 if the packet was fully handled, in -which case the caller will simply discard the mbuf. The tap function -should return 0 if the packet should be passed up to the higher -networking layers. - -The tap function is called with the network semaphore locked. It must -not make any calls on the application levels of the networking level -itself. It is safe to call other non-networking RTEMS functions. - -@subsection Socket Options - -RTEMS adds two new @code{SOL_SOCKET} level options for @code{setsockopt} and -@code{getsockopt}: @code{SO_SNDWAKEUP} and @code{SO_RCVWAKEUP}. For both, the -option value should point to a sockwakeup structure. The sockwakeup -structure has the following fields: - -@example -@group - void (*sw_pfn) (struct socket *, caddr_t); - caddr_t sw_arg; -@end group -@end example - -These options are used to set a callback function to be called when, for -example, there is -data available from the socket (@code{SO_RCVWAKEUP}) and when there is space -available to accept data written to the socket (@code{SO_SNDWAKEUP}). - -If @code{setsockopt} is called with the @code{SO_RCVWAKEUP} option, and the -@code{sw_pfn} field is not zero, then when there is data -available to be read from -the socket, the function pointed to by the @code{sw_pfn} field will be -called. A pointer to the socket structure will be passed as the first -argument to the function. The @code{sw_arg} field set by the -@code{SO_RCVWAKEUP} call will be passed as the second argument to the function. - -If @code{setsockopt} is called with the @code{SO_SNDWAKEUP} -function, and the @code{sw_pfn} field is not zero, then when -there is space available to accept data written to the socket, -the function pointed to by the @code{sw_pfn} field -will be called. The arguments passed to the function will be as with -@code{SO_SNDWAKEUP}. - -When the function is called, the network semaphore will be locked and -the callback function runs in the context of the networking task. -The function must be careful not to call any networking functions. It -is OK to call an RTEMS function; for example, it is OK to send an -RTEMS event. - -The purpose of these callback functions is to permit a more efficient -alternative to the select call when dealing with a large number of -sockets. - -The callbacks are called by the same criteria that the select -function uses for indicating "ready" sockets. In Stevens @cite{Unix -Network Programming} on page 153-154 in the section "Under what Conditions -Is a Descriptor Ready?" you will find the definitive list of conditions -for readable and writable that also determine when the functions are -called. - -When the number of received bytes equals or exceeds the socket receive -buffer "low water mark" (default 1 byte) you get a readable callback. If -there are 100 bytes in the receive buffer and you only read 1, you will -not immediately get another callback. However, you will get another -callback after you read the remaining 99 bytes and at least 1 more byte -arrives. Using a non-blocking socket you should probably read until it -produces error EWOULDBLOCK and then allow the readable callback to tell -you when more data has arrived. (Condition 1.a.) - -For sending, when the socket is connected and the free space becomes at -or above the "low water mark" for the send buffer (default 4096 bytes) -you will receive a writable callback. You don't get continuous callbacks -if you don't write anything. Using a non-blocking write socket, you can -then call write until it returns a value less than the amount of data -requested to be sent or it produces error EWOULDBLOCK (indicating buffer -full and no longer writable). When this happens you can -try the write again, but it is often better to go do other things and -let the writable callback tell you when space is available to send -again. You only get a writable callback when the free space transitions -to above the "low water mark" and not every time you -write to a non-full send buffer. (Condition 2.a.) - -The remaining conditions enumerated by Stevens handle the fact that -sockets become readable and/or writable when connects, disconnects and -errors occur, not just when data is received or sent. For example, when -a server "listening" socket becomes readable it indicates that a client -has connected and accept can be called without blocking, not that -network data was received (Condition 1.c). - -@subsection Adding an IP Alias - -The following code snippet adds an IP alias: - -@example -void addAlias(const char *pName, const char *pAddr, const char *pMask) -@{ - struct ifaliasreq aliasreq; - struct sockaddr_in *in; - - /* initialize alias request */ - memset(&aliasreq, 0, sizeof(aliasreq)); - sprintf(aliasreq.ifra_name, pName); - - /* initialize alias address */ - in = (struct sockaddr_in *)&aliasreq.ifra_addr; - in->sin_family = AF_INET; - in->sin_len = sizeof(aliasreq.ifra_addr); - in->sin_addr.s_addr = inet_addr(pAddr); - - /* initialize alias mask */ - in = (struct sockaddr_in *)&aliasreq.ifra_mask; - in->sin_family = AF_INET; - in->sin_len = sizeof(aliasreq.ifra_mask); - in->sin_addr.s_addr = inet_addr(pMask); - - /* call to setup the alias */ - rtems_bsdnet_ifconfig(pName, SIOCAIFADDR, &aliasreq); -@} -@end example - -Thanks to @uref{mailto:mikes@@poliac.com,Mike Seirs} for this example -code. - -@subsection Adding a Default Route - -The function provided in this section is functionally equivalent to -the command @code{route add default gw yyy.yyy.yyy.yyy}: - -@example -void mon_ifconfig(int argc, char *argv[], unsigned32 command_arg, - bool verbose) -@{ - struct sockaddr_in ipaddr; - struct sockaddr_in dstaddr; - struct sockaddr_in netmask; - struct sockaddr_in broadcast; - char *iface; - int f_ip = 0; - int f_ptp = 0; - int f_netmask = 0; - int f_up = 0; - int f_down = 0; - int f_bcast = 0; - int cur_idx; - int rc; - int flags; - - bzero((void*) &ipaddr, sizeof(ipaddr)); - bzero((void*) &dstaddr, sizeof(dstaddr)); - bzero((void*) &netmask, sizeof(netmask)); - bzero((void*) &broadcast, sizeof(broadcast)); - - ipaddr.sin_len = sizeof(ipaddr); - ipaddr.sin_family = AF_INET; - - dstaddr.sin_len = sizeof(dstaddr); - dstaddr.sin_family = AF_INET; - - netmask.sin_len = sizeof(netmask); - netmask.sin_family = AF_INET; - - broadcast.sin_len = sizeof(broadcast); - broadcast.sin_family = AF_INET; - - cur_idx = 0; - if (argc <= 1) @{ - /* display all interfaces */ - iface = NULL; - cur_idx += 1; - @} else @{ - iface = argv[1]; - if (isdigit(*argv[2])) @{ - if (inet_pton(AF_INET, argv[2], &ipaddr.sin_addr) < 0) @{ - printf("bad ip address: %s\n", argv[2]); - return; - @} - f_ip = 1; - cur_idx += 3; - @} else @{ - cur_idx += 2; - @} - @} - - if ((f_down !=0) && (f_ip != 0)) @{ - f_up = 1; - @} - - while(argc > cur_idx) @{ - if (strcmp(argv[cur_idx], "up") == 0) @{ - f_up = 1; - if (f_down != 0) @{ - printf("Can't make interface up and down\n"); - @} - @} else if(strcmp(argv[cur_idx], "down") == 0) @{ - f_down = 1; - if (f_up != 0) @{ - printf("Can't make interface up and down\n"); - @} - @} else if(strcmp(argv[cur_idx], "netmask") == 0) @{ - if ((cur_idx + 1) >= argc) @{ - printf("No netmask address\n"); - return; - @} - if (inet_pton(AF_INET, argv[cur_idx+1], &netmask.sin_addr) < 0) @{ - printf("bad netmask: %s\n", argv[cur_idx]); - return; - @} - f_netmask = 1; - cur_idx += 1; - @} else if(strcmp(argv[cur_idx], "broadcast") == 0) @{ - if ((cur_idx + 1) >= argc) @{ - printf("No broadcast address\n"); - return; - @} - if (inet_pton(AF_INET, argv[cur_idx+1], &broadcast.sin_addr) < 0) @{ - printf("bad broadcast: %s\n", argv[cur_idx]); - return; - @} - f_bcast = 1; - cur_idx += 1; - @} else if(strcmp(argv[cur_idx], "pointopoint") == 0) @{ - if ((cur_idx + 1) >= argc) @{ - printf("No pointopoint address\n"); - return; - @} - if (inet_pton(AF_INET, argv[cur_idx+1], &dstaddr.sin_addr) < 0) @{ - printf("bad pointopoint: %s\n", argv[cur_idx]); - return; - @} - - f_ptp = 1; - cur_idx += 1; - @} else @{ - printf("Bad parameter: %s\n", argv[cur_idx]); - return; - @} - - cur_idx += 1; - @} - - printf("ifconfig "); - if (iface != NULL) @{ - printf("%s ", iface); - if (f_ip != 0) @{ - char str[256]; - inet_ntop(AF_INET, &ipaddr.sin_addr, str, 256); - printf("%s ", str); - @} - - if (f_netmask != 0) @{ - char str[256]; - inet_ntop(AF_INET, &netmask.sin_addr, str, 256); - printf("netmask %s ", str); - @} - - if (f_bcast != 0) @{ - char str[256]; - inet_ntop(AF_INET, &broadcast.sin_addr, str, 256); - printf("broadcast %s ", str); - @} - - if (f_ptp != 0) @{ - char str[256]; - inet_ntop(AF_INET, &dstaddr.sin_addr, str, 256); - printf("pointopoint %s ", str); - @} - - if (f_up != 0) @{ - printf("up\n"); - @} else if (f_down != 0) @{ - printf("down\n"); - @} else @{ - printf("\n"); - @} - @} - - if ((iface == NULL) || ((f_ip == 0) && (f_down == 0) && (f_up == 0))) @{ - rtems_bsdnet_show_if_stats(); - return; - @} - - flags = 0; - if (f_netmask) @{ - rc = rtems_bsdnet_ifconfig(iface, SIOCSIFNETMASK, &netmask); - if (rc < 0) @{ - printf("Could not set netmask: %s\n", strerror(errno)); - return; - @} - @} - - if (f_bcast) @{ - rc = rtems_bsdnet_ifconfig(iface, SIOCSIFBRDADDR, &broadcast); - if (rc < 0) @{ - printf("Could not set broadcast: %s\n", strerror(errno)); - return; - @} - @} - - if (f_ptp) @{ - rc = rtems_bsdnet_ifconfig(iface, SIOCSIFDSTADDR, &dstaddr); - if (rc < 0) @{ - printf("Could not set destination address: %s\n", strerror(errno)); - return; - @} - flags |= IFF_POINTOPOINT; - @} - - /* This must come _after_ setting the netmask, broadcast addresses */ - if (f_ip) @{ - rc = rtems_bsdnet_ifconfig(iface, SIOCSIFADDR, &ipaddr); - if (rc < 0) @{ - printf("Could not set IP address: %s\n", strerror(errno)); - return; - @} - @} - - if (f_up != 0) @{ - flags |= IFF_UP; - @} - - if (f_down != 0) @{ - printf("Warning: taking interfaces down is not supported\n"); - @} - - rc = rtems_bsdnet_ifconfig(iface, SIOCSIFFLAGS, &flags); - if (rc < 0) @{ - printf("Could not set interface flags: %s\n", strerror(errno)); - return; - @} -@} - - - -void mon_route(int argc, char *argv[], unsigned32 command_arg, - bool verbose) -@{ - int cmd; - struct sockaddr_in dst; - struct sockaddr_in gw; - struct sockaddr_in netmask; - int f_host; - int f_gw = 0; - int cur_idx; - int flags; - int rc; - - memset(&dst, 0, sizeof(dst)); - memset(&gw, 0, sizeof(gw)); - memset(&netmask, 0, sizeof(netmask)); - - dst.sin_len = sizeof(dst); - dst.sin_family = AF_INET; - dst.sin_addr.s_addr = inet_addr("0.0.0.0"); - - gw.sin_len = sizeof(gw); - gw.sin_family = AF_INET; - gw.sin_addr.s_addr = inet_addr("0.0.0.0"); - - netmask.sin_len = sizeof(netmask); - netmask.sin_family = AF_INET; - netmask.sin_addr.s_addr = inet_addr("255.255.255.0"); - - if (argc < 2) @{ - rtems_bsdnet_show_inet_routes(); - return; - @} - - if (strcmp(argv[1], "add") == 0) @{ - cmd = RTM_ADD; - @} else if (strcmp(argv[1], "del") == 0) @{ - cmd = RTM_DELETE; - @} else @{ - printf("invalid command: %s\n", argv[1]); - printf("\tit should be 'add' or 'del'\n"); - return; - @} - - if (argc < 3) @{ - printf("not enough arguments\n"); - return; - @} - - if (strcmp(argv[2], "-host") == 0) @{ - f_host = 1; - @} else if (strcmp(argv[2], "-net") == 0) @{ - f_host = 0; - @} else @{ - printf("Invalid type: %s\n", argv[1]); - printf("\tit should be '-host' or '-net'\n"); - return; - @} - - if (argc < 4) @{ - printf("not enough arguments\n"); - return; - @} - - inet_pton(AF_INET, argv[3], &dst.sin_addr); - - cur_idx = 4; - while(cur_idx < argc) @{ - if (strcmp(argv[cur_idx], "gw") == 0) @{ - if ((cur_idx +1) >= argc) @{ - printf("no gateway address\n"); - return; - @} - f_gw = 1; - inet_pton(AF_INET, argv[cur_idx + 1], &gw.sin_addr); - cur_idx += 1; - @} else if(strcmp(argv[cur_idx], "netmask") == 0) @{ - if ((cur_idx +1) >= argc) @{ - printf("no netmask address\n"); - return; - @} - f_gw = 1; - inet_pton(AF_INET, argv[cur_idx + 1], &netmask.sin_addr); - cur_idx += 1; - @} else @{ - printf("Unknown argument\n"); - return; - @} - cur_idx += 1; - @} - - flags = RTF_STATIC; - if (f_gw != 0) @{ - flags |= RTF_GATEWAY; - @} - if (f_host != 0) @{ - flags |= RTF_HOST; - @} - - rc = rtems_bsdnet_rtrequest(cmd, &dst, &gw, &netmask, flags, NULL); - if (rc < 0) @{ - printf("Error adding route\n"); - @} -@} -@end example - -Thanks to @uref{mailto:jtm@@smoothmsmoothie.com,Jay Monkman} for this example -code. - -@subsection Time Synchronization Using NTP - -@example -int rtems_bsdnet_synchronize_ntp (int interval, rtems_task_priority priority); -@end example - -If the interval argument is 0 the routine synchronizes the RTEMS time-of-day -clock with the first NTP server in the rtems_bsdnet_ntpserve array and -returns. The priority argument is ignored. - -If the interval argument is greater than 0, the routine also starts an -RTEMS task at the specified priority and polls the NTP server every -`interval' seconds. NOTE: This mode of operation has not yet been -implemented. - -On successful synchronization of the RTEMS time-of-day clock the routine -returns 0. If an error occurs a message is printed and the routine returns -1 -with an error code in errno. -There is no timeout -- if there is no response from an NTP server the -routine will wait forever. - - - - diff --git a/doc/networking/networkflow.eps b/doc/networking/networkflow.eps deleted file mode 100644 index 8aba78d55f..0000000000 --- a/doc/networking/networkflow.eps +++ /dev/null @@ -1,1343 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: -%%Creator: Diagram -%%CreationDate: Tue Aug 18 16:41:45 1998 -%%For: eric -%%DocumentFonts: (atend) -%%Pages: 0 0 -%%BoundingBox: 0 0 487 549 -%%NXNextStepVersion: 3.0 -%%EndComments - -%%BeginProcSet: /usr/lib/NextStep/printPackage.ps 3.0 -%! -% NeXT Printing Package -% Version: 3.1 -% Copyright: 1988, NeXT, Inc. - -/__NXdef{1 index where{pop pop pop}{def}ifelse}bind def -/__NXbdef{1 index where{pop pop pop}{bind def}ifelse}bind def -/UserObjects 10 array __NXdef -/defineuserobject{ - exch dup 1 add dup UserObjects length gt{ - array dup 0 UserObjects putinterval - /UserObjects exch def - }{pop}ifelse UserObjects exch 3 -1 roll put -}__NXbdef -/undefineuserobject{UserObjects exch null put}__NXbdef -/execuserobject{UserObjects exch get exec}__NXbdef -/__NXRectPath{4 2 roll moveto 1 index 0 rlineto -0 exch rlineto neg 0 rlineto closepath}__NXbdef -/__NXProcessRectArgs{ - 1 index type /arraytype eq{ - exch 0 4 2 index length 1 sub{ - dup 3 add 1 exch{1 index exch get exch}for - 5 1 roll 5 index exec - }for pop pop - }{exec}ifelse -}__NXbdef -/rectfill{gsave newpath {__NXRectPath fill} __NXProcessRectArgs grestore}__NXbdef -/rectclip{newpath {__NXRectPath} __NXProcessRectArgs clip newpath}__NXbdef -/rectstroke{ - gsave newpath dup type /arraytype eq{dup length 6 eq}{false}ifelse{ - {gsave __NXRectPath null concat stroke grestore} - dup length array cvx copy dup 2 4 -1 roll put __NXProcessRectArgs - }{{__NXRectPath stroke} __NXProcessRectArgs}ifelse grestore -}__NXbdef -/_NXLevel2 systemdict /languagelevel known {languagelevel 2 ge}{false}ifelse __NXdef -/xyshow{ - 0 1 3 index length 1 sub{ - currentpoint 4 index 3 index 1 getinterval show - 3 index 3 index 2 mul 1 add get add exch - 3 index 3 index 2 mul get add exch moveto pop - }for pop pop -}__NXbdef -/xshow{ - 0 1 3 index length 1 sub{ - currentpoint 4 index 3 index 1 getinterval show - exch 3 index 3 index get add exch moveto pop - }for pop pop -}__NXbdef -/yshow{ - 0 1 3 index length 1 sub{ - currentpoint 4 index 3 index 1 getinterval show - 3 index 3 index get add moveto pop - }for pop pop -}__NXbdef -/arct{arcto pop pop pop pop}__NXbdef -/setbbox{pop pop pop pop}__NXbdef -/ucache{}__NXbdef -/ucachestatus{mark 0 0 0 0 0}__NXbdef -/setucacheparams{cleartomark}__NXbdef -/uappend{systemdict begin cvx exec end}__NXbdef -/ueofill{gsave newpath uappend eofill grestore}__NXbdef -/ufill{gsave newpath uappend fill grestore}__NXbdef -/ustroke{ - gsave newpath dup length 6 eq - {exch uappend concat}{uappend}ifelse - stroke grestore -}__NXbdef -/__NXustrokepathMatrix dup where {pop pop}{matrix def}ifelse -/ustrokepath{ - newpath dup length 6 eq{ - exch uappend __NXustrokepathMatrix currentmatrix exch concat - strokepath setmatrix - }{uappend strokepath}ifelse -} __NXbdef -/upath{ - [exch {/ucache cvx}if pathbbox /setbbox cvx - {/moveto cvx}{/lineto cvx}{/curveto cvx}{/closepath cvx}pathforall]cvx -} __NXbdef -/setstrokeadjust{pop}__NXbdef -/currentstrokeadjust{false}__NXbdef -/selectfont{exch findfont exch -dup type /arraytype eq {makefont}{scalefont}ifelse setfont}__NXbdef -/_NXCombineArrays{ - counttomark dup 2 add index dup length 3 -1 roll { - 2 index length sub dup 4 1 roll 1 index exch 4 -1 roll putinterval exch - }repeat pop pop pop -}__NXbdef -/flushgraphics{}def -/setwindowtype{pop pop}def -/currentwindowtype{pop 0}def -/setalpha{pop}def -/currentalpha{1.0}def -/hidecursor{}def -/obscurecursor{}def -/revealcursor{}def -/setcursor{4 {pop}repeat}bind def -/showcursor{}def -/NextStepEncoding where not{ -/NextStepEncoding StandardEncoding 256 array copy def -0 [129/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/Ccedilla/Egrave -/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis -/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/Ugrave/Uacute -/Ucircumflex/Udieresis/Yacute/Thorn/mu/multiply/divide/copyright -176/registered 181/brokenbar 190/logicalnot 192/onesuperior 201/twosuperior -204/threesuperior 209/plusminus/onequarter/onehalf/threequarters/agrave -/aacute/acircumflex/atilde/adieresis/aring/ccedilla/egrave/eacute -/ecircumflex/edieresis/igrave 226/iacute 228/icircumflex/idieresis/eth -/ntilde 236/ograve/oacute/ocircumflex/otilde/odieresis 242/ugrave/uacute -/ucircumflex 246/udieresis/yacute 252/thorn/ydieresis] -{dup type /nametype eq - {NextStepEncoding 2 index 2 index put pop 1 add}{exch pop}ifelse -}forall pop -/NextStepEncoding NextStepEncoding readonly def -/_NXfstr 128 string dup 0 (_NX) putinterval def -/_NXfindfont /findfont load def -/findfont{ - % Because we can never let NextStepEncoding get into - % SharedFontDirectory, we cannot reencode a font to NextStepEncoding - % if we are in shared mode. So if currentshared is true, - % we call the normal findfont and return that - /currentshared where {pop currentshared} {false} ifelse - {_NXfindfont} - {dup _NXfstr 3 125 getinterval cvs length 3 add _NXfstr 0 3 -1 roll - getinterval cvn exch FontDirectory 2 index known - {pop FontDirectory exch get} - {_NXfindfont dup /Encoding get StandardEncoding eq - { dup length dict exch - {1 index /FID ne {2 index 3 1 roll put}{pop pop}ifelse}forall - dup /Encoding NextStepEncoding put definefont - }{exch pop} ifelse - }ifelse - }ifelse -}bind def -}{pop}ifelse -/_NXImageString {/__NXImageString where{pop}{/__NXImageString 4000 string __NXdef}ifelse __NXImageString}__NXbdef -/_NXDoImageOp{ - 3 dict begin /parr 5 array def 1 index{dup}{1}ifelse /chans exch def - chans 2 add 2 roll parr 0 chans getinterval astore pop - 5 index 4 index mul 2 index{1 sub 8 idiv 1 add mul}{mul 1 sub 8 idiv 1 add}ifelse - 4 index mul /totbytes exch def pop exch pop - gsave matrix invertmatrix concat 0.5 setgray 0 0 4 2 roll rectfill grestore - {0 1 chans 1 sub{parr exch get exec length totbytes exch sub /totbytes exch def}for totbytes 0 le{exit}if}loop end -}__NXbdef -/alphaimage{1 add _NXDoImageOp}def -_NXLevel2{ - /NXCalibratedRGBColorSpace where{pop}{ - /NXCalibratedRGBColorSpace - {mark /NXCalibratedRGB /ColorSpace findresource exch pop}stopped - {cleartomark /NXCalibratedRGB[/CIEBasedABC 2 dict dup begin - /MatrixLMN[.4124 .2126 .0193 .3576 .7152 .1192 .1805 .0722 .9505]def - /WhitePoint[.9505 1 1.089] def end] /ColorSpace defineresource}if def}ifelse - /nxsetrgbcolor{NXCalibratedRGBColorSpace setcolorspace setcolor}__NXbdef - /nxsetgray{dup dup nxsetrgbcolor}__NXbdef - /_NXCalibratedImage{exch{array astore dup length true}{false}ifelse - 8 -1 roll{NXCalibratedRGBColorSpace setcolorspace}if - 8 dict dup 9 1 roll begin /ImageType 1 def /MultipleDataSources exch def - currentcolorspace 0 get /Indexed eq{pop /Decode[0 2 6 index exp 1 sub]def} - {2 mul dup array /Decode exch def 1 sub 0 1 3 -1 roll{Decode exch dup 2 mod put}for}ifelse - /DataSource exch def /ImageMatrix exch def - /BitsPerComponent exch def /Height exch def /Width exch def end image}__NXbdef -} { - /setcmykcolor{ - 1.0 exch sub dup dup 6 -1 roll sub dup 0 lt{pop 0}if 5 1 roll - 4 -1 roll sub dup 0 lt{pop 0}if 3 1 roll exch sub dup 0 lt{pop 0}if setrgbcolor}__NXbdef - /currentcmykcolor{currentrgbcolor 3{1.0 exch sub 3 1 roll}repeat 0}__NXbdef - /colorimage{2 copy 3 ne or{_NXDoImageOp}{4 index dup 8 ne exch 4 ne and{_NXDoImageOp}{ - pop pop save 6 1 roll 12 dict begin/Proc exch def/Res 0 string def - /Alloc{2 index length mul 2 add dup 2 index load length gt{1.2 mul round cvi string def}{pop pop}ifelse}def - 1 index 8 eq{/Unpack{.34 Alloc}def}{ - /Wid 4 index 3 mul def exch pop 8 exch/Str1 0 string def/Lim Wid def - /Unpack{.67 Alloc/Str1 2 Alloc 0 exch Lim exch - {dup -4 bitshift 17 mul Str1 exch 4 index exch put 15 and 17 mul Str1 exch 3 index 1 add exch put - 2 sub dup 0 le{0 lt Wid exch{exch 1 sub exch}if}if exch 2 add exch - }forall/Lim exch def Str1 exch 0 exch getinterval - }def - }ifelse - /Ops[{.3 mul add 1}{.59 mul add 2}{.11 mul add round cvi Res exch 2 index exch put 1 add 0.0 0}]def/Val 0.0 def/Phase 0 def - {0 Val Phase Proc/Res Unpack{exch Ops exch get exec}forall/Phase exch def/Val exch def Res exch 0 exch getinterval} - image end restore}ifelse}ifelse - }__NXbdef - /nxsetrgbcolor{setrgbcolor}__NXbdef /nxsetgray{setgray}__NXbdef - /setpattern{pop .5 setgray}__NXbdef - /_NXCalibratedImage{dup 1 eq {pop pop image}{colorimage}ifelse pop}__NXbdef -} ifelse -/_NXSetCMYKOrRGB where{pop}{ - mark{systemdict /currentwindow get exec}stopped - {{pop pop pop setcmykcolor}}{{nxsetrgbcolor pop pop pop pop}}ifelse /_NXSetCMYKOrRGB exch def cleartomark -}ifelse -%%EndProcSet - -gsave - /__NXbasematrix matrix currentmatrix def -grestore -%%EndProlog -%%BeginSetup -%%EndSetup -gsave -0 0 488 549 rectclip -[1 0 0 -1 -26.5 567] concat -26.5 18 487 549 rectclip -gsave -36 306 306 261 rectclip -0 nxsetgray -1 setlinewidth -[6] 1 setdash -36.5 306.5 305 260 rectstroke -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -58 418 166 472 setbbox -68.800003 418 moveto -155.200012 428.799988 10.8 -90 0 arc -155.200012 461.199982 10.8 0 90 arc -68.800003 461.199982 10.8 90 180 arc -68.800003 428.799988 10.8 180 270 arc -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -58 418 166 472 setbbox -69.300003 418.5 moveto -154.700012 429.299988 10.8 -90 0 arc -154.700012 460.699982 10.8 0 90 arc -69.300003 460.699982 10.8 90 180 arc -69.300003 429.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -58 418 166 472 setbbox -69.300003 419 moveto -154.700012 429.299988 10.3 -90 0 arc -154.700012 460.699982 10.3 0 90 arc -69.300003 460.699982 10.3 90 180 arc -69.300003 429.299988 10.3 180 270 arc -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -54 414 162 468 setbbox -65.300003 415 moveto -150.700012 425.299988 10.3 -90 0 arc -150.700012 456.699982 10.3 0 90 arc -65.300003 456.699982 10.3 90 180 arc -65.300003 425.299988 10.3 180 270 arc -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -54 414 162 468 setbbox -64.800003 414 moveto -151.200012 424.799988 10.8 -90 0 arc -151.200012 457.199982 10.8 0 90 arc -64.800003 457.199982 10.8 90 180 arc -64.800003 424.799988 10.8 180 270 arc -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -54 414 162 468 setbbox -65.300003 414.5 moveto -150.700012 425.299988 10.8 -90 0 arc -150.700012 456.699982 10.8 0 90 arc -65.300003 456.699982 10.8 90 180 arc -65.300003 425.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -/Helvetica findfont 12 scalefont [1 0 0 -1 0 0] makefont -8 -exch -defineuserobject -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -84 430 moveto (Interface) show -85 445 moveto (Receive) show -84 460 moveto (Daemon) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -193 418 301 472 setbbox -203.800003 418 moveto -290.200012 428.799988 10.8 -90 0 arc -290.200012 461.199982 10.8 0 90 arc -203.800003 461.199982 10.8 90 180 arc -203.800003 428.799988 10.8 180 270 arc -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -193 418 301 472 setbbox -204.300003 418.5 moveto -289.700012 429.299988 10.8 -90 0 arc -289.700012 460.699982 10.8 0 90 arc -204.300003 460.699982 10.8 90 180 arc -204.300003 429.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -193 418 301 472 setbbox -204.300003 419 moveto -289.700012 429.299988 10.3 -90 0 arc -289.700012 460.699982 10.3 0 90 arc -204.300003 460.699982 10.3 90 180 arc -204.300003 429.299988 10.3 180 270 arc -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -189 414 297 468 setbbox -200.300003 415 moveto -285.700012 425.299988 10.3 -90 0 arc -285.700012 456.699982 10.3 0 90 arc -200.300003 456.699982 10.3 90 180 arc -200.300003 425.299988 10.3 180 270 arc -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -189 414 297 468 setbbox -199.800003 414 moveto -286.200012 424.799988 10.8 -90 0 arc -286.200012 457.199982 10.8 0 90 arc -199.800003 457.199982 10.8 90 180 arc -199.800003 424.799988 10.8 180 270 arc -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -189 414 297 468 setbbox -200.300003 414.5 moveto -285.700012 425.299988 10.8 -90 0 arc -285.700012 456.699982 10.8 0 90 arc -200.300003 456.699982 10.8 90 180 arc -200.300003 425.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -219 430 moveto (Interface) show -219 445 moveto (Transmit) show -219 460 moveto (Daemon) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -184 328 310 382 setbbox -184 328 moveto -100.800003 0 rlineto -25.200001 54 rlineto --100.800003 0 rlineto -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -184.5 328.5 309.5 381.5 setbbox -184.5 328.5 moveto -100 0 rlineto -25 53 rlineto --100 0 rlineto -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -185 329 309 381 setbbox -185 329 moveto -99.199997 0 rlineto -24.799999 52 rlineto --99.199997 0 rlineto -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -181 325 305 377 setbbox -181 325 moveto -99.199997 0 rlineto -24.799999 52 rlineto --99.199997 0 rlineto -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -180 324 306 378 setbbox -180 324 moveto -100.800003 0 rlineto -25.200001 54 rlineto --100.800003 0 rlineto -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -180.5 324.5 305.5 377.5 setbbox -180.5 324.5 moveto -100 0 rlineto -25 53 rlineto --100 0 rlineto -closepath -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -219 340.5 moveto (Interface) show -224 355.5 moveto (Output) show -224 370.5 moveto (Queue) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -193 184 108 54 rectclip -1 setlinewidth -193.5 184.5 107 53 rectstroke -grestore -194 185 106 52 rectfill -1 nxsetgray -190 181 106 52 rectfill -gsave -189 180 108 54 rectclip -0 nxsetgray -1 setlinewidth -189.5 180.5 107 53 rectstroke -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -220 204 moveto (Network) show -228 219 moveto (Code) show -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -242.999969 234 243.000031 316.299988 setbbox -243.000031 234 moveto -242.999969 316.299988 lineto -end -stroke -grestore -0 setlinejoin -gsave -[0 1 -1 0 567 81.000031] concat -gsave -newpath -systemdict -begin -233.799973 319.5 242.999969 328.5 setbbox -242.999969 324 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -242.999985 378 243.000031 406.299988 setbbox -243.000031 378 moveto -242.999985 406.299988 lineto -end -stroke -grestore -0 setlinejoin -gsave -[0 1 -1 0 657 171.000031] concat -gsave -newpath -systemdict -begin -233.799973 409.5 242.999969 418.5 setbbox -242.999969 414 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -193 22 301 76 setbbox -203.800003 22 moveto -290.200012 32.799999 10.8 -90 0 arc -290.200012 65.199997 10.8 0 90 arc -203.800003 65.199997 10.8 90 180 arc -203.800003 32.799999 10.8 180 270 arc -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -193 22 301 76 setbbox -204.300003 22.5 moveto -289.700012 33.299999 10.8 -90 0 arc -289.700012 64.699997 10.8 0 90 arc -204.300003 64.699997 10.8 90 180 arc -204.300003 33.299999 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -193 22 301 76 setbbox -204.300003 23 moveto -289.700012 33.299999 10.3 -90 0 arc -289.700012 64.699997 10.3 0 90 arc -204.300003 64.699997 10.3 90 180 arc -204.300003 33.299999 10.3 180 270 arc -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -189 18 297 72 setbbox -200.300003 19 moveto -285.700012 29.299999 10.3 -90 0 arc -285.700012 60.699997 10.3 0 90 arc -200.300003 60.699997 10.3 90 180 arc -200.300003 29.299999 10.3 180 270 arc -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -189 18 297 72 setbbox -199.800003 18 moveto -286.200012 28.799999 10.8 -90 0 arc -286.200012 61.200001 10.8 0 90 arc -199.800003 61.200001 10.8 90 180 arc -199.800003 28.799999 10.8 180 270 arc -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -189 18 297 72 setbbox -200.300003 18.5 moveto -285.700012 29.299999 10.8 -90 0 arc -285.700012 60.699997 10.8 0 90 arc -200.300003 60.699997 10.8 90 180 arc -200.300003 29.299999 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -229 34 moveto (User) show -213 49 moveto (Application) show -229 64 moveto (Task) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -346 121 472 175 setbbox -346 121 moveto -100.800003 0 rlineto -25.200001 54 rlineto --100.800003 0 rlineto -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -346.5 121.5 471.5 174.5 setbbox -346.5 121.5 moveto -100 0 rlineto -25 53 rlineto --100 0 rlineto -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -347 122 471 174 setbbox -347 122 moveto -99.199997 0 rlineto -24.799999 52 rlineto --99.199997 0 rlineto -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -343 118 467 170 setbbox -343 118 moveto -99.199997 0 rlineto -24.799999 52 rlineto --99.199997 0 rlineto -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -342 117 468 171 setbbox -342 117 moveto -100.800003 0 rlineto -25.200001 54 rlineto --100.800003 0 rlineto -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -342.5 117.5 467.5 170.5 setbbox -342.5 117.5 moveto -100 0 rlineto -25 53 rlineto --100 0 rlineto -closepath -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -386 133.5 moveto (Socket) show -382 148.5 moveto (Receive) show -384 163.5 moveto ( Queue) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -373 418 481 472 setbbox -383.799988 418 moveto -470.199982 428.799988 10.8 -90 0 arc -470.199982 461.199982 10.8 0 90 arc -383.799988 461.199982 10.8 90 180 arc -383.799988 428.799988 10.8 180 270 arc -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -373 418 481 472 setbbox -384.299988 418.5 moveto -469.699982 429.299988 10.8 -90 0 arc -469.699982 460.699982 10.8 0 90 arc -384.299988 460.699982 10.8 90 180 arc -384.299988 429.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -373 418 481 472 setbbox -384.299988 419 moveto -469.699982 429.299988 10.3 -90 0 arc -469.699982 460.699982 10.3 0 90 arc -384.299988 460.699982 10.3 90 180 arc -384.299988 429.299988 10.3 180 270 arc -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -369 414 477 468 setbbox -380.299988 415 moveto -465.699982 425.299988 10.3 -90 0 arc -465.699982 456.699982 10.3 0 90 arc -380.299988 456.699982 10.3 90 180 arc -380.299988 425.299988 10.3 180 270 arc -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -369 414 477 468 setbbox -379.799988 414 moveto -466.199982 424.799988 10.8 -90 0 arc -466.199982 457.199982 10.8 0 90 arc -379.799988 457.199982 10.8 90 180 arc -379.799988 424.799988 10.8 180 270 arc -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -369 414 477 468 setbbox -380.299988 414.5 moveto -465.699982 425.299988 10.8 -90 0 arc -465.699982 456.699982 10.8 0 90 arc -380.299988 456.699982 10.8 90 180 arc -380.299988 425.299988 10.8 180 270 arc -closepath -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -400 437.5 moveto (Network) show -399 452.5 moveto (Daemon) show -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -67 499 90 45 rectclip -1 setlinewidth -67.5 499.5 89 44 rectstroke -grestore -68 500 88 43 rectfill -1 nxsetgray -64 496 88 43 rectfill -gsave -63 495 90 45 rectclip -0 nxsetgray -1 setlinewidth -63.5 495.5 89 44 rectstroke -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -86 508 moveto (Receive) show -85 523 moveto (Interrupt) show -gsave -66 496 84 43 rectclip -86 538 moveto (Handler) show -grestore -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -202 499 90 45 rectclip -1 setlinewidth -202.5 499.5 89 44 rectstroke -grestore -203 500 88 43 rectfill -1 nxsetgray -199 496 88 43 rectfill -gsave -198 495 90 45 rectclip -0 nxsetgray -1 setlinewidth -198.5 495.5 89 44 rectstroke -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -219 508 moveto (Transmit) show -220 523 moveto (Interrupt) show -gsave -201 496 84 43 rectclip -221 538 moveto (Handler) show -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -[1 6] 1 setdash -gsave -newpath -systemdict -begin -108.000023 475.700012 108.000031 495 setbbox -108.000023 495 moveto -108.000031 475.700012 lineto -end -stroke -grestore -[] 0 setdash -0 setlinejoin -gsave -[0 -1 1 0 -359.999969 576] concat -gsave -newpath -systemdict -begin -98.800034 463.5 108.000031 472.5 setbbox -108.000031 468 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -[1 6] 1 setdash -gsave -newpath -systemdict -begin -243.000015 475.700012 243.000031 495 setbbox -243.000015 495 moveto -243.000031 475.700012 lineto -end -stroke -grestore -[] 0 setdash -0 setlinejoin -gsave -[0 -1 1 0 -224.999969 711] concat -gsave -newpath -systemdict -begin -233.800034 463.5 243.000031 472.5 setbbox -243.000031 468 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -[6] 1 setdash -gsave -newpath -systemdict -begin -27 90 513 90 setbbox -27 90 moveto -513 90 lineto -end -stroke -grestore -[] 0 setdash -0 setlinejoin -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -304.700012 45 405.000031 117 setbbox -405.000031 117 moveto -405 45 lineto -304.700012 45 lineto -end -stroke -grestore -0 setlinejoin -gsave -[-1 0 0 -1 594 90] concat -gsave -newpath -systemdict -begin -287.799988 40.5 297 49.5 setbbox -297 45 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -297 178.699997 405.000031 207 setbbox -297 207 moveto -315 207 lineto -405 207 lineto -405.000031 178.699997 lineto -end -stroke -grestore -0 setlinejoin -gsave -[0 -1 1 0 234.000031 576] concat -gsave -newpath -systemdict -begin -395.800018 166.5 405.000031 175.5 setbbox -405.000031 171 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0.333338 nxsetgray -gsave -0.333338 nxsetgray -newpath -systemdict -begin -400 247 472 301 setbbox -472 295.600006 moveto -0 -43.200001 rlineto -472 249.419205 455.872009 247 436 247 curveto -416.127991 247 400 249.419205 400 252.399994 curveto -0 43.200001 rlineto -400 298.580811 416.127991 301 436 301 curveto -455.872009 301 472 298.580811 472 295.600006 curveto -closepath -end -clip -newpath -1 setlinewidth -gsave -newpath -systemdict -begin -400.5 247.5 471.5 300.5 setbbox -471.5 295.200012 moveto -0 -42.400002 rlineto -471.5 249.874405 455.596008 247.5 436 247.5 curveto -416.403992 247.5 400.5 249.874405 400.5 252.800003 curveto -0 42.400002 rlineto -400.5 298.12558 416.403992 300.5 436 300.5 curveto -455.596008 300.5 471.5 298.12558 471.5 295.199982 curveto -closepath -end -stroke -grestore -gsave -newpath -systemdict -begin -400.5 247.5 471.5 300.5 setbbox -471.5 252.800003 moveto -471.5 255.725601 455.596008 258.100006 436 258.100006 curveto -416.403992 258.100006 400.5 255.725601 400.5 252.800003 curveto -end -stroke -grestore -grestore -gsave -newpath -systemdict -begin -401 248 471 300 setbbox -471 294.799988 moveto -0 -41.599998 rlineto -471 250.329605 455.320007 248 436 248 curveto -416.679993 248 401 250.329605 401 253.199997 curveto -0 41.599998 rlineto -401 297.67041 416.679993 300 436 300 curveto -455.320007 300 471 297.67041 471 294.800018 curveto -closepath -end -fill -grestore -1 nxsetgray -gsave -newpath -systemdict -begin -397 244 467 296 setbbox -467 290.799988 moveto -0 -41.599998 rlineto -467 246.329605 451.320007 244 432 244 curveto -412.679993 244 397 246.329605 397 249.199997 curveto -0 41.599998 rlineto -397 293.67041 412.679993 296 432 296 curveto -451.320007 296 467 293.67041 467 290.800018 curveto -closepath -end -fill -grestore -gsave -newpath -systemdict -begin -396 243 468 297 setbbox -468 291.600006 moveto -0 -43.200001 rlineto -468 245.419205 451.872009 243 432 243 curveto -412.127991 243 396 245.419205 396 248.399994 curveto -0 43.200001 rlineto -396 294.580811 412.127991 297 432 297 curveto -451.872009 297 468 294.580811 468 291.600006 curveto -closepath -end -clip -newpath -0 nxsetgray -1 setlinewidth -gsave -newpath -systemdict -begin -396.5 243.5 467.5 296.5 setbbox -467.5 291.200012 moveto -0 -42.400002 rlineto -467.5 245.874405 451.596008 243.5 432 243.5 curveto -412.403992 243.5 396.5 245.874405 396.5 248.800003 curveto -0 42.400002 rlineto -396.5 294.12558 412.403992 296.5 432 296.5 curveto -451.596008 296.5 467.5 294.12558 467.5 291.199982 curveto -closepath -end -stroke -grestore -gsave -newpath -systemdict -begin -396.5 243.5 467.5 296.5 setbbox -467.5 248.800003 moveto -467.5 251.725601 451.596008 254.100006 432 254.100006 curveto -412.403992 254.100006 396.5 251.725601 396.5 248.800003 curveto -end -stroke -grestore -grestore -gsave -8 execuserobject setfont -0 nxsetgray -8 execuserobject setfont -0 nxsetgray -411 266 moveto (Routing) show -416 281 moveto (Table) show -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -304.304871 227.434952 388.695129 255.565048 setbbox -304.304871 227.434952 moveto -388.695129 255.565048 lineto -end -stroke -grestore -0 setlinejoin -gsave -[-0.948683 -0.316228 0.316228 -0.948683 507.607697 532.373413] concat -gsave -newpath -systemdict -begin -287.799988 220.5 297 229.5 setbbox -297 225 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -gsave -[0.948683 0.316228 -0.316228 0.948683 101.908165 -111.986488] concat -gsave -newpath -systemdict -begin -386.799988 253.5 396 262.5 setbbox -396 258 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -242.999969 72 243.000031 172.300003 setbbox -243.000031 72 moveto -242.999969 172.300003 lineto -end -stroke -grestore -0 setlinejoin -gsave -[0 1 -1 0 422.999969 -62.999969] concat -gsave -newpath -systemdict -begin -233.799973 175.5 242.999969 184.5 setbbox -242.999969 180 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -0 nxsetgray -1 setlinewidth -2 setlinejoin -gsave -newpath -systemdict -begin -108 207 181.300003 414 setbbox -108.000031 414 moveto -108 207 lineto -181.300003 207 lineto -end -stroke -grestore -0 setlinejoin -gsave -[1 0 0 1 0 0] concat -gsave -newpath -systemdict -begin -179.800003 202.5 189 211.5 setbbox -189 207 moveto --9.2 4.5 rlineto -1.5 -4.5 rlineto --1.5 -4.5 rlineto -closepath -end -fill -grestore -grestore -grestore -%%Trailer -%%DocumentFonts: Helvetica diff --git a/doc/networking/networkflow.jpg b/doc/networking/networkflow.jpg deleted file mode 100644 index fc63ec69e0..0000000000 Binary files a/doc/networking/networkflow.jpg and /dev/null differ diff --git a/doc/networking/networkflow.png b/doc/networking/networkflow.png deleted file mode 100644 index fd8ce244fa..0000000000 Binary files a/doc/networking/networkflow.png and /dev/null differ diff --git a/doc/networking/networkflow.txt b/doc/networking/networkflow.txt deleted file mode 100644 index 86d8d720fb..0000000000 --- a/doc/networking/networkflow.txt +++ /dev/null @@ -1,2 +0,0 @@ -Figure: Network Task Structure and Data Flow - (Not available in ASCII version of this document.) diff --git a/doc/networking/networking.texi b/doc/networking/networking.texi deleted file mode 100644 index 84fd23506d..0000000000 --- a/doc/networking/networking.texi +++ /dev/null @@ -1,97 +0,0 @@ -\input texinfo @c -*-texinfo-*- -@c %**start of header -@setfilename networking.info -@setcontentsaftertitlepage -@syncodeindex vr fn -@synindex ky cp -@paragraphindent 0 -@c %**end of header - -@c -@c COPYRIGHT (c) 1989-2013. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - -@c -@c Master file for the network Supplement -@c - -@include version.texi -@include common/setup.texi -@include common/rtems.texi - -@ifset use-ascii -@dircategory RTEMS On-Line Manual -@direntry -* RTEMS Network Supplement: (networking). -@end direntry -@end ifset - -@c -@c Title Page Stuff -@c - -@c -@c I don't really like having a short title page. --joel -@c -@c @shorttitlepage RTEMS Network Supplement - -@setchapternewpage odd -@settitle RTEMS Network Supplement -@titlepage -@finalout - -@title RTEMS Network Supplement -@subtitle Edition @value{EDITION}, for RTEMS @value{VERSION} -@sp 1 -@subtitle @value{UPDATED} -@author On-Line Applications Research Corporation -@page -@include common/cpright.texi -@end titlepage - -@c This prevents a black box from being printed on "overflow" lines. -@c The alternative is to rework a sentence to avoid this problem. - -@contents - -@ifnottex -@node Top, Preface, (dir), (dir) -@top RTEMS TCP/IP Networking Supplement - -@menu -* Preface:: -* Network Task Structure and Data Flow:: -* Networking Driver:: -* Using Networking in an RTEMS Application:: -* Testing the Driver:: -* Network Servers:: -* DEC 21140 Driver:: -* Command and Variable Index:: -* Concept Index:: -@end menu -@end ifnottex - -@include preface.texi -@include networktasks.texi -@include driver.texi -@include networkapp.texi -@include testing.texi -@include servers.texi -@include decdriver.texi - -@node Command and Variable Index, Concept Index, List of Ethernet cards using the DEC chip, Top -@unnumbered Command and Variable Index - -There are currently no Command and Variable Index entries. - -@c @printindex fn - -@node Concept Index, , Command and Variable Index, Top -@unnumbered Concept Index - -There are currently no Concept Index entries. -@c @printindex cp - -@bye - diff --git a/doc/networking/networktasks.t b/doc/networking/networktasks.t deleted file mode 100644 index 4379646f63..0000000000 --- a/doc/networking/networktasks.t +++ /dev/null @@ -1,44 +0,0 @@ -@c -@c Written by Eric Norum -@c -@c COPYRIGHT (c) 1988-2002. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - -@chapter Network Task Structure and Data Flow - -A schematic diagram of the tasks and message @b{mbuf} queues in a -simple RTEMS networking application is shown in the following -figure: - -@ifclear use-html -@image{networkflow,5in,6in,"Network Task Structure and Data Flow"} -@end ifclear - -@ifset use-html -@html -Network Task Structure and Data Flow -@end html -@end ifset - - -The transmit task for each network interface is normally blocked waiting -for a packet to arrive in the transmit queue. Once a packet arrives, the -transmit task may block waiting for an event from the transmit interrupt -handler. The transmit interrupt handler sends an RTEMS event to the transmit -task to indicate that transmit hardware resources have become available. - -The receive task for each network interface is normally blocked waiting -for an event from the receive interrupt handler. When this event is received -the receive task reads the packet and forwards it to the network stack -for subsequent processing by the network task. - -The network task processes incoming packets and takes care of -timed operations such as handling TCP timeouts and -aging and removing routing table entries. - -The `Network code' contains routines which may run in the context of -the user application tasks, the interface receive task or the network task. -A network semaphore ensures that -the data structures manipulated by the network code remain consistent. diff --git a/doc/networking/preface.texi b/doc/networking/preface.texi deleted file mode 100644 index 87bf32df0b..0000000000 --- a/doc/networking/preface.texi +++ /dev/null @@ -1,53 +0,0 @@ -@c -@c COPYRIGHT (c) 1989-2011. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - -@node Preface, Network Task Structure and Data Flow, Top, Top -@unnumbered Preface - -This document describes the RTEMS specific parts of the FreeBSD TCP/IP -stack. Much of this documentation was written by Eric Norum -(@email{eric@@skatter.usask.ca}) -of the Saskatchewan Accelerator Laboratory -who also ported the FreeBSD TCP/IP stack to RTEMS. - -The following is a list of resources which should be useful in trying -to understand Ethernet: - -@itemize @bullet - -@item @cite{Charles Spurgeon's Ethernet Web Site} - -"This site provides extensive information about Ethernet -(IEEE 802.3) local area network (LAN) technology. Including -the original 10 Megabit per second (Mbps) system, the 100 Mbps -Fast Ethernet system (802.3u), and the Gigabit Ethernet system (802.3z)." -The URL is: -@ifset use-html -(@uref{http://www.ethermanage.com/ethernet/ethernet.html,http://www.ethermanage.com/ethernet/ethernet.html}) -@end ifset -@ifclear use-html -(http://www.ethermanage.com/ethernet/ethernet.html) -@end ifclear - -@item @cite{TCP/IP Illustrated, Volume 1 : The Protocols} by -by W. Richard Stevens (ISBN: 0201633469) - -This book provides detailed introduction to TCP/IP and includes diagnostic -programs which are publicly available. - -@item @cite{TCP/IP Illustrated, Volume 2 : The Implementation} by W. Richard -Stevens and Gary Wright (ISBN: 020163354X) - -This book focuses on implementation issues regarding TCP/IP. The -treat for RTEMS users is that the implementation covered is the BSD -stack with most of the source code described in detail. - -@item @cite{UNIX Network Programming, Volume 1 : 2nd Edition} by W. Richard -Stevens (ISBN: 0-13-490012-X) - -This book describes how to write basic TCP/IP applications, again with primary -focus on the BSD stack. - -@end itemize diff --git a/doc/networking/recvbd.eps b/doc/networking/recvbd.eps deleted file mode 100644 index 2719ed231a..0000000000 --- a/doc/networking/recvbd.eps +++ /dev/null @@ -1,181 +0,0 @@ -%!PS-Adobe-2.0 EPSF-2.0 -%%Title: recvbd.eps -%%Creator: fig2dev Version 3.2 Patchlevel 1 -%%CreationDate: Mon Feb 8 14:02:16 1999 -%%For: raguet@genesis (Emmanuel Raguet) -%%Orientation: Portrait -%%BoundingBox: 0 0 252 173 -%%Pages: 0 -%%BeginSetup -%%EndSetup -%%Magnification: 1.0000 -%%EndComments -/$F2psDict 200 dict def -$F2psDict begin -$F2psDict /mtrx matrix put -/col-1 {0 setgray} bind def -/col0 {0.000 0.000 0.000 srgb} bind def -/col1 {0.000 0.000 1.000 srgb} bind def -/col2 {0.000 1.000 0.000 srgb} bind def -/col3 {0.000 1.000 1.000 srgb} bind def -/col4 {1.000 0.000 0.000 srgb} bind def -/col5 {1.000 0.000 1.000 srgb} bind def -/col6 {1.000 1.000 0.000 srgb} bind def -/col7 {1.000 1.000 1.000 srgb} bind def -/col8 {0.000 0.000 0.560 srgb} bind def -/col9 {0.000 0.000 0.690 srgb} bind def -/col10 {0.000 0.000 0.820 srgb} bind def -/col11 {0.530 0.810 1.000 srgb} bind def -/col12 {0.000 0.560 0.000 srgb} bind def -/col13 {0.000 0.690 0.000 srgb} bind def -/col14 {0.000 0.820 0.000 srgb} bind def -/col15 {0.000 0.560 0.560 srgb} bind def -/col16 {0.000 0.690 0.690 srgb} bind def -/col17 {0.000 0.820 0.820 srgb} bind def -/col18 {0.560 0.000 0.000 srgb} bind def -/col19 {0.690 0.000 0.000 srgb} bind def -/col20 {0.820 0.000 0.000 srgb} bind def -/col21 {0.560 0.000 0.560 srgb} bind def -/col22 {0.690 0.000 0.690 srgb} bind def -/col23 {0.820 0.000 0.820 srgb} bind def -/col24 {0.500 0.190 0.000 srgb} bind def -/col25 {0.630 0.250 0.000 srgb} bind def -/col26 {0.750 0.380 0.000 srgb} bind def -/col27 {1.000 0.500 0.500 srgb} bind def -/col28 {1.000 0.630 0.630 srgb} bind def -/col29 {1.000 0.750 0.750 srgb} bind def -/col30 {1.000 0.880 0.880 srgb} bind def -/col31 {1.000 0.840 0.000 srgb} bind def - -end -save --186.0 268.0 translate -1 -1 scale - -/cp {closepath} bind def -/ef {eofill} bind def -/gr {grestore} bind def -/gs {gsave} bind def -/sa {save} bind def -/rs {restore} bind def -/l {lineto} bind def -/m {moveto} bind def -/rm {rmoveto} bind def -/n {newpath} bind def -/s {stroke} bind def -/sh {show} bind def -/slc {setlinecap} bind def -/slj {setlinejoin} bind def -/slw {setlinewidth} bind def -/srgb {setrgbcolor} bind def -/rot {rotate} bind def -/sc {scale} bind def -/sd {setdash} bind def -/ff {findfont} bind def -/sf {setfont} bind def -/scf {scalefont} bind def -/sw {stringwidth} bind def -/tr {translate} bind def -/tnt {dup dup currentrgbcolor - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add - 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb} - bind def -/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul - 4 -2 roll mul srgb} bind def -/reencdict 12 dict def /ReEncode { reencdict begin -/newcodesandnames exch def /newfontname exch def /basefontname exch def -/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def -basefontdict { exch dup /FID ne { dup /Encoding eq -{ exch dup length array copy newfont 3 1 roll put } -{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall -newfont /FontName newfontname put newcodesandnames aload pop -128 1 255 { newfont /Encoding get exch /.notdef put } for -newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat -newfontname newfont definefont pop end } def -/isovec [ -8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde -8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis -8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron -8#220 /dotlessi 8#230 /oe 8#231 /OE -8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling -8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis -8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot -8#255 /endash 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus -8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph -8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine -8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf -8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute -8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring -8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute -8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute -8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve -8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply -8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex -8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave -8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring -8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute -8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute -8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve -8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide -8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex -8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def -/Times-Roman /Times-Roman-iso isovec ReEncode -/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def -/$F2psEnd {$F2psEnteredState restore end} def -%%EndProlog - -$F2psBegin -10 setmiterlimit -n -1000 5242 m -1000 -1000 l 7942 -1000 l 7942 5242 l cp clip - 0.06299 0.06299 sc -% Polyline -7.500 slw -n 2970 1530 m 6930 1530 l 6930 2205 l 2970 2205 l cp gs col0 s gr -% Polyline -n 2970 2205 m 6930 2205 l 6930 2880 l 2970 2880 l cp gs col0 s gr -% Polyline -n 2970 2880 m 6930 2880 l 6930 3555 l 2970 3555 l cp gs col0 s gr -% Polyline -n 2970 3555 m 6930 3555 l 6930 4230 l 2970 4230 l cp gs col0 s gr -% Polyline -n 3285 1530 m 3285 2205 l gs col0 s gr -% Polyline -n 4230 2205 m 4230 2880 l gs col0 s gr -% Polyline -n 5535 2205 m 5535 2880 l gs col0 s gr -/Times-Roman-iso ff 270.00 scf sf -3960 3375 m -gs 1 -1 sc (Buffer address 1) col0 sh gr -/Times-Roman-iso ff 270.00 scf sf -3960 4005 m -gs 1 -1 sc (Buffer address 2) col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -3105 2610 m -gs 1 -1 sc (Control bits) col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -4860 2475 m -gs 1 -1 sc (Byte-Count) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -4860 2730 m -gs 1 -1 sc (Buffer 2) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -6210 2520 m -gs 1 -1 sc (Byte-Count) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -6210 2775 m -gs 1 -1 sc (Buffer 1) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -3150 1755 m -gs 1 -1 sc (O) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -3150 2160 m -gs 1 -1 sc (N) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 210.00 scf sf -3150 1980 m -gs 1 -1 sc (W) dup sw pop 2 div neg 0 rm col0 sh gr -/Times-Roman-iso ff 270.00 scf sf -4590 1935 m -gs 1 -1 sc (Status) col0 sh gr -$F2psEnd -rs diff --git a/doc/networking/recvbd.jpg b/doc/networking/recvbd.jpg deleted file mode 100644 index b15b21b325..0000000000 Binary files a/doc/networking/recvbd.jpg and /dev/null differ diff --git a/doc/networking/recvbd.txt b/doc/networking/recvbd.txt deleted file mode 100644 index ca60e7e826..0000000000 --- a/doc/networking/recvbd.txt +++ /dev/null @@ -1,2 +0,0 @@ -Figure: Buffer Descriptor - (Not available in ASCII version of this document.) diff --git a/doc/networking/servers.t b/doc/networking/servers.t deleted file mode 100644 index 58e8019280..0000000000 --- a/doc/networking/servers.t +++ /dev/null @@ -1,115 +0,0 @@ -@c -@c Text Written by Jake Janovetz -@c -@c COPYRIGHT (c) 1988-2002. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - - -@chapter Network Servers - -@section RTEMS FTP Daemon - -The RTEMS FTPD is a complete file transfer protocol (FTP) daemon -which can store, retrieve, and manipulate files on the local -filesystem. In addition, the RTEMS FTPD provides ``hooks'' -which are actions performed on received data. Hooks are useful -in situations where a destination file is not necessarily -appropriate or in cases when a formal device driver has not yet -been implemented. - -This server was implemented and documented by Jake Janovetz -(janovetz@@tempest.ece.uiuc.edu). - -@subsection Configuration Parameters - -The configuration structure for FTPD is as follows: - -@example -struct rtems_ftpd_configuration -@{ - rtems_task_priority priority; /* FTPD task priority */ - unsigned long max_hook_filesize; /* Maximum buffersize */ - /* for hooks */ - int port; /* Well-known port */ - struct rtems_ftpd_hook *hooks; /* List of hooks */ -@}; -@end example - -The FTPD task priority is specified with @code{priority}. Because -hooks are not saved as files, the received data is placed in an -allocated buffer. @code{max_hook_filesize} specifies the maximum -size of this buffer. Finally, @code{hooks} is a pointer to the -configured hooks structure. - -@subsection Initializing FTPD (Starting the daemon) - -Starting FTPD is done with a call to @code{rtems_initialize_ftpd()}. -The configuration structure must be provided in the application -source code. Example hooks structure and configuration structure -folllow. - -@example -struct rtems_ftpd_hook ftp_hooks[] = - @{ - @{"untar", Untar_FromMemory@}, - @{NULL, NULL@} - @}; - -struct rtems_ftpd_configuration rtems_ftpd_configuration = - @{ - 40, /* FTPD task priority */ - 512*1024, /* Maximum hook 'file' size */ - 0, /* Use default port */ - ftp_hooks /* Local ftp hooks */ - @}; -@end example - -Specifying 0 for the well-known port causes FTPD to use the -UNIX standard FTPD port (21). - -@subsection Using Hooks - -In the example above, one hook was installed. The hook causes -FTPD to call the function @code{Untar_FromMemory} when the -user sends data to the file @code{untar}. The prototype for -the @code{untar} hook (and hooks, in general) is: - -@example - int Untar_FromMemory(unsigned char *tar_buf, unsigned long size); -@end example - -An example FTP transcript which exercises this hook is: - -@example -220 RTEMS FTP server (Version 1.0-JWJ) ready. -Name (dcomm0:janovetz): John Galt -230 User logged in. -Remote system type is RTEMS. -ftp> bin -200 Type set to I. -ftp> dir -200 PORT command successful. -150 ASCII data connection for LIST. -drwxrwx--x 0 0 268 dev -drwxrwx--x 0 0 0 TFTP -226 Transfer complete. -ftp> put html.tar untar -local: html.tar remote: untar -200 PORT command successful. -150 BINARY data connection. -210 File transferred successfully. -471040 bytes sent in 0.48 secs (9.6e+02 Kbytes/sec) -ftp> dir -200 PORT command successful. -150 ASCII data connection for LIST. -drwxrwx--x 0 0 268 dev -drwxrwx--x 0 0 0 TFTP -drwxrwx--x 0 0 3484 public_html -226 Transfer complete. -ftp> quit -221 Goodbye. -@end example - - - diff --git a/doc/networking/stamp-vti b/doc/networking/stamp-vti deleted file mode 100644 index 5634951ec8..0000000000 --- a/doc/networking/stamp-vti +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 24 February 2013 -@set UPDATED-MONTH February 2013 -@set EDITION 4.10.99.0 -@set VERSION 4.10.99.0 diff --git a/doc/networking/testing.t b/doc/networking/testing.t deleted file mode 100644 index f455709a47..0000000000 --- a/doc/networking/testing.t +++ /dev/null @@ -1,365 +0,0 @@ -@c -@c Written by Eric Norum -@c -@c COPYRIGHT (c) 1988-2002. -@c On-Line Applications Research Corporation (OAR). -@c All rights reserved. - - -@chapter Testing the Driver - -@section Preliminary Setup - -The network used to test the driver should include at least: - -@itemize @bullet - -@item The hardware on which the driver is to run. -It makes testing much easier if you can run a debugger to control -the operation of the target machine. - -@item An Ethernet network analyzer or a workstation with an -`Ethernet snoop' program such as @code{ethersnoop} or -@code{tcpdump}. - -@item A workstation. - -@end itemize - -During early debug, you should consider putting the target, workstation, -and snooper on a small network by themselves. This offers a few -advantages: - -@itemize @bullet - -@item There is less traffic to look at on the snooper and for the target -to process while bringing the driver up. - -@item Any serious errors will impact only your small network not a building -or campus network. You want to avoid causing any unnecessary problems. - -@item Test traffic is easier to repeatably generate. - -@item Performance measurements are not impacted by other systems on -the network. - -@end itemize - -@section Debug Output - -There are a number of sources of debug output that can be enabled -to aid in tracing the behavior of the network stack. The following -is a list of them: - -@itemize @bullet - -@item mbuf activity - -There are commented out calls to @code{printf} in the file -@code{sys/mbuf.h} in the network stack code. Uncommenting -these lines results in output when mbuf's are allocated -and freed. This is very useful for finding memory leaks. - -@item TX and RX queuing - -There are commented out calls to @code{printf} in the file -@code{net/if.h} in the network stack code. Uncommenting -these lines results in output when packets are placed -on or removed from one of the transmit or receive packet -queues. These queues can be viewed as the boundary line -between a device driver and the network stack. If the -network stack is enqueuing packets to be transmitted that -the device driver is not dequeuing, then that is indicative -of a problem in the transmit side of the device driver. -Conversely, if the device driver is enqueueing packets -as it receives them (via a call to @code{ether_input}) and -they are not being dequeued by the network stack, -then there is a problem. This situation would likely indicate -that the network server task is not running. - -@item TCP state transitions - -In the unlikely event that one would actually want to see -TCP state transitions, the @code{TCPDEBUG} macro can be defined -in the file @code{opt_tcpdebug.h}. This results in the routine -@code{tcp_trace()} being called by the network stack and -the state transitions logged into the @code{tcp_debug} data -structure. If the variable @code{tcpconsdebug} in the file -@code{netinet/tcp_debug.c} is set to 1, then the state transitions -will also be printed to the console. - -@end itemize - -@section Monitor Commands - -There are a number of command available in the shell / monitor -to aid in tracing the behavior of the network stack. The following -is a list of them: - -@itemize @bullet - -@item @code{inet} - -This command shows the current routing information for the TCP/IP stack. Following is an -example showing the output of this command. - -@example -Destination Gateway/Mask/Hw Flags Refs Use Expire Interface -10.0.0.0 255.0.0.0 U 0 0 17 smc1 -127.0.0.1 127.0.0.1 UH 0 0 0 lo0 -@end example - -In this example, there is only one network interface with an IP address of 10.8.1.1. This -link is currently not up. - -Two routes that are shown are the default routes for the Ethernet interface (10.0.0.0) and the -loopback interface (127.0.0.1). - -Since the stack comes from BSD, this command is very similar to the netstat command. For more -details on the network routing please look the following -URL: (@url{http://www.freebsd.org/doc/en_US.ISO8859-1/books/handbook/network-routing.html}) - -For a quick reference to the flags, see the table below: - -@table @samp -@item U -Up: The route is active. -@item H -Host: The route destination is a single host. -@item G -Gateway: Send anything for this destination on to this remote system, which -will figure out from there where to send it. -@item S -Static: This route was configured manually, not automatically generated by the -system. -@item C -Clone: Generates a new route based upon this route for machines we connect -to. This type of route is normally used for local networks. -@item W -WasCloned: Indicated a route that was auto-configured based upon a local area -network (Clone) route. -@item L -Link: Route involves references to Ethernet hardware. -@end table - -@item @code{mbuf} - -This command shows the current MBUF statistics. An example of the command is shown below: - -@example -************ MBUF STATISTICS ************ -mbufs:4096 clusters: 256 free: 241 -drops: 0 waits: 0 drains: 0 - free:4080 data:16 header:0 socket:0 - pcb:0 rtable:0 htable:0 atable:0 - soname:0 soopts:0 ftable:0 rights:0 - ifaddr:0 control:0 oobdata:0 -@end example - -@item @code{if} - -This command shows the current statistics for your Ethernet driver as long as the ioctl hook -@code{SIO_RTEMS_SHOW_STATS} has been implemented. Below is an example: - -@example -************ INTERFACE STATISTICS ************ -***** smc1 ***** -Ethernet Address: 00:12:76:43:34:25 -Address:10.8.1.1 Broadcast Address:10.255.255.255 Net mask:255.0.0.0 -Flags: Up Broadcast Running Simplex -Send queue limit:50 length:0 Dropped:0 -SMC91C111 RTEMS driver A0.01 11/03/2002 Ian Caddy (ianc@@microsol.iinet.net.au) - Rx Interrupts:0 Not First:0 Not Last:0 - Giant:0 Runt:0 Non-octet:0 - Bad CRC:0 Overrun:0 Collision:0 - Tx Interrupts:2 Deferred:0 Missed Hearbeat:0 - No Carrier:0 Retransmit Limit:0 Late Collision:0 - Underrun:0 Raw output wait:0 Coalesced:0 - Coalesce failed:0 Retries:0 -***** lo0 ***** -Address:127.0.0.1 Net mask:255.0.0.0 -Flags: Up Loopback Running Multicast -Send queue limit:50 length:0 Dropped:0 -@end example - -@item @code{ip} - -This command show the IP statistics for the currently configured interfaces. - -@item @code{icmp} - -This command show the ICMP statistics for the currently configured interfaces. - -@item @code{tcp} - -This command show the TCP statistics for the currently configured interfaces. - -@item @code{udp} - -This command show the UDP statistics for the currently configured interfaces. - -@end itemize - - -@section Driver basic operation - -The network demonstration program @code{netdemo} may be used for these tests. - -@itemize @bullet - -@item Edit @code{networkconfig.h} to reflect the values for your network. - -@item Start with @code{RTEMS_USE_BOOTP} not defined. - -@item Edit @code{networkconfig.h} to configure the driver -with an -explicit Ethernet and Internet address and with reception of -broadcast packets disabled: - -Verify that the program continues to run once the driver has been attached. - -@item Issue a @samp{u} command to send UDP -packets to the `discard' port. -Verify that the packets appear on the network. - -@item Issue a @samp{s} command to print the network and driver statistics. - -@item On a workstation, add a static route to the target system. - -@item On that same workstation try to `ping' the target system. -Verify that the ICMP echo request and reply packets appear on the net. - -@item Remove the static route to the target system. -Modify @code{networkconfig.h} to attach the driver -with reception of broadcast packets enabled. -Try to `ping' the target system again. -Verify that ARP request/reply and ICMP echo request/reply packets appear -on the net. - -@item Issue a @samp{t} command to send TCP -packets to the `discard' port. -Verify that the packets appear on the network. - -@item Issue a @samp{s} command to print the network and driver statistics. - -@item Verify that you can telnet to ports 24742 -and 24743 on the target system from one or more -workstations on your network. - -@end itemize - -@section BOOTP/DHCP operation - -Set up a BOOTP/DHCP server on the network. -Set define @code{RTEMS USE_BOOT} in @code{networkconfig.h}. -Run the @code{netdemo} test program. -Verify that the target system configures itself from the BOOTP/DHCP server and -that all the above tests succeed. - -@section Stress Tests - -Once the driver passes the tests described in the previous section it should -be subjected to conditions which exercise it more -thoroughly and which test its error handling routines. - -@subsection Giant packets - -@itemize @bullet -@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} set to -a smaller value, say 514. - -@item `Ping' the driver from another workstation and verify -that frames larger than 514 bytes are correctly rejected. - -@item Recompile the driver with @code{MAXIMUM_FRAME_SIZE} restored to 1518. -@end itemize - -@subsection Resource Exhaustion - -@itemize @bullet -@item Edit @code{networkconfig.h} -so that the driver is configured with just two receive and transmit descriptors. - -@item Compile and run the @code{netdemo} program. - -@item Verify that the program operates properly and that you can -still telnet to both the ports. - -@item Display the driver statistics (Console `@code{s}' command or telnet -`control-G' character) and verify that: - -@enumerate - -@item The number of transmit interrupts is non-zero. -This indicates that all transmit descriptors have been in use at some time. - -@item The number of missed packets is non-zero. -This indicates that all receive descriptors have been in use at some time. - -@end enumerate - -@end itemize - -@subsection Cable Faults - -@itemize @bullet -@item Run the @code{netdemo} program. - -@item Issue a `@code{u}' console command to make the target machine transmit -a bunch of UDP packets. - -@item While the packets are being transmitted, disconnect and reconnect the -network cable. - -@item Display the network statistics and verify that the driver has -detected the loss of carrier. - -@item Verify that you can still telnet to both ports on the target machine. - -@end itemize - -@subsection Throughput - -Run the @code{ttcp} network benchmark program. -Transfer large amounts of data (100's of megabytes) to and from the target -system. - -The procedure for testing throughput from a host to an RTEMS target -is as follows: - -@enumerate -@item Download and start the ttcp program on the Target. - -@item In response to the @code{ttcp} prompt, enter @code{-s -r}. The -meaning of these flags is described in the @code{ttcp.1} manual page -found in the @code{ttcp_orig} subdirectory. - -@item On the host run @code{ttcp -s -t <>} - -@end enumerate - - -The procedure for testing throughput from an RTEMS target -to a Host is as follows: - -@enumerate -@item On the host run @code{ttcp -s -r}. - -@item Download and start the ttcp program on the Target. - -@item In response to the @code{ttcp} prompt, enter @code{-s -t <>}. You need to type the -IP address of the host unless your Target is talking to your Domain Name -Server. - -@end enumerate - -To change the number of buffers, the buffer size, etc. you just add the -extra flags to the @code{-t} machine as specified in the @code{ttcp.1} -manual page found in the @code{ttcp_orig} subdirectory. - - - - - diff --git a/doc/networking/version.texi b/doc/networking/version.texi deleted file mode 100644 index c0e4bbb7b6..0000000000 --- a/doc/networking/version.texi +++ /dev/null @@ -1,4 +0,0 @@ -@set UPDATED 17 July 2015 -@set UPDATED-MONTH July 2015 -@set EDITION 4.10.99.0 -@set VERSION 4.10.99.0 -- cgit v1.2.3