summaryrefslogtreecommitdiffstats
path: root/doc/networking/networktasks.t
blob: b9760301e1895ff096287b6d8ba380148972a970 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
@c
@c  Written by Eric Norum
@c
@c  COPYRIGHT (c) 1988-1999.
@c  On-Line Applications Research Corporation (OAR).
@c  All rights reserved.
@c
@c  $Id$
@c

@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:

@ifset use-ascii
@example
@group
NO ASCII VERSION OF THE TASKING FIGURE IS AVAILABLE
@end group
@end example
@end ifset

@ifset use-tex
@c for now use the ascii version
@example
@group
@c why does this not work for pdf?
@c @image{networkflow,5in,6in}
NO TEX VERSION OF THE TASKING FIGURE IS AVAILABLE
@end group
@end example
@end ifset

@ifset use-html
@html
<IMG SRC="networkflow.jpg" ALIGN=CENTER 
     ALT="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.