Subversion Repositories HelenOS-doc

Compare Revisions

No changes between revisions

Ignore whitespace Rev 1 → Rev HEAD

/design/trunk/src/ch_memory_management.xml
0,0 → 1,838
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="mm">
<?dbhtml filename="mm.html"?>
 
<title>Memory management</title>
 
<para>In previous chapters, this book described the scheduling subsystem as
the creator of the impression that threads execute in parallel. The memory
management subsystem, on the other hand, creates the impression that there
is enough physical memory for the kernel and that userspace tasks have the
entire address space only for themselves.</para>
 
<section>
<title>Physical memory management</title>
 
<section id="zones_and_frames">
<title>Zones and frames</title>
 
<para>HelenOS represents continuous areas of physical memory in
structures called frame zones (abbreviated as zones). Each zone contains
information about the number of allocated and unallocated physical
memory frames as well as the physical base address of the zone and
number of frames contained in it. A zone also contains an array of frame
structures describing each frame of the zone and, in the last, but not
the least important, front, each zone is equipped with a buddy system
that faciliates effective allocation of power-of-two sized block of
frames.</para>
 
<para>This organization of physical memory provides good preconditions
for hot-plugging of more zones. There is also one currently unused zone
attribute: <code>flags</code>. The attribute could be used to give a
special meaning to some zones in the future.</para>
 
<para>The zones are linked in a doubly-linked list. This might seem a
bit ineffective because the zone list is walked everytime a frame is
allocated or deallocated. However, this does not represent a significant
performance problem as it is expected that the number of zones will be
rather low. Moreover, most architectures merge all zones into
one.</para>
 
<para>Every physical memory frame in a zone, is described by a structure
that contains number of references and other data used by buddy
system.</para>
</section>
 
<section id="frame_allocator">
<indexterm>
<primary>frame allocator</primary>
</indexterm>
 
<title>Frame allocator</title>
 
<para>The frame allocator satisfies kernel requests to allocate
power-of-two sized blocks of physical memory. Because of zonal
organization of physical memory, the frame allocator is always working
within a context of a particular frame zone. In order to carry out the
allocation requests, the frame allocator is tightly integrated with the
buddy system belonging to the zone. The frame allocator is also
responsible for updating information about the number of free and busy
frames in the zone. <figure float="1">
<mediaobject id="frame_alloc">
<imageobject role="pdf">
<imagedata fileref="images/frame_alloc.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/frame_alloc.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/frame_alloc.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Frame allocator scheme.</title>
</figure></para>
 
<formalpara>
<title>Allocation / deallocation</title>
 
<para>Upon allocation request via function <code>frame_alloc()</code>,
the frame allocator first tries to find a zone that can satisfy the
request (i.e. has the required amount of free frames). Once a suitable
zone is found, the frame allocator uses the buddy allocator on the
zone's buddy system to perform the allocation. If no free zone is
found, the frame allocator tries to reclaim slab memory.</para>
 
<para>During deallocation, which is triggered by a call to
<code>frame_free()</code>, the frame allocator looks up the respective
zone that contains the frame being deallocated. Afterwards, it calls
the buddy allocator again, this time to take care of deallocation
within the zone's buddy system.</para>
</formalpara>
</section>
 
<section id="buddy_allocator">
<indexterm>
<primary>buddy system</primary>
</indexterm>
 
<title>Buddy allocator</title>
 
<para>In the buddy system, the memory is broken down into power-of-two
sized naturally aligned blocks. These blocks are organized in an array
of lists, in which the list with index <emphasis>i</emphasis> contains
all unallocated blocks of size
<emphasis>2<superscript>i</superscript></emphasis>. The index
<emphasis>i</emphasis> is called the order of block. Should there be two
adjacent equally sized blocks in the list <emphasis>i</emphasis> (i.e.
buddies), the buddy allocator would coalesce them and put the resulting
block in list <emphasis>i + 1</emphasis>, provided that the resulting
block would be naturally aligned. Similarily, when the allocator is
asked to allocate a block of size
<emphasis>2<superscript>i</superscript></emphasis>, it first tries to
satisfy the request from the list with index <emphasis>i</emphasis>. If
the request cannot be satisfied (i.e. the list <emphasis>i</emphasis> is
empty), the buddy allocator will try to allocate and split a larger
block from the list with index <emphasis>i + 1</emphasis>. Both of these
algorithms are recursive. The recursion ends either when there are no
blocks to coalesce in the former case or when there are no blocks that
can be split in the latter case.</para>
 
<para>This approach greatly reduces external fragmentation of memory and
helps in allocating bigger continuous blocks of memory aligned to their
size. On the other hand, the buddy allocator suffers increased internal
fragmentation of memory and is not suitable for general kernel
allocations. This purpose is better addressed by the <link
linkend="slab">slab allocator</link>.<figure float="1">
<mediaobject id="buddy_alloc">
<imageobject role="pdf">
<imagedata fileref="images/buddy_alloc.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/buddy_alloc.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/buddy_alloc.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Buddy system scheme.</title>
</figure></para>
 
<section>
<title>Implementation</title>
 
<para>The buddy allocator is, in fact, an abstract framework which can
be easily specialized to serve one particular task. It knows nothing
about the nature of memory it helps to allocate. In order to beat the
lack of this knowledge, the buddy allocator exports an interface that
each of its clients is required to implement. When supplied with an
implementation of this interface, the buddy allocator can use
specialized external functions to find a buddy for a block, split and
coalesce blocks, manipulate block order and mark blocks busy or
available.</para>
 
<formalpara>
<title>Data organization</title>
 
<para>Each entity allocable by the buddy allocator is required to
contain space for storing block order number and a link variable
used to interconnect blocks within the same order.</para>
 
<para>Whatever entities are allocated by the buddy allocator, the
first entity within a block is used to represent the entire block.
The first entity keeps the order of the whole block. Other entities
within the block are assigned the magic value
<constant>BUDDY_SYSTEM_INNER_BLOCK</constant>. This is especially important
for effective identification of buddies in a one-dimensional array
because the entity that represents a potential buddy cannot be
associated with <constant>BUDDY_SYSTEM_INNER_BLOCK</constant> (i.e. if it
is associated with <constant>BUDDY_SYSTEM_INNER_BLOCK</constant> then it is
not a buddy).</para>
</formalpara>
</section>
</section>
 
<section id="slab">
<indexterm>
<primary>slab allocator</primary>
</indexterm>
 
<title>Slab allocator</title>
 
<para>The majority of memory allocation requests in the kernel is for
small, frequently used data structures. The basic idea behind the slab
allocator is that commonly used objects are preallocated in continuous
areas of physical memory called slabs<footnote>
<para>Slabs are in fact blocks of physical memory frames allocated
from the frame allocator.</para>
</footnote>. Whenever an object is to be allocated, the slab allocator
returns the first available item from a suitable slab corresponding to
the object type<footnote>
<para>The mechanism is rather more complicated, see the next
paragraph.</para>
</footnote>. Due to the fact that the sizes of the requested and
allocated object match, the slab allocator significantly reduces
internal fragmentation.</para>
 
<indexterm>
<primary>slab allocator</primary>
 
<secondary>- slab cache</secondary>
</indexterm>
 
<para>Slabs of one object type are organized in a structure called slab
cache. There are usually more slabs in the slab cache, depending on
previous allocations. If the the slab cache runs out of available slabs,
new slabs are allocated. In order to exploit parallelism and to avoid
locking of shared spinlocks, slab caches can have variants of
processor-private slabs called magazines. On each processor, there is a
two-magazine cache. Full magazines that are not part of any
per-processor magazine cache are stored in a global list of full
magazines.</para>
 
<indexterm>
<primary>slab allocator</primary>
 
<secondary>- magazine</secondary>
</indexterm>
 
<para>Each object begins its life in a slab. When it is allocated from
there, the slab allocator calls a constructor that is registered in the
respective slab cache. The constructor initializes and brings the object
into a known state. The object is then used by the user. When the user
later frees the object, the slab allocator puts it into a processor
private <indexterm>
<primary>slab allocator</primary>
 
<secondary>- magazine</secondary>
</indexterm>magazine cache, from where it can be precedently allocated
again. Note that allocations satisfied from a magazine are already
initialized by the constructor. When both of the processor cached
magazines get full, the allocator will move one of the magazines to the
list of full magazines. Similarily, when allocating from an empty
processor magazine cache, the kernel will reload only one magazine from
the list of full magazines. In other words, the slab allocator tries to
keep the processor magazine cache only half-full in order to prevent
thrashing when allocations and deallocations interleave on magazine
boundaries. The advantage of this setup is that during most of the
allocations, no global spinlock needs to be held.</para>
 
<para>Should HelenOS run short of memory, it would start deallocating
objects from magazines, calling slab cache destructor on them and
putting them back into slabs. When a slab contains no allocated object,
it is immediately freed.</para>
 
<para>
<figure float="1">
<mediaobject id="slab_alloc">
<imageobject role="pdf">
<imagedata fileref="images/slab_alloc.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/slab_alloc.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/slab_alloc.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Slab allocator scheme.</title>
</figure>
</para>
 
<section>
<title>Implementation</title>
 
<para>The slab allocator is closely modelled after <xref
linkend="Bonwick01" /> with the following exceptions:<itemizedlist>
<listitem>
<para>empty slabs are immediately deallocated and</para>
</listitem>
 
<listitem>
<para>empty magazines are deallocated when not needed.</para>
</listitem>
</itemizedlist>The following features are not currently supported
but would be easy to do: <itemizedlist>
<listitem>cache coloring and</listitem>
 
<listitem>dynamic magazine grow (different magazine sizes are
already supported, but the allocation strategy would need to be
adjusted).</listitem>
</itemizedlist></para>
 
<section>
<title>Allocation/deallocation</title>
 
<para>The following two paragraphs summarize and complete the
description of the slab allocator operation (i.e.
<code>slab_alloc()</code> and <code>slab_free()</code>
functions).</para>
 
<formalpara>
<title>Allocation</title>
 
<para><emphasis>Step 1.</emphasis> When an allocation request
comes, the slab allocator checks availability of memory in the
current magazine of the local processor magazine cache. If the
available memory is there, the allocator just pops the object from
magazine and returns it.</para>
 
<para><emphasis>Step 2.</emphasis> If the current magazine in the
processor magazine cache is empty, the allocator will attempt to
swap it with the last magazine from the cache and return to the
first step. If also the last magazine is empty, the algorithm will
fall through to Step 3.</para>
 
<para><emphasis>Step 3.</emphasis> Now the allocator is in the
situation when both magazines in the processor magazine cache are
empty. The allocator reloads one magazine from the shared list of
full magazines. If the reload is successful (i.e. there are full
magazines in the list), the algorithm continues with Step
1.</para>
 
<para><emphasis>Step 4.</emphasis> In this fail-safe step, an
object is allocated from the conventional slab layer and a pointer
to it is returned. If also the last magazine is full, a new slab
is allocated.</para>
</formalpara>
 
<formalpara>
<title>Deallocation</title>
 
<para><emphasis>Step 1.</emphasis> During a deallocation request,
the slab allocator checks if the current magazine of the local
processor magazine cache is not full. If it is, the pointer to the
objects is just pushed into the magazine and the algorithm
returns.</para>
 
<para><emphasis>Step 2.</emphasis> If the current magazine is
full, the allocator will attempt to swap it with the last magazine
from the cache and return to the first step. If also the last
magazine is empty, the algorithm will fall through to Step
3.</para>
 
<para><emphasis>Step 3.</emphasis> Now the allocator is in the
situation when both magazines in the processor magazine cache are
full. The allocator tries to allocate a new empty magazine and
flush one of the full magazines to the shared list of full
magazines. If it is successfull, the algoritm continues with Step
1.</para>
 
<para><emphasis>Step 4. </emphasis>In case of low memory condition
when the allocation of empty magazine fails, the object is moved
directly into slab. In the worst case object deallocation does not
need to allocate any additional memory.</para>
</formalpara>
</section>
</section>
</section>
</section>
 
<section>
<title>Virtual memory management</title>
 
<para>Virtual memory is essential for an operating system because it makes
several things possible. First, it helps to isolate tasks from each other
by encapsulating them in their private address spaces. Second, virtual
memory can give tasks the feeling of more memory available than is
actually possible. And third, by using virtual memory, there might be
multiple copies of the same program, linked to the same addresses, running
in the system. There are at least two known mechanisms for implementing
virtual memory: segmentation and paging. Even though some processor
architectures supported by HelenOS<footnote>
<para>ia32 has full-fledged segmentation.</para>
</footnote> provide both mechanisms, the kernel makes use solely of
paging.</para>
 
<section id="paging">
<title>VAT subsystem</title>
 
<para>In a paged virtual memory, the entire virtual address space is
divided into small power-of-two sized naturally aligned blocks called
pages. The processor implements a translation mechanism, that allows the
operating system to manage mappings between set of pages and set of
identically sized and identically aligned pieces of physical memory
called frames. In a result, references to continuous virtual memory
areas don't necessarily need to reference continuos area of physical
memory. Supported page sizes usually range from several kilobytes to
several megabytes. Each page that takes part in the mapping is
associated with certain attributes that further desribe the mapping
(e.g. access rights, dirty and accessed bits and present bit).</para>
 
<para>When the processor accesses a page that is not present (i.e. its
present bit is not set), the operating system is notified through a
special exception called page fault. It is then up to the operating
system to service the page fault. In HelenOS, some page faults are fatal
and result in either task termination or, in the worse case, kernel
panic<footnote>
<para>Such a condition would be either caused by a hardware failure
or a bug in the kernel.</para>
</footnote>, while other page faults are used to load memory on demand
or to notify the kernel about certain events.</para>
 
<indexterm>
<primary>page tables</primary>
</indexterm>
 
<para>The set of all page mappings is stored in a memory structure
called page tables. Some architectures have no hardware support for page
tables<footnote>
<para>On mips32, TLB-only model is used and the operating system is
responsible for managing software defined page tables.</para>
</footnote> while other processor architectures<footnote>
<para>Like amd64 and ia32.</para>
</footnote> understand the whole memory format thereof. Despite all
the possible differences in page table formats, the HelenOS VAT
subsystem<footnote>
<para>Virtual Address Translation subsystem.</para>
</footnote> unifies the page table operations under one programming
interface. For all parts of the kernel, three basic functions are
provided:</para>
 
<itemizedlist>
<listitem>
<para><code>page_mapping_insert()</code>,</para>
</listitem>
 
<listitem>
<para><code>page_mapping_find()</code> and</para>
</listitem>
 
<listitem>
<para><code>page_mapping_remove()</code>.</para>
</listitem>
</itemizedlist>
 
<para>The <code>page_mapping_insert()</code> function is used to
introduce a mapping for one virtual memory page belonging to a
particular address space into the page tables. Once the mapping is in
the page tables, it can be searched by <code>page_mapping_find()</code>
and removed by <code>page_mapping_remove()</code>. All of these
functions internally select the page table mechanism specific functions
that carry out the self operation.</para>
 
<para>There are currently two supported mechanisms: generic 4-level
hierarchical page tables and global page hash table. Both of the
mechanisms are generic as they cover several hardware platforms. For
instance, the 4-level hierarchical page table mechanism is used by
amd64, ia32, mips32 and ppc32, respectively. These architectures have
the following page table format: 4-level, 2-level, TLB-only and hardware
hash table, respectively. On the other hand, the global page hash table
is used on ia64 that can be TLB-only or use a hardware hash table.
Although only two mechanisms are currently implemented, other mechanisms
(e.g. B+tree) can be easily added.</para>
 
<section id="page_tables">
<indexterm>
<primary>page tables</primary>
 
<secondary>- hierarchical</secondary>
</indexterm>
 
<title>Hierarchical 4-level page tables</title>
 
<para>Hierarchical 4-level page tables are generalization of the
frequently used hierarchical model of page tables. In this mechanism,
each address space has its own page tables. To avoid confusion in
terminology used by hardware vendors, in HelenOS, the root level page
table is called PTL0, the two middle levels are called PTL1 and PTL2,
and, finally, the leaf level is called PTL3. All architectures using
this mechanism are required to use PTL0 and PTL3. However, the middle
levels can be left out, depending on the hardware hierarchy or
structure of software-only page tables. The genericity is achieved
through a set of macros that define transitions from one level to
another. Unused levels are optimised out by the compiler.
<figure float="1">
<mediaobject id="mm_pt">
<imageobject role="pdf">
<imagedata fileref="images/mm_pt.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/mm_pt.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/mm_pt.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Hierarchical 4-level page tables.</title>
</figure>
</para>
</section>
 
<section>
<indexterm>
<primary>page tables</primary>
 
<secondary>- hashing</secondary>
</indexterm>
 
<title>Global page hash table</title>
 
<para>Implementation of the global page hash table was encouraged by
64-bit architectures that can have rather sparse address spaces. The
hash table contains valid mappings only. Each entry of the hash table
contains an address space pointer, virtual memory page number (VPN),
physical memory frame number (PFN) and a set of flags. The pair of the
address space pointer and the virtual memory page number is used as a
key for the hash table. One of the major differences between the
global page hash table and hierarchical 4-level page tables is that
there is only a single global page hash table in the system while
hierarchical page tables exist per address space. Thus, the global
page hash table contains information about mappings of all address
spaces in the system.
<figure float="1">
<mediaobject id="mm_hash">
<imageobject role="pdf">
<imagedata fileref="images/mm_hash.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/mm_hash.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/mm_hash.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Global page hash table.</title>
</figure>
</para>
 
<para>The global page hash table mechanism uses the generic hash table
type as described in the chapter dedicated to <link
linkend="hashtables">data structures</link> earlier in this
book.</para>
</section>
</section>
</section>
 
<section id="tlb">
<indexterm>
<primary>TLB</primary>
</indexterm>
 
<title>Translation Lookaside buffer</title>
 
<para>Due to the extensive overhead of several extra memory accesses
during page table lookup that are necessary on every instruction, modern
architectures deploy fast assotiative cache of recelntly used page
mappings. This cache is called TLB - Translation Lookaside Buffer - and is
present on every processor in the system. As it has been already pointed
out, TLB is the only page translation mechanism for some
architectures.</para>
 
<section id="tlb_shootdown">
<indexterm>
<primary>TLB</primary>
 
<secondary>- TLB shootdown</secondary>
</indexterm>
 
<title>TLB consistency</title>
 
<para>The operating system is responsible for keeping TLB consistent
with the page tables. Whenever mappings are modified or purged from the
page tables, or when an address space identifier is reused, the kernel
needs to invalidate the respective contents of TLB. Some TLB types
support partial invalidation of their content (e.g. ranges of pages or
address spaces) while other types can be invalidated only entirely. The
invalidation must be done on all processors for there is one TLB per
processor. Maintaining TLB consistency on multiprocessor configurations
is not as trivial as it might look from the first glance.</para>
 
<para>The remote TLB invalidation is called TLB shootdown. HelenOS uses
a simplified variant of the algorithm described in <xref
linkend="Black89" />.</para>
 
<para>TLB shootdown is performed in three phases.</para>
 
<formalpara>
<title>Phase 1.</title>
 
<para>The initiator clears its TLB flag and locks the global TLB
spinlock. The request is then enqueued into all other processors' TLB
shootdown message queues. When the TLB shootdown message queue is full
on any processor, the queue is purged and a single request to
invalidate the entire TLB is stored there. Once all the TLB shootdown
messages were dispatched, the initiator sends all other processors an
interrupt to notify them about the incoming TLB shootdown message. It
then spins until all processors accept the interrupt and clear their
TLB flags.</para>
</formalpara>
 
<formalpara>
<title>Phase 2.</title>
 
<para>Except for the initiator, all other processors are spining on
the TLB spinlock. The initiator is now free to modify the page tables
and purge its own TLB. The initiator then unlocks the global TLB
spinlock and sets its TLB flag.</para>
</formalpara>
 
<formalpara>
<title>Phase 3.</title>
 
<para>When the spinlock is unlocked by the initiator, other processors
are sequentially granted the spinlock. However, once they manage to
lock it, they immediately release it. Each processor invalidates its
TLB according to messages found in its TLB shootdown message queue. In
the end, each processor sets its TLB flag and resumes its previous
operation.</para>
</formalpara>
</section>
</section>
 
<section>
<title>Address spaces</title>
 
<para>In HelenOS, address spaces are objects that encapsulate the
following items:</para>
 
<itemizedlist>
<listitem>
<para>address space identifier,</para>
</listitem>
 
<listitem>
<para>page table PTL0 pointer and</para>
</listitem>
 
<listitem>
<para>a set of mutually disjunctive address space areas.</para>
</listitem>
</itemizedlist>
 
<para>Address space identifiers will be discussed later in this section.
The address space contains a pointer to PTL0, provided that the
architecture uses per address space page tables such as the hierarchical
4-level page tables. The most interesting component is the B+tree of
address space areas belonging to the address space.</para>
 
<section>
<title>Address space areas</title>
 
<para>Because an address space can be composed of heterogenous mappings
such as userspace code, data, read-only data and kernel memory, it is
further broken down into smaller homogenous units called address space
areas. An address space area represents a continuous piece of userspace
virtual memory associated with common flags. Kernel memory mappings do
not take part in address space areas because they are hardwired either
into TLBs or page tables and are thus shared by all address spaces. The
flags are a combination of:</para>
 
<itemizedlist>
<listitem>
<para><constant>AS_AREA_READ</constant>,</para>
</listitem>
 
<listitem>
<para><constant>AS_AREA_WRITE</constant>,</para>
</listitem>
 
<listitem>
<para><constant>AS_AREA_EXEC</constant> and</para>
</listitem>
 
<listitem>
<para><constant>AS_AREA_CACHEABLE</constant>.</para>
</listitem>
</itemizedlist>
 
<para>The <constant>AS_AREA_READ</constant> flag is implicit and cannot
be removed. The <constant>AS_AREA_WRITE</constant> flag denotes a
writable address space area and the <constant>AS_AREA_EXEC</constant> is
used for areas containing code. The combination of
<constant>AS_AREA_WRITE</constant> and <constant>AS_AREA_EXEC</constant>
is not allowed. Some architectures don't differentiate between
executable and non-executable mappings. In that case, the
<constant>AS_AREA_EXEC</constant> has no effect on mappings created for
the address space area in the page tables. If the flags don't have
<constant>AS_AREA_CACHEABLE</constant> set, the page tables content of
the area is created with caching disabled. This is useful for address
space areas containing memory of some memory mapped device.</para>
 
<para>Address space areas can be backed by a backend that provides
virtual functions for servicing page faults that occur within the
address space area, releasing memory allocated by the area and sharing
the area. Currently, there are three backends supported by HelenOS:
anonymous memory backend, ELF image backend and physical memory
backend.</para>
 
<formalpara>
<title>Anonymous memory backend</title>
 
<para>Anonymous memory is memory that has no predefined contents such
as userspace stack or heap. Anonymous address space areas are backed
by memory allocated from the frame allocator. Areas backed by this
backend can be resized as long as they are not shared.</para>
</formalpara>
 
<formalpara>
<title>ELF image backend</title>
 
<para>Areas backed by the ELF backend are composed of memory that can
be either initialized, partially initialized or completely anonymous.
Initialized portions of ELF backend address space areas are those that
are entirely physically present in the executable image (e.g. code and
initialized data). Anonymous portions are those pages of the
<emphasis>bss</emphasis> section that exist entirely outside the
executable image. Lastly, pages that don't fit into the previous two
categories are partially initialized as they are both part of the
image and the <emphasis>bss</emphasis> section. The initialized
portion does not need any memory from the allocator unless it is
writable. In that case, pages are duplicated on demand during page
fault and memory for the copy is allocated from the frame allocator.
The remaining two parts of the ELF always require memory from the
frame allocator. Non-shared address space areas backed by the ELF
image backend can be resized.</para>
</formalpara>
 
<formalpara>
<title>Physical memory backend</title>
 
<para>Physical memory backend is used by the device drivers to access
physical memory. No additional memory needs to be allocated on a page
fault in this area and when sharing this area. Areas backed by this
backend cannot be resized.</para>
</formalpara>
 
<section>
<title>Memory sharing</title>
 
<para>Address space areas can be shared provided that their backend
supports sharing<footnote>
<para>Which is the case for all currently supported
backends.</para>
</footnote>. When the kernel calls <code>as_area_share()</code>, a
check is made to see whether the area is already being shared. If the
area is already shared, it contains a pointer to the share info
structure. The pointer is then simply copied into the new address
space area and a reference count in the share info structure is
incremented. Otherwise a new address space share info structure needs
to be created. The backend is then called to duplicate the mapping of
pages for which a frame is allocated. The duplicated mapping is stored
in the share info structure B+tree called <varname>pagemap</varname>.
Note that the reference count of the frames put into the
<varname>pagemap</varname> must be incremented in order to avoid a race condition.
If the originating address space area had been destroyed before the <varname>pagemap</varname>
information made it to the page tables of other address spaces that take part in
the sharing, the reference count of the respective frames
would have dropped to zero and some of them could have been allocated again.</para>
</section>
 
<section>
<title>Page faults</title>
 
<para>When a page fault is encountered in the address space area, the
address space page fault handler, <code>as_page_fault()</code>,
invokes the corresponding backend page fault handler to resolve the
situation. The backend might either confirm the page fault or perform
a remedy. In the non-shared case, depending on the backend, the page
fault can be remedied usually by allocating some memory on demand or
by looking up the frame for the faulting translation in the ELF
image.</para>
 
<para>Shared address space areas need to consider the
<varname>pagemap</varname> B+tree. First they need to make sure
whether the mapping is not present in the <varname>pagemap</varname>.
If it is there, then the frame reference count is increased and the
page fault is resolved. Otherwise the handler proceeds similarily to
the non-shared case. If it allocates a physical memory frame, it must
increment its reference count and add it to the
<varname>pagemap</varname>.</para>
</section>
</section>
 
<section>
<indexterm>
<primary>address space</primary>
 
<secondary>- ASID</secondary>
</indexterm>
 
<title>Address Space ID (ASID)</title>
 
<para>Modern processor architectures optimize TLB utilization by
associating TLB entries with address spaces through assigning
identification numbers to them. In HelenOS, the term ASID, originally
taken from the mips32 terminology, is used to refer to the address space
identification number. The advantage of having ASIDs is that TLB does
not have to be invalidated on thread context switch as long as ASIDs are
unique. Unfortunately, architectures supported by HelenOS use all
different widths of ASID numbers<footnote>
<para>amd64 and ia32 don't use similar abstraction at all, mips32
has 8-bit ASIDs and ia64 can have ASIDs between 18 to 24 bits
wide.</para>
</footnote> out of which none is sufficient. The amd64 and ia32
architectures cannot make use of ASIDs as their TLB doesn't recognize
such an abstraction. Other architectures have support for ASIDs, but for
instance ppc32 doesn't make use of them in the current version of
HelenOS. The rest of the architectures does use ASIDs. However, even on
the ia64 architecture, the minimal supported width of ASID<footnote>
<para>RID in ia64 terminology.</para>
</footnote> is insufficient to provide a unique integer identifier to
all address spaces that might hypothetically coexist in the running
system. The situation on mips32 is even worse: the architecture has only
256 unique identifiers.</para>
 
<indexterm>
<primary>address space</primary>
 
<secondary>- ASID stealing</secondary>
</indexterm>
 
<para>To mitigate the shortage of ASIDs, HelenOS uses the following
strategy. When the system initializes, a FIFO queue<footnote>
<para>Note that architecture-specific measures are taken to avoid
too large FIFO queue. For instance, seven consecutive ia64 RIDs are
grouped to form one HelenOS ASID.</para>
</footnote> is created and filled with all available ASIDs. Moreover,
every address space remembers the number of processors on which it is
active. Address spaces that have a valid ASID and that are not active on
any processor are appended to the list of inactive address spaces with
valid ASID. When an address space needs to be assigned a valid ASID, it
first checks the FIFO queue. If it contains at least one ASID, the ASID
is allocated. If the queue is empty, an ASID is simply stolen from the
first address space in the list. In that case, the address space that
loses the ASID in favor of another address space, is removed from the
list. After the new ASID is purged from all TLBs, it can be used by the
address space. Note that this approach works due to the fact that the
number of ASIDs is greater than the maximal number of processors
supported by HelenOS and that there can be only one active address space
per processor. In other words, when the FIFO queue is empty, there must
be address spaces that are not active on any processor.</para>
</section>
</section>
</chapter>
/design/trunk/src/ch_intro.xml
0,0 → 1,49
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="intro">
<?dbhtml filename="intro.html" ?>
 
<title>Introduction</title>
 
<para>HelenOS is a portable operating system with support for a variety of
modern processor architectures<footnote>
<para>amd64, arm32, ia32, ia64, mips32, ppc32 and sparc64. ia32xen and
ppc64 are currently broken.</para>
</footnote>.</para>
 
<para>This book describes the design and principles of the HelenOS operating
system from the perspective of its microkernel as well as from the
perspective of its userspace drivers and server tasks. Its primary goal is
to present ideas behind each subsystem and highlight things that are
specific to HelenOS. Although this text contains references to source code
(e.g. function names), these are provided only to improve reader's
orientation when reading the code. This book does not attempt to be a
substitute for a reference manual and the reader is strongly encouraged to
look for interface details there.</para>
 
<section>
<title>How to Read This Book</title>
 
<para><xref linkend="architecture" /> contains overview of the overall
HelenOS architecture.</para>
 
<para><xref linkend="ds" /> describes essential data structures used both
in the kernel and in the userspace.</para>
 
<para><xref linkend="time" /> focuses on time management in the kernel and
scheds some light on the userspace source of time.</para>
 
<para><xref linkend="scheduling" /> is dedicated to threads and the
scheduling subsystem.</para>
 
<para><xref linkend="mm" /> describes memory management of physical and
virtual memory.</para>
 
<para><xref linkend="ipc" /> deals with the IPC subsystem.</para>
 
<para><xref linkend="hardware" /> describes facilities that a userspace
task can use in order to become a device driver.</para>
 
<para><xref linkend="archspecs" /> presents some architecture specific
issues.</para>
</section>
</chapter>
/design/trunk/src/ch_ipc.xml
0,0 → 1,335
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="ipc">
<?dbhtml filename="ipc.html"?>
 
<title>IPC</title>
 
<para>Due to the high intertask communication traffic, IPC becomes critical
subsystem for microkernels, putting high demands on the speed, latency and
reliability of IPC model and implementation. Although theoretically the use
of asynchronous messaging system looks promising, it is not often
implemented because of a problematic implementation of end user
applications. HelenOS implements fully asynchronous messaging system with a
special layer providing a user application developer a reasonably
synchronous multithreaded environment sufficient to develop complex
protocols.</para>
 
<section>
<title>Kernel Services</title>
 
<para>Every message consists of four numeric arguments (32-bit and 64-bit
on the corresponding platforms), from which the first one is considered a
method number on message receipt and a return value on answer receipt. The
received message contains identification of the incoming connection, so
that the receiving application can distinguish the messages between
different senders. Internally the message contains pointer to the
originating task and to the source of the communication channel. If the
message is forwarded, the originating task identifies the recipient of the
answer, the source channel identifies the connection in case of a hangup
response.</para>
 
<para>Every message must be eventually answered. The system keeps track of
all messages, so that it can answer them with appropriate error code
should one of the connection parties fail unexpectedly. To limit buffering
of the messages in the kernel, every task has a limit on the amount of
asynchronous messages it can send simultaneously. If the limit is reached,
the kernel refuses to send any other message until some active message is
answered.</para>
 
<para>To facilitate kernel-to-user communication, the IPC subsystem
provides notification messages. The applications can subscribe to a
notification channel and receive messages directed to this channel. Such
messages can be freely sent even from interrupt context as they are
primarily destined to deliver IRQ events to userspace device drivers.
These messages need not be answered, there is no party that could receive
such response.</para>
 
<section>
<title>Low Level IPC</title>
 
<para>The whole IPC subsystem consists of one-way communication
channels. Each task has one associated message queue (answerbox). The
task can call other tasks and connect its phones to their answerboxes,
send and forward messages through these connections and answer received
messages. Every sent message is identified by a unique number, so that
the response can be later matched against it. The message is sent over
the phone to the target answerbox. The server application periodically
checks the answerbox and pulls messages from several queues associated
with it. After completing the requested action, the server sends a reply
back to the answerbox of the originating task. If a need arises, it is
possible to <emphasis>forward</emphasis> a received message through any
of the open phones to another task. This mechanism is used e.g. for
opening new connections to services via the naming service.</para>
 
<para>The answerbox contains four different message queues:</para>
 
<itemizedlist>
<listitem>
<para>Incoming call queue</para>
</listitem>
 
<listitem>
<para>Dispatched call queue</para>
</listitem>
 
<listitem>
<para>Answer queue</para>
</listitem>
 
<listitem>
<para>Notification queue</para>
</listitem>
</itemizedlist>
 
<figure float="1">
<title>Low level IPC</title>
 
<mediaobject id="ipc1">
<imageobject role="pdf">
<imagedata fileref="images/ipc1.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/ipc1.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/ipc1.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
 
<para>The communication between task A, that is connected to task B
looks as follows: task A sends a message over its phone to the target
asnwerbox. The message is saved in task B's incoming call queue. When
task B fetches the message for processing, it is automatically moved
into the dispatched call queue. After the server decides to answer the
message, it is removed from dispatched queue and the result is moved
into the answer queue of task A.</para>
 
<para>The arguments contained in the message are completely arbitrary
and decided by the user. The low level part of kernel IPC fills in
appropriate error codes if there is an error during communication. It is
assured that the applications are correctly notified about communication
state. If a program closes the outgoing connection, the target answerbox
receives a hangup message. The connection identification is not reused
until the hangup message is acknowledged and all other pending messages
are answered.</para>
 
<para>Closing an incoming connection is done by responding to any
incoming message with an EHANGUP error code. The connection is then
immediately closed. The client connection identification (phone id) is
not reused, until the client closes its own side of the connection
("hangs his phone up").</para>
 
<para>When a task dies (whether voluntarily or by being killed), cleanup
process is started.</para>
 
<orderedlist>
<listitem>
<para>hangs up all outgoing connections and sends hangup messages to
all target answerboxes,</para>
</listitem>
 
<listitem>
<para>disconnects all incoming connections,</para>
</listitem>
 
<listitem>
<para>disconnects from all notification channels,</para>
</listitem>
 
<listitem>
<para>answers all unanswered messages from answerbox queues with
appropriate error code and</para>
</listitem>
 
<listitem>
<para>waits until all outgoing messages are answered and all
remaining answerbox queues are empty.</para>
</listitem>
</orderedlist>
</section>
 
<section>
<title>System Call IPC Layer</title>
 
<para>On top of this simple protocol the kernel provides special
services closely related to the inter-process communication. A range of
method numbers is allocated and protocol is defined for these functions.
These messages are interpreted by the kernel layer and appropriate
actions are taken depending on the parameters of the message and the
answer.</para>
 
<para>The kernel provides the following services:</para>
 
<itemizedlist>
<listitem>
<para>creating new outgoing connection,</para>
</listitem>
 
<listitem>
<para>creating a callback connection,</para>
</listitem>
 
<listitem>
<para>sending an address space area and</para>
</listitem>
 
<listitem>
<para>asking for an address space area.</para>
</listitem>
</itemizedlist>
 
<para>On startup, every task is automatically connected to a
<emphasis>naming service task</emphasis>, which provides a switchboard
functionality. In order to open a new outgoing connection, the client
sends a <constant>CONNECT_ME_TO</constant> message using any of his
phones. If the recepient of this message answers with an accepting
answer, a new connection is created. In itself, this mechanism would
allow only duplicating existing connection. However, if the message is
forwarded, the new connection is made to the final recipient.</para>
 
<para>In order for a task to be able to forward a message, it must have
a phone connected to the destination task. The destination task
establishes such connection by sending the
<constant>CONNECT_TO_ME</constant> message to the forwarding task. A
callback connection is opened afterwards. Every service that wants to
receive connections has to ask the naming service to create the callback
connection via this mechanism.</para>
 
<para>Tasks can share their address space areas using IPC messages. The
two message types - <constant>AS_AREA_SEND</constant> and
<constant>AS_AREA_RECV</constant> are used for sending and receiving an
address space area respectively. The shared area can be accessed as soon
as the message is acknowledged.</para>
</section>
</section>
 
<section>
<title>Userspace View</title>
 
<para>The conventional design of the asynchronous API seems to produce
applications with one event loop and several big switch statements.
However, by intensive utilization of userspace fibrils, it was possible to
create an environment that is not necessarily restricted to this type of
event-driven programming and allows for more fluent expression of
application programs.</para>
 
<section>
<title>Single Point of Entry</title>
 
<para>Each task is associated with only one answerbox. If a
multithreaded application needs to communicate, it must be not only able
to send a message, but it should be able to retrieve the answer as well.
If several fibrils pull messages from task answerbox, it is a matter of
coincidence, which fibril receives which message. If a particular fibril
needs to wait for a message answer, an idle <emphasis>manager</emphasis>
fibril is found or a new one is created and control is transfered to
this manager fibril. The manager fibrils pop messages from the answerbox
and put them into appropriate queues of running fibrils. If a fibril
waiting for a message is not running, the control is transferred to
it.</para>
 
<figure float="1">
<title>Single point of entry</title>
 
<mediaobject id="ipc2">
<imageobject role="pdf">
<imagedata fileref="images/ipc2.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/ipc2.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/ipc2.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
 
<para>Very similar situation arises when a task decides to send a lot of
messages and reaches the kernel limit of asynchronous messages. In such
situation, two remedies are available - the userspace library can either
cache the message locally and resend the message when some answers
arrive, or it can block the fibril and let it go on only after the
message is finally sent to the kernel layer. With one exception, HelenOS
uses the second approach - when the kernel responds that the maximum
limit of asynchronous messages was reached, the control is transferred
to a manager fibril. The manager fibril then handles incoming replies
and, when space is available, sends the message to the kernel and
resumes the application fibril execution.</para>
 
<para>If a kernel notification is received, the servicing procedure is
run in the context of the manager fibril. Although it wouldn't be
impossible to allow recursive calling, it could potentially lead to an
explosion of manager fibrils. Thus, the kernel notification procedures
are not allowed to wait for a message result, they can only answer
messages and send new ones without waiting for their results. If the
kernel limit for outgoing messages is reached, the data is automatically
cached within the application. This behaviour is enforced automatically
and the decision making is hidden from the developer.</para>
 
<figure float="1">
<title>Single point of entry solution</title>
 
<mediaobject id="ipc3">
<imageobject role="pdf">
<imagedata fileref="images/ipc3.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/ipc3.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/ipc3.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
</section>
 
<section>
<title>Ordering Problem</title>
 
<para>Unfortunately, the real world is is never so simple. E.g. if a
server handles incoming requests and as a part of its response sends
asynchronous messages, it can be easily preempted and another thread may
start intervening. This can happen even if the application utilizes only
one userspace thread. Classical synchronization using semaphores is not
possible as locking on them would block the thread completely so that
the answer couldn't be ever processed. The IPC framework allows a
developer to specify, that part of the code should not be preempted by
any other fibril (except notification handlers) while still being able
to queue messages belonging to other fibrils and regain control when the
answer arrives.</para>
 
<para>This mechanism works transparently in multithreaded environment,
where additional locking mechanism (futexes) should be used. The IPC
framework ensures that there will always be enough free userspace
threads to handle incoming answers and allow the application to run more
fibrils inside the userspace threads without the danger of locking all
userspace threads in futexes.</para>
</section>
 
<section>
<title>The Interface</title>
 
<para>The interface was developed to be as simple to use as possible.
Typical applications simply send messages and occasionally wait for an
answer and check results. If the number of sent messages is higher than
the kernel limit, the flow of application is stopped until some answers
arrive. On the other hand, server applications are expected to work in a
multithreaded environment.</para>
 
<para>The server interface requires the developer to specify a
<function>connection_fibril</function> function. When new connection is
detected, a new fibril is automatically created and control is
transferred to this function. The code then decides whether to accept
the connection and creates a normal event loop. The userspace IPC
library ensures correct switching between several threads within the
kernel environment.</para>
</section>
</section>
</chapter>
/design/trunk/src/images/thread_states.svg
0,0 → 1,508
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/afs/ms.mff.cuni.cz/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:docname="thread_states.svg"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
inkscape:version="0.45"
sodipodi:version="0.32"
id="svg2"
height="841.88977pt"
width="595.27557pt"
version="1.0"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path15932"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path15941"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path15911"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.3,0,0,0.3,-1.5,0)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="TriangleInM"
style="overflow:visible">
<path
id="path15846"
d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path15908"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path15917"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.6,0,0,0.6,-3,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path15920"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path15914"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.6,0,0,-0.6,3,0)" />
</marker>
</defs>
<sodipodi:namedview
inkscape:window-y="25"
inkscape:window-x="0"
inkscape:window-height="940"
inkscape:window-width="1270"
showguides="true"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="740.43765"
inkscape:cx="648.34305"
inkscape:zoom="0.865549"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g2969">
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,32.505079,214.41201)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path4140"
style="font-size:32.41382599px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4142"
y="310.4581"
x="153.78911"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="310.4581"
x="153.78911"
id="tspan4146"
sodipodi:role="line">Sleeping</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,139.58723,96.396938)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path4148"
style="fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4150"
y="192.4431"
x="269.63187"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="192.4431"
x="269.63187"
id="tspan4154"
sodipodi:role="line">Ready</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,-38.863714,3.4359211)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path4156"
style="fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:6.03985834;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4158"
y="99.976555"
x="84.752838"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:6.03985834;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="99.976555"
x="84.752838"
id="tspan4162"
sodipodi:role="line">Entering</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,331.38771,3.435716)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path4164"
style="fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4166"
y="99.48188"
x="458.90955"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="99.48188"
x="458.90955"
id="tspan4170"
sodipodi:role="line">Exiting</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:nodetypes="cc"
id="path4980"
d="M 119.63407,120.91285 C 158.4109,155.41306 229.036,175.07247 229.036,175.07247"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.51482165;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4984"
y="177.29214"
x="72.033386"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="177.29214"
x="72.033386"
id="tspan5024"
sodipodi:role="line">thread_create()</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4988"
y="144.76666"
x="167.57008"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="144.76666"
x="167.57008"
id="tspan5022"
sodipodi:role="line">thread_ready()</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4994"
y="233.55243"
x="371.00375"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="233.55243"
x="371.00375"
id="tspan5026"
sodipodi:role="line">scheduler()</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text4998"
y="332.00797"
x="235.8403"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="332.00797"
x="235.8403"
id="tspan5018"
sodipodi:role="line">waitq_sleep_timeout()</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text5002"
y="267.83606"
x="267.08151"
style="font-size:10.54880428px;font-style:oblique;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="267.83606"
x="267.08151"
id="tspan5004"
sodipodi:role="line">preemption</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text5006"
y="179.05028"
x="418.84592"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.05028"
x="418.84592"
id="tspan5016"
sodipodi:role="line">thread_exit()</tspan></text>
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text5010"
y="240.63132"
x="152.32382"
style="font-size:10.54880428px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="240.63132"
x="152.32382"
id="tspan5020"
sodipodi:role="line">waitq_wakeup()</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,244.67941,215.88328)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path2444"
style="font-size:32.41382599px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;font-family:Bitstream Vera Sans"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text2446"
y="311.52734"
x="368.48883"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="311.52734"
x="368.48883"
id="tspan2450"
sodipodi:role="line">Running</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
inkscape:connector-type="polyline"
id="path3325"
d="M 33.829457,213.66698 L 84.561293,138.77965"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.92965603;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:nodetypes="cc"
id="path4202"
d="M 314.69899,213.04834 C 362.88199,220.57945 386.15206,252.5286 393.34463,268.81194"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
inkscape:connector-type="polyline"
id="path5077"
d="M 340.70678,305.19787 L 257.84357,304.77479"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:nodetypes="cc"
id="path5079"
d="M 387.96877,280.82152 C 347.32732,273.1621 321.64165,254.50261 309.03773,224.86293"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
inkscape:connector-type="polyline"
id="path5081"
d="M 190.14883,277.69688 L 285.76766,220.57945"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path5083"
d="M 349.04067,177.84713 L 479.96695,128.34535"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1;display:inline" />
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
transform="matrix(0.4944732,0,0,0.4944732,139.49524,-54.184333)"
d="M 432 183.61252 A 117.5 54 0 1 1 197,183.61252 A 117.5 54 0 1 1 432 183.61252 z"
sodipodi:ry="54"
sodipodi:rx="117.5"
sodipodi:cy="183.61252"
sodipodi:cx="314.5"
id="path1571"
style="fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
sodipodi:type="arc" />
<text
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
sodipodi:linespacing="125%"
id="text1573"
y="41.48431"
x="256.48203"
style="font-size:16.02776527px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="41.48431"
x="256.48203"
id="tspan2967"
sodipodi:role="line">Lingering</tspan></text>
<path
inkscape:export-ydpi="157.50999"
inkscape:export-xdpi="157.50999"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/thread_states.png"
inkscape:connector-type="polyline"
id="path1579"
d="M 437.58788,77.956963 L 363.20043,46.681251"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.46482801;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:2.929656, 1.464828;stroke-dashoffset:0;stroke-opacity:1;display:inline" />
</g>
</g>
</svg>
/design/trunk/src/images/ipc3.svg
0,0 → 1,342
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg5804"
sodipodi:version="0.32"
inkscape:version="0.45"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
sodipodi:docname="ipc3.svg"
inkscape:output_extension="org.inkscape.output.svg.inkscape"
sodipodi:modified="true">
<defs
id="defs5806">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path4118"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path4103"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path4121"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8672292"
inkscape:cx="213.07443"
inkscape:cy="849.15418"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1270"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="25" />
<metadata
id="metadata5809">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:3.82379174;stroke-miterlimit:4;stroke-dasharray:3.8237915, 3.8237915;stroke-dashoffset:0;stroke-opacity:1"
id="rect4591"
width="281.32019"
height="383.9165"
x="77.538818"
y="11.249744" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.08290625;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6800"
width="112.1237"
height="301.73367"
x="216.05653"
y="61.556484" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:2.29881334;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect6802"
width="112.5148"
height="31.925303"
x="215.85529"
y="36.025669" />
<text
xml:space="preserve"
style="font-size:10.48421288px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="248.93459"
y="55.27504"
id="text6804"
transform="scale(0.9973909,1.0026159)"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan1492"
x="248.93459"
y="55.27504">Thread #2</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.0828383;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect5858"
width="112.1237"
height="301.71402"
x="103.12389"
y="61.436604" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:2.29881334;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2799"
width="112.5148"
height="31.925303"
x="102.92266"
y="36.045433" />
<text
xml:space="preserve"
style="font-size:10.48421288px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="129.40469"
y="55.27504"
id="text5861"
transform="scale(0.9973909,1.0026159)"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan1490"
x="129.40469"
y="55.27504">Thread #1</tspan></text>
<text
xml:space="preserve"
style="font-size:10.10816383px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="123.02416"
y="90.758408"
id="text6753"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2773"
x="123.02416"
y="90.758408">fibril #1</tspan></text>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.82489389;stroke-miterlimit:4;stroke-dasharray:0.82489396, 0.82489396;stroke-dashoffset:0;stroke-opacity:1"
id="rect6838"
width="108.88601"
height="76.751122"
x="162.89091"
y="193.36983" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.64978778px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 142.26857,97.71813 L 142.26857,198.77183"
id="path6738"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.2889657px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 178.38349,197.89289 L 178.38349,259.57776"
id="path6751"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.64978778px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1"
d="M 141.44367,169.4839 L 55.654699,179.38263"
id="path6764" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.82489389;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:0.82489396, 0.82489396;stroke-dashoffset:0;stroke-opacity:1"
d="M 142.17232,198.36946 C 142.17232,198.36946 152.99219,217.45678 169.49007,203.36906"
id="path6772" />
<text
xml:space="preserve"
style="font-size:8.28535271px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="132.8468"
y="217.02353"
id="text6776"><tspan
sodipodi:role="line"
id="tspan6778"
x="132.8468"
y="217.02353">wait_for()</tspan></text>
<text
xml:space="preserve"
style="font-size:19.79745483px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="17.948275"
y="172.47113"
id="text6780"><tspan
sodipodi:role="line"
id="tspan6782"
x="17.948275"
y="172.47113">call</tspan></text>
<text
xml:space="preserve"
style="font-size:8.67462254px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="157.09018"
y="180.7571"
id="text6784"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2777"
x="157.09018"
y="180.7571">Manager</tspan><tspan
sodipodi:role="line"
id="tspan2779"
x="157.09018"
y="191.60037">fibril #1</tspan></text>
<g
id="g6814"
transform="matrix(-1.6497879,0,0,1.6497879,525.48343,-20.839222)">
<path
sodipodi:nodetypes="cc"
id="path6816"
d="M 143.5,71.86218 L 143.5,133.11472"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path6818"
d="M 165.39065,132.58196 L 165.39065,169.97154"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.78129178px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path6820"
d="M 143,115.36218 L 91,121.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
id="path6822"
d="M 143.44166,132.87083 C 143.44166,132.87083 150,144.44039 160,135.90128"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:0.5, 0.5;stroke-dashoffset:0;stroke-opacity:1" />
</g>
<text
xml:space="preserve"
style="font-size:19.79745483px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="387.81952"
y="168.02745"
id="text6824"><tspan
sodipodi:role="line"
id="tspan6826"
x="387.81952"
y="168.02745">call</tspan></text>
<text
xml:space="preserve"
style="font-size:8.67462254px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="232.76477"
y="179.68599"
id="text6828"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2781"
x="232.76477"
y="179.68599">Manager</tspan><tspan
sodipodi:role="line"
id="tspan2783"
x="232.76477"
y="190.52927">fibril #2</tspan></text>
<text
xml:space="preserve"
style="font-size:8.28535271px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="256.5809"
y="217.02353"
id="text6834"><tspan
sodipodi:role="line"
id="tspan6836"
x="256.5809"
y="217.02353">wait_for()</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.23734093;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:1.23734094, 1.23734094;stroke-dashoffset:0;stroke-opacity:1"
d="M 10.842432,219.76056 C 1.8209309,256.71902 238.48598,252.18666 238.48598,252.18666"
id="path6842"
sodipodi:nodetypes="cs" />
<text
xml:space="preserve"
style="font-size:16.71392441px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="5.1449976"
y="218.74086"
id="text6844"><tspan
sodipodi:role="line"
id="tspan6846"
x="5.1449976"
y="218.74086">answer</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.64978778px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 286.62501,263.52181 L 286.62501,355.90994"
id="path6848" />
<text
xml:space="preserve"
style="font-size:10.10816383px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="244.62128"
y="90.758408"
id="text6850"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2775"
x="244.62128"
y="90.758408">fibril #2</tspan></text>
<text
xml:space="preserve"
style="font-size:5.84474325px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="292.02628"
y="265.24155"
id="text6858"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan2785"
x="292.02628"
y="265.24155">fibril #1</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.82489389;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:0.82489396, 0.82489396;stroke-dashoffset:0;stroke-opacity:1"
d="M 253.28367,261.10255 C 253.28367,261.10255 264.10354,242.01523 280.60142,256.10295"
id="path6866" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.82489389;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:0.82489396, 0.82489396;stroke-dashoffset:0;stroke-opacity:1"
d="M 142.69356,199.61935 C 126.26059,352.21169 258.47811,254.51093 276.62577,262.53115"
id="path6868"
sodipodi:nodetypes="cs" />
<text
xml:space="preserve"
style="font-size:13.34469986px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="139.20274"
y="297.04135"
id="text6870"><tspan
sodipodi:role="line"
id="tspan6872"
x="139.20274"
y="297.04135">migration</tspan></text>
</g>
</svg>
/design/trunk/src/images/arch1.svg
0,0 → 1,813
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="595.27557pt"
height="841.88977pt"
id="svg1595"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images"
sodipodi:docname="arch1.svg"
version="1.0"
inkscape:export-filename="/home/segabond/HelenOS-doc/design/src/images.vector/arch1.svg"
inkscape:export-xdpi="157.50999"
inkscape:export-ydpi="157.50999">
<defs
id="defs1597">
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mend"
style="overflow:visible;">
<path
id="path2586"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path2595"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path2589"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path3030"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0"
refX="0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path2950"
d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3051"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.9664338"
inkscape:cx="317.11077"
inkscape:cy="830.58799"
inkscape:document-units="px"
inkscape:current-layer="layer1"
inkscape:window-width="1272"
inkscape:window-height="943"
inkscape:window-x="2"
inkscape:window-y="0"
showguides="false"
showgrid="true" />
<metadata
id="metadata1600">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect1603"
width="280.96918"
height="242.50786"
x="3.31182"
y="2.842041"
rx="0"
ry="0" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2537"
width="279.31699"
height="17.0145"
x="2.977221"
y="267.7811" />
<text
xml:space="preserve"
style="font-size:11.03643227px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="118.24348"
y="280.65692"
id="text2541"><tspan
sodipodi:role="line"
id="tspan2543"
x="118.24348"
y="280.65692">HARDWARE</tspan></text>
<rect
ry="0"
y="89.370667"
x="21.705873"
height="70.357254"
width="123.24016"
id="rect2482"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2484"
y="100.53796"
x="23.374378"
style="font-size:11.35551548px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2906"
sodipodi:role="line"
y="100.53796"
x="23.374378">Scheduler</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2488"
y="115.71053"
x="26.795998"
style="font-size:9.97017193px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3018"
sodipodi:role="line"
y="115.71053"
x="26.795998">* threads</tspan><tspan
id="tspan3020"
sodipodi:role="line"
y="125.68071"
x="26.795998">* per CPU run-queues</tspan><tspan
id="tspan3022"
sodipodi:role="line"
y="135.65088"
x="26.795998">* load balancing</tspan><tspan
id="tspan3024"
sodipodi:role="line"
y="145.62105"
x="26.795998" /></text>
<rect
ry="0"
y="8.9375381"
x="151.31157"
height="70.357254"
width="123.24016"
id="rect2507"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2509"
y="20.762728"
x="152.67284"
style="font-size:10.8898077px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2902"
sodipodi:role="line"
y="20.762728"
x="152.67284">Memory Management</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2513"
y="38.03651"
x="157.32141"
style="font-size:9.97017193px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3063"
sodipodi:role="line"
y="38.03651"
x="157.32141">* physical memory</tspan><tspan
id="tspan3065"
sodipodi:role="line"
y="48.006682"
x="157.32141">* virtual memory</tspan><tspan
id="tspan3067"
sodipodi:role="line"
y="57.976854"
x="157.32141">* address spaces</tspan></text>
<rect
ry="0"
y="87.229218"
x="150.65472"
height="72.190376"
width="123.24016"
id="rect2523"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2525"
y="97.924149"
x="152.17294"
style="font-size:11.03643227px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2893"
sodipodi:role="line"
y="97.924149"
x="152.17294">Syscalls</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2529"
y="112.63335"
x="154.90625"
style="font-size:9.89715004px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2962"
sodipodi:role="line"
y="112.63335"
x="154.90625">* thread/task control</tspan><tspan
id="tspan2964"
sodipodi:role="line"
y="122.5305"
x="154.90625">* address space control</tspan><tspan
id="tspan2966"
sodipodi:role="line"
y="132.42765"
x="154.90625">* IPC</tspan><tspan
id="tspan2968"
sodipodi:role="line"
y="142.3248"
x="154.90625">* DDI</tspan></text>
<rect
ry="0"
y="168.26785"
x="21.889883"
height="70.357254"
width="123.24016"
id="rect2558"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2560"
y="179.84303"
x="22.297922"
style="font-size:11.03643227px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3008"
sodipodi:role="line"
y="179.84303"
x="22.297922">Kernel Device Drivers</tspan></text>
<text
sodipodi:linespacing="100%"
id="text2564"
y="195.12282"
x="26.980019"
style="font-size:10.64815712px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3010"
sodipodi:role="line"
y="195.12282"
x="26.980019">* system clock</tspan><tspan
id="tspan3012"
sodipodi:role="line"
y="205.77098"
x="26.980019">* interrupt controllers</tspan><tspan
id="tspan3014"
sodipodi:role="line"
y="216.41913"
x="26.980019">* basic console</tspan><tspan
id="tspan3016"
sodipodi:role="line"
y="227.06729"
x="26.980019">* SMP config</tspan></text>
<path
transform="matrix(0.304062,0,0,0.265584,-64.59271,206.9366)"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="2.6179939"
sodipodi:arg1="1.5707963"
sodipodi:r2="17.25"
sodipodi:r1="34.5"
sodipodi:cy="193.86218"
sodipodi:cx="461.5"
sodipodi:sides="3"
id="path2656"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
sodipodi:type="star" />
<rect
y="239.96512"
x="72.387032"
height="17.661306"
width="6.6893549"
id="rect2658"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<path
transform="matrix(-0.304062,-9.650901e-18,8.429624e-18,-0.265584,237.0773,300.4091)"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="2.6179939"
sodipodi:arg1="1.5707963"
sodipodi:r2="17.25"
sodipodi:r1="34.5"
sodipodi:cy="193.86218"
sodipodi:cx="461.5"
sodipodi:sides="3"
id="path2662"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
sodipodi:type="star" />
<rect
y="-267.38062"
x="-100.09747"
height="17.661306"
width="6.6893549"
id="rect2664"
style="fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
transform="scale(-1,-1)" />
<rect
ry="0"
y="167.85875"
x="150.6114"
height="70.357254"
width="123.24016"
id="rect2868"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<text
sodipodi:linespacing="100%"
id="text2870"
y="179.46368"
x="153.3054"
style="font-size:10.56324673px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#efff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2889"
sodipodi:role="line"
y="179.46368"
x="153.3054">IPC</tspan><tspan
id="tspan2891"
sodipodi:role="line"
y="190.02693"
x="153.3054" /></text>
<text
sodipodi:linespacing="100%"
id="text2874"
y="192.40541"
x="155.9709"
style="font-size:9.97017193px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3026"
sodipodi:role="line"
y="192.40541"
x="155.9709">* answerboxes</tspan><tspan
id="tspan3028"
sodipodi:role="line"
y="202.37558"
x="155.9709">* phones</tspan><tspan
id="tspan3030"
sodipodi:role="line"
y="212.34575"
x="155.9709">* (a)synchronous</tspan><tspan
id="tspan3032"
sodipodi:role="line"
y="222.31593"
x="155.9709">* short messages</tspan></text>
<text
id="text2478"
y="58.524769"
x="27.721554"
style="font-size:35.00579834px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="58.524769"
x="27.721554"
id="tspan2480"
sodipodi:role="line">kernel</tspan></text>
<g
id="g1687"
transform="translate(8.720631,-35.88566)">
<path
transform="matrix(0.919703,0,0,0.919703,-129.7253,2.865178)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2671"
style="fill:#e03c3c;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2675"
y="261.74728"
x="363.78198"
style="font-size:11.03643227px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="261.74728"
x="363.78198"
id="tspan2677"
sodipodi:role="line">Device Driver</tspan><tspan
id="tspan2679"
y="275.54282"
x="363.78198"
sodipodi:role="line" /></text>
</g>
<g
id="g5397"
transform="matrix(1.147036,-0.220145,0.200289,1.260747,-91.71614,-9.521322)">
<g
transform="matrix(0.60836,0.10024,-0.125283,0.486756,63.13712,75.01405)"
id="g2731"
style="fill:#bc4343;fill-opacity:1">
<path
sodipodi:type="star"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2733"
sodipodi:sides="3"
sodipodi:cx="461.5"
sodipodi:cy="193.86218"
sodipodi:r1="34.5"
sodipodi:r2="17.25"
sodipodi:arg1="1.5707963"
sodipodi:arg2="2.6179939"
inkscape:flatsided="true"
inkscape:rounded="0"
inkscape:randomized="0"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
transform="matrix(0.253276,-0.424118,0.424118,0.253276,239.4585,458.5603)" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="rect2735"
width="8.4741507"
height="88.587173"
x="487.99454"
y="-339.11758"
transform="matrix(0.455179,0.8904,-0.863773,0.503882,0,0)" />
</g>
<path
transform="matrix(-0.207217,0.181054,-0.226285,-0.165797,481.2429,206.4879)"
d="M 461.5,228.36218 L 431.62212,176.61218 L 491.37788,176.61218 L 461.5,228.36218 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="2.6179939"
sodipodi:arg1="1.5707963"
sodipodi:r2="17.25"
sodipodi:r1="34.5"
sodipodi:cy="193.86218"
sodipodi:cx="461.5"
sodipodi:sides="3"
id="path2737"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g1677"
transform="translate(-40.0314,46.68368)">
<path
transform="matrix(0.919703,0,0,0.919703,19.8594,-150.1205)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2796"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2798"
y="109.2059"
x="526.51227"
style="font-size:11.03643227px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2800"
y="109.2059"
x="526.51227"
sodipodi:role="line">User Task</tspan></text>
</g>
<g
id="g1682">
<path
transform="matrix(0.919703,0,0,0.919703,-19.36262,-206.7702)"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
sodipodi:ry="27.5"
sodipodi:rx="55"
sodipodi:cy="277.36218"
sodipodi:cx="578"
id="path2804"
style="fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="arc" />
<text
id="text2806"
y="52.205906"
x="486.04077"
style="font-size:11.03643227px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan2808"
y="52.205906"
x="486.04077"
sodipodi:role="line">User Task</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 479.60709,67.443927 L 435.54736,81.913721"
id="path2858"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 427.18586,102.08508 L 489.49262,129.13018"
id="path2862"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 492.1259,71.345894 L 419.6075,197.91784"
id="path2864"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 505.39382,177.1853 L 446.14868,204.57747"
id="path1541"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 513.25469,74.390318 L 522.08923,126.40163"
id="path1545"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<g
id="g5393"
transform="matrix(0.646269,-0.630337,0.368809,1.070218,40.0729,180.2928)">
<rect
transform="matrix(0.766817,0.641865,-0.622443,0.782665,0,0)"
y="-37.901913"
x="313.03909"
height="3.032896"
width="114.65965"
id="rect2480"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="matrix(0.578442,0.484185,-0.471951,0.593436,94.34901,-247.0761)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2482"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<g
id="g2491"
transform="matrix(0.919703,0,0,1.074106,-90.37394,-40.72516)">
<rect
y="234.3622"
x="633.5"
height="68.5"
width="109"
id="rect2456"
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="236.3622"
x="635.5"
height="64.745003"
width="104.5"
id="rect2458"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.91970271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 498.69562,218.82203 L 544.68076,218.82203"
id="path2460"
inkscape:connector-type="polyline" />
<text
xml:space="preserve"
style="font-size:8.60447502px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="559.17487"
y="222.99515"
id="text2462"><tspan
sodipodi:role="line"
id="tspan2464"
x="559.17487"
y="222.99515">IPC</tspan></text>
<g
id="g2474"
transform="matrix(0.919703,0,0,0.919703,-90.37394,10.17627)">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect2466"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2468"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<text
xml:space="preserve"
style="font-size:6.08623266px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="552.52423"
y="252.46127"
id="text2470"><tspan
sodipodi:role="line"
id="tspan2472"
x="552.52423"
y="252.46127">HW access</tspan></text>
<text
xml:space="preserve"
style="font-size:7.34500504px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="553.98779"
y="266.25476"
id="text2485"><tspan
sodipodi:role="line"
id="tspan2487"
x="553.98779"
y="266.25476">Interrupt</tspan><tspan
sodipodi:role="line"
x="553.98779"
y="275.43602"
id="tspan2489">via IPC</tspan></text>
<g
id="g2589"
transform="matrix(0.919703,0,0,0.919703,-91.20966,-7.492132)"
style="fill:#000000;fill-opacity:1">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect2591"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path2593"
style="opacity:1;fill:#000000;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<text
xml:space="preserve"
style="font-size:7.34500504px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="555.22137"
y="234.79085"
id="text2595"><tspan
sodipodi:role="line"
x="555.22137"
y="234.79085"
id="tspan2599">Syscall</tspan></text>
<g
id="g3100"
transform="matrix(0.919703,0,0,0.919703,-89.45424,27.5317)"
style="fill:#1e1d70;fill-opacity:1">
<rect
y="259.86218"
x="640"
height="4"
width="47"
id="rect3102"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<path
transform="translate(14,-20)"
d="M 679.5,281.86221 L 669.75,287.49138 L 669.75,276.23305 L 679.5,281.86221 z "
inkscape:randomized="0"
inkscape:rounded="0"
inkscape:flatsided="true"
sodipodi:arg2="1.0471976"
sodipodi:arg1="0"
sodipodi:r2="3.25"
sodipodi:r1="6.5"
sodipodi:cy="281.86221"
sodipodi:cx="673"
sodipodi:sides="3"
id="path3104"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
sodipodi:type="star" />
</g>
<path
sodipodi:type="arc"
style="fill:#1e1d70;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
id="path2743"
sodipodi:cx="578"
sodipodi:cy="277.36218"
sodipodi:rx="55"
sodipodi:ry="27.5"
d="M 633 277.36218 A 55 27.5 0 1 1 523,277.36218 A 55 27.5 0 1 1 633 277.36218 z"
transform="matrix(0.919703,0,0,0.919703,-145.1628,-166.394)" />
<text
xml:space="preserve"
style="font-size:11.03643227px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="342.41681"
y="93.066521"
id="text2745"
inkscape:connector-avoid="true"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan1673"
x="342.41681"
y="93.066521">Naming Service</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 373.81224,203.86716 L 296.98431,154.28973"
id="path4011"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 461,48.362183 L 341.86912,36.742048 L 293.93311,104.45334"
id="path4015"
inkscape:connector-type="polyline"
sodipodi:nodetypes="ccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 385.46937,114.36218 L 398.18274,198.02374"
id="path1575"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 340.58207,100.32309 L 299.12327,123.35949"
id="path1675"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 460.36477,150.90797 L 300.13713,138.45358"
id="path1693"
inkscape:connector-type="polyline"
sodipodi:nodetypes="cc" />
</g>
</svg>
/design/trunk/src/images/hash.svg
0,0 → 1,879
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4001"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
sodipodi:docname="hash.svg">
<defs
id="defs4003">
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path3687"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3697"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.8023945"
inkscape:cx="231.97217"
inkscape:cy="782.32851"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata4006">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4933"
transform="matrix(0.590686,0,0,0.606171,9.823542,4.305978)">
<rect
y="10.933611"
x="24"
height="708.42859"
width="202"
id="rect4046"
style="fill:#000000;fill-opacity:1;stroke-width:1.125;stroke-miterlimit:4;stroke-dasharray:none" />
<rect
y="13.362183"
x="28"
height="702"
width="193"
id="rect4931"
style="fill:#ffffff;fill-opacity:1;stroke-width:1.125;stroke-miterlimit:4;stroke-dasharray:none" />
</g>
<g
id="g3933">
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(0.79177,0,0,0.79177,20.05087,-90.64315)"
id="g2555">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect3093"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2859"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
<g
transform="matrix(0.79177,0,0,0.79177,19.59493,-89.85138)"
id="g2571">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path3130"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path3984"
sodipodi:nodetypes="cc" />
<g
id="g2559"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2561"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2563"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="matrix(0.79177,0,0,0.79177,0.59245,-175.3625)"
id="g3721">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
id="path2580"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
id="path2582"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
id="path2592"
d="M 244.10992,40.664557 C 236.38799,40.731113 231.07584,40.731113 231.07584,40.731113"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2594"
d="M 240.13319,53.392869 C 247.85512,53.326313 253.16727,53.326313 253.16727,53.326313"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2598"
width="22.597105"
height="22.169559"
x="255.54236"
y="35.535046"
rx="0"
ry="0" />
<rect
y="37.920708"
x="258.68073"
height="17.189667"
width="16.189337"
id="rect2600"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
transform="matrix(0.79177,0,0,0.79177,168.8119,-92.11358)"
id="g2602">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path2604"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path2606"
sodipodi:nodetypes="cc" />
<g
id="g2608"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2610"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2612"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
id="g3923">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
d="M 335.07701,52.095427 L 349.26484,52.095427 L 349.26484,52.095427 L 349.26484,69.514367 L 84.847854,69.514367 L 84.847854,52.887197 L 105.01541,52.887197"
id="path3508"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart)"
d="M 99.014215,43.627873 L 85.410647,43.627873 L 85.410647,43.627873 L 85.410647,26.208933 L 349.1533,26.208933 L 349.1533,42.836103 L 329.0216,42.836103"
id="path3712"
sodipodi:nodetypes="ccccccc" />
</g>
<text
transform="scale(0.955569,1.046497)"
sodipodi:linespacing="125%"
id="text3725"
y="47.574963"
x="214.09045"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
y="47.574963"
x="214.09045"
id="tspan3727"
sodipodi:role="line">...</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.67557204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 80.705862,11.799244 L 80.705862,154.38593"
id="path4943"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45533288;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 26.826825,82.65977 L 141.56765,82.65977 L 141.56765,82.65977"
id="path4945" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 26.32322,153.40776 L 140.23081,153.40776 L 140.23081,153.40776"
id="path4947" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 26.323222,296.03175 L 140.23081,296.03175 L 140.23081,296.03175"
id="path4951" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 26.497083,367.82677 L 140.40468,367.82677 L 140.40468,367.82677"
id="path4953" />
<text
xml:space="preserve"
style="font-size:36.34477615px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="64.58226"
y="225.01509"
id="text5017"><tspan
sodipodi:role="line"
id="tspan5019"
x="64.58226"
y="225.01509">...</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.67557204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 80.952964,296.60033 L 80.952964,439.18702"
id="path5021"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="51.325001"
y="40.628769"
id="text5147"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5149"
x="51.325"
y="40.628769"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">HASH</tspan><tspan
sodipodi:role="line"
x="51.325001"
y="55.395919"
id="tspan5151"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">KEY</tspan></text>
<text
xml:space="preserve"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="51.325001"
y="112.69246"
id="text5153"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5155"
x="51.325"
y="112.69246"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">HASH</tspan><tspan
sodipodi:role="line"
x="51.325001"
y="127.45961"
id="tspan5157"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">KEY</tspan></text>
<text
xml:space="preserve"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="54.562237"
y="327.79446"
id="text5159"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5161"
x="54.562236"
y="327.79446"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">HASH</tspan><tspan
sodipodi:role="line"
x="54.562237"
y="342.56161"
id="tspan5163"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">KEY</tspan></text>
<text
xml:space="preserve"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="53.687744"
y="398.58447"
id="text5165"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5167"
x="53.687743"
y="398.58447"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">HASH</tspan><tspan
sodipodi:role="line"
x="53.687745"
y="413.35162"
id="tspan5169"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans">KEY</tspan></text>
<text
xml:space="preserve"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="294.53418"
y="222.73674"
id="text5171"
sodipodi:linespacing="125%"><tspan
sodipodi:role="line"
id="tspan5173"
x="294.53418"
y="222.73674"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">Collision chains (lists)</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59068602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 352.42142,66.711248 L 377.06147,206.53506"
id="path5175"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59068602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 303.39448,142.57221 C 368.36994,209.06657 368.36994,209.06657 368.36994,209.06657"
id="path5177" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59068602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 369.29817,227.96853 L 289.80871,308.89251 L 289.80871,308.89251 L 289.80871,308.89251 L 289.80871,308.89251"
id="path5179" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.59068602px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 381.11189,228.55921 L 352.42142,380.36551"
id="path5181" />
<g
id="g3962"
transform="translate(0.445144,69)">
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(0.79177,0,0,0.79177,20.05087,-90.64315)"
id="g3964">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect3966"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3968"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
<g
transform="matrix(0.79177,0,0,0.79177,19.59493,-89.85138)"
id="g3970">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path3972"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path3974"
sodipodi:nodetypes="cc" />
<g
id="g3976"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3978"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect3980"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="matrix(0.79177,0,0,0.79177,0.59245,-175.3625)"
id="g3982">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
id="path3985"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
id="path3987"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
id="path3989"
d="M 244.10992,40.664557 C 236.38799,40.731113 231.07584,40.731113 231.07584,40.731113"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path3991"
d="M 240.13319,53.392869 C 247.85512,53.326313 253.16727,53.326313 253.16727,53.326313"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3993"
width="22.597105"
height="22.169559"
x="255.54236"
y="35.535046"
rx="0"
ry="0" />
<rect
y="37.920708"
x="258.68073"
height="17.189667"
width="16.189337"
id="rect3995"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
transform="matrix(0.79177,0,0,0.79177,168.8119,-92.11358)"
id="g3997">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path3999"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path4001"
sodipodi:nodetypes="cc" />
<g
id="g4003"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4005"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect4007"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
id="g4009">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 335.07701,52.095427 L 349.26484,52.095427 L 349.26484,52.095427 L 349.26484,69.514367 L 84.847854,69.514367 L 84.847854,52.887197 L 105.01541,52.887197"
id="path4011"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 99.014215,43.627873 L 85.410647,43.627873 L 85.410647,43.627873 L 85.410647,26.208933 L 349.1533,26.208933 L 349.1533,42.836103 L 329.0216,42.836103"
id="path4013"
sodipodi:nodetypes="ccccccc" />
</g>
<text
transform="scale(0.955569,1.046497)"
sodipodi:linespacing="125%"
id="text4015"
y="47.574963"
x="214.09045"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
y="47.574963"
x="214.09045"
id="tspan4017"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4019"
transform="translate(0.999962,285)">
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(0.79177,0,0,0.79177,20.05087,-90.64315)"
id="g4021">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect4023"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4025"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
<g
transform="matrix(0.79177,0,0,0.79177,19.59493,-89.85138)"
id="g4027">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path4029"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path4031"
sodipodi:nodetypes="cc" />
<g
id="g4033"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4035"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect4037"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="matrix(0.79177,0,0,0.79177,0.59245,-175.3625)"
id="g4039">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
id="path4041"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
id="path4043"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
id="path4045"
d="M 244.10992,40.664557 C 236.38799,40.731113 231.07584,40.731113 231.07584,40.731113"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4047"
d="M 240.13319,53.392869 C 247.85512,53.326313 253.16727,53.326313 253.16727,53.326313"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4049"
width="22.597105"
height="22.169559"
x="255.54236"
y="35.535046"
rx="0"
ry="0" />
<rect
y="37.920708"
x="258.68073"
height="17.189667"
width="16.189337"
id="rect4051"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
transform="matrix(0.79177,0,0,0.79177,168.8119,-92.11358)"
id="g4053">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path4055"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path4057"
sodipodi:nodetypes="cc" />
<g
id="g4059"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4061"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect4063"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
id="g4065">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 335.07701,52.095427 L 349.26484,52.095427 L 349.26484,52.095427 L 349.26484,69.514367 L 84.847854,69.514367 L 84.847854,52.887197 L 105.01541,52.887197"
id="path4067"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 99.014215,43.627873 L 85.410647,43.627873 L 85.410647,43.627873 L 85.410647,26.208933 L 349.1533,26.208933 L 349.1533,42.836103 L 329.0216,42.836103"
id="path4069"
sodipodi:nodetypes="ccccccc" />
</g>
<text
transform="scale(0.955569,1.046497)"
sodipodi:linespacing="125%"
id="text4071"
y="47.574963"
x="214.09045"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
y="47.574963"
x="214.09045"
id="tspan4073"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4075"
transform="translate(0.432115,356.4731)">
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(0.79177,0,0,0.79177,20.05087,-90.64315)"
id="g4077">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect4079"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4081"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
<g
transform="matrix(0.79177,0,0,0.79177,19.59493,-89.85138)"
id="g4083">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path4085"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path4087"
sodipodi:nodetypes="cc" />
<g
id="g4089"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4091"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect4093"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="matrix(0.79177,0,0,0.79177,0.59245,-175.3625)"
id="g4095">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
id="path4097"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
id="path4099"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
id="path4101"
d="M 244.10992,40.664557 C 236.38799,40.731113 231.07584,40.731113 231.07584,40.731113"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path4103"
d="M 240.13319,53.392869 C 247.85512,53.326313 253.16727,53.326313 253.16727,53.326313"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4105"
width="22.597105"
height="22.169559"
x="255.54236"
y="35.535046"
rx="0"
ry="0" />
<rect
y="37.920708"
x="258.68073"
height="17.189667"
width="16.189337"
id="rect4107"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
transform="matrix(0.79177,0,0,0.79177,168.8119,-92.11358)"
id="g4109">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path4111"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path4113"
sodipodi:nodetypes="cc" />
<g
id="g4115"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4117"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect4119"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
id="g4121">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 335.07701,52.095427 L 349.26484,52.095427 L 349.26484,52.095427 L 349.26484,69.514367 L 84.847854,69.514367 L 84.847854,52.887197 L 105.01541,52.887197"
id="path4123"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 99.014215,43.627873 L 85.410647,43.627873 L 85.410647,43.627873 L 85.410647,26.208933 L 349.1533,26.208933 L 349.1533,42.836103 L 329.0216,42.836103"
id="path4125"
sodipodi:nodetypes="ccccccc" />
</g>
<text
transform="scale(0.955569,1.046497)"
sodipodi:linespacing="125%"
id="text4127"
y="47.574963"
x="214.09045"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
y="47.574963"
x="214.09045"
id="tspan4129"
sodipodi:role="line">...</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/list.svg
0,0 → 1,276
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2487"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
sodipodi:docname="list.svg">
<defs
id="defs2489">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path3690"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path3687"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path3693"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3697"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="2.3883833"
inkscape:cx="283.25696"
inkscape:cy="956.41252"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1170"
inkscape:window-height="891"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata2492">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4228">
<g
style="fill:#ffffff;fill-opacity:1"
transform="matrix(1.340424,0,0,1.340424,-50.26244,-139.0362)"
id="g2555">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect3093"
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2859"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
<g
transform="matrix(1.340424,0,0,1.340424,-51.03432,-137.6958)"
id="g2571">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path3130"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path3984"
sodipodi:nodetypes="cc" />
<g
id="g2559"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2561"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2563"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="matrix(1.340424,0,0,1.340424,-83.2045,-282.4616)"
id="g3721">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
id="path2580"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
id="path2582"
sodipodi:nodetypes="cc" />
</g>
<path
sodipodi:nodetypes="cc"
id="path2592"
d="M 329.05748,83.260657 C 315.98467,83.373333 306.99148,83.373333 306.99148,83.373333"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.94604635;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2594"
d="M 322.32509,104.80901 C 335.3979,104.69633 344.39108,104.69633 344.39108,104.69633"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.94558167;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2598"
width="38.25568"
height="37.531872"
x="348.41199"
y="74.576668"
rx="0"
ry="0" />
<rect
y="78.615471"
x="353.7251"
height="29.101181"
width="27.407677"
id="rect2600"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:3.42207336px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<g
transform="matrix(1.340424,0,0,1.340424,201.582,-141.5256)"
id="g2602">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
id="path2604"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
id="path2606"
sodipodi:nodetypes="cc" />
<g
id="g2608"
transform="translate(62.11584,-0.571429)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2610"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2612"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<path
sodipodi:nodetypes="ccccccc"
id="path3508"
d="M 483.51152,102.61249 L 507.07863,102.61249 L 507.07863,102.61249 L 507.07863,132.10182 L 59.435284,132.10182 L 59.435284,103.95291 L 93.713149,104.3716"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.87061095;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-end:none;marker-start:url(#Arrow2Mstart)" />
<path
sodipodi:nodetypes="ccccccc"
id="path3712"
d="M 84.785395,89.703703 L 60.328834,89.28501 L 60.328834,89.28501 L 60.328834,59.795682 L 506.83105,59.795682 L 506.83105,87.944586 L 471.7765,88.363279"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.8669498;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow2Mstart)" />
<text
transform="scale(0.955569,1.046497)"
sodipodi:linespacing="125%"
id="text3725"
y="94.319038"
x="274.32077"
style="font-size:24.22269058px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:40.37117004px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans"
y="94.319038"
x="274.32077"
id="tspan3727"
sodipodi:role="line">...</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/mm_pt.svg
0,0 → 1,773
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4319"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
sodipodi:docname="mm_pt.svg">
<defs
id="defs4321">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path2632"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path2650"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.73548823"
inkscape:cx="372.04724"
inkscape:cy="526.18109"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata4324">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4327"
width="54.280598"
height="12.666497"
x="17.776117"
y="154.5551" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4329"
width="54.280598"
height="12.666497"
x="17.776117"
y="94.585487" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4331"
width="54.280598"
height="12.666497"
x="17.776117"
y="82.41774" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4333"
width="54.280598"
height="12.666497"
x="17.776117"
y="70.096893" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4335"
width="53.954674"
height="35.806946"
x="17.776117"
y="106.75323" />
<rect
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4337"
width="54.280598"
height="12.666497"
x="17.776117"
y="142.38736" />
<text
xml:space="preserve"
style="font-size:23.1889782px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="32.976414"
y="127.36218"
id="text4339"><tspan
sodipodi:role="line"
id="tspan4341"
x="32.976414"
y="127.36218">...</tspan></text>
<g
id="g4353"
transform="matrix(0.869125,0,0,0.869125,-51.42792,-29.39789)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4355"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4357"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4359"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4361"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4363"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4365"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4367"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4369"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4371"
transform="matrix(0.869125,0,0,0.869125,-51.68492,77.06103)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4373"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4375"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4377"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4379"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4381"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4383"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4385"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4387"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4389"
transform="matrix(0.869125,0,0,0.869125,39.83019,-30.26702)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4391"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4393"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4395"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4397"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4399"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4401"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4403"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4405"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4407"
transform="matrix(0.869125,0,0,0.869125,39.83019,78.37359)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4409"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4411"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4413"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4415"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4417"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4419"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4421"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4423"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4425"
transform="matrix(0.869125,0,0,0.869125,40.18533,185.7016)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4427"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4429"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4431"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4433"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4435"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4437"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4439"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4441"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4443"
transform="matrix(0.869125,0,0,0.869125,126.2287,-30.71045)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4445"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4447"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4449"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4451"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4453"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4455"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4457"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4459"
sodipodi:role="line">...</tspan></text>
</g>
<g
id="g4461"
transform="matrix(0.869125,0,0,0.869125,126.2287,77.93016)">
<rect
y="211.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4463"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="142.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4465"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="128.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4467"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="113.98718"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4469"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="156.16333"
x="183.92068"
height="41.198853"
width="62.079315"
id="rect4471"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="197.16333"
x="183.92068"
height="14.573853"
width="62.454315"
id="rect4473"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4475"
y="179.87563"
x="201.40988"
style="font-size:26.68083763px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="179.87563"
x="201.40988"
id="tspan4477"
sodipodi:role="line">...</tspan></text>
</g>
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4481"
width="54.280598"
height="12.666497"
x="286.0787"
y="370.09805" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4483"
width="54.280598"
height="12.666497"
x="286.0787"
y="310.12845" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4485"
width="54.280598"
height="12.666497"
x="286.0787"
y="297.96069" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4487"
width="54.280598"
height="12.666497"
x="286.0787"
y="285.63986" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4489"
width="53.954674"
height="35.806946"
x="286.0787"
y="322.2962" />
<rect
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:1.08640599;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4491"
width="54.280598"
height="12.666497"
x="286.0787"
y="357.93033" />
<text
xml:space="preserve"
style="font-size:23.1889782px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="301.27899"
y="342.90512"
id="text4493"><tspan
sodipodi:role="line"
id="tspan4495"
x="301.27899"
y="342.90512">...</tspan></text>
<g
id="g4531"
transform="matrix(1.079456,0,0,0.869125,-1.388153,1.021475)">
<rect
y="8.8746023"
x="16"
height="31.487579"
width="382.50519"
id="rect4497"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4499"
y="26.996433"
x="18.658203"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan4503"
y="26.996433"
x="18.658203"
sodipodi:role="line">PTL0_index</tspan></text>
<text
id="text4507"
y="26.996433"
x="97.658203"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="26.996433"
x="97.658203"
id="tspan4509"
sodipodi:role="line">PTL1_index</tspan></text>
<text
id="text4511"
y="26.996433"
x="178.82227"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="26.996433"
x="178.82227"
id="tspan4513"
sodipodi:role="line">PTL2_index</tspan></text>
<text
id="text4515"
y="26.996433"
x="257.6582"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="26.996433"
x="257.6582"
id="tspan4517"
sodipodi:role="line">PTL3_index</tspan></text>
<text
id="text4519"
y="27.47937"
x="344.16797"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="27.47937"
x="344.16797"
id="tspan4521"
sodipodi:role="line">offset</tspan></text>
<path
id="path4523"
d="M 89,8.3621826 L 89,39.362183"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path4525"
d="M 173,8.8746027 L 173,40.362183"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path4527"
d="M 252.53814,8.8746027 L 252.53814,40.362183"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path4529"
d="M 334,8.3621826 L 334,40.362183"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g4561"
transform="matrix(0.686309,0,0,0.686309,-8.116646,15.341)">
<rect
y="264.36218"
x="33"
height="35"
width="86"
id="rect4555"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4557"
y="288.58945"
x="52.542488"
style="font-size:19.16935158px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="288.58945"
x="52.542488"
id="tspan4559"
sodipodi:role="line">PTL0</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.86912483px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 43.572496,167.77366 L 43.572496,196.45478"
id="path4566" />
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="31.660641"
y="152.21085"
id="text4579"><tspan
sodipodi:role="line"
id="tspan4581"
x="31.660641"
y="152.21085">PTL1</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.86912483px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
d="M 71.375667,148.21835 L 90.246809,148.32648 L 89.983282,272.42666 L 102.17224,272.0554"
id="path4583"
sodipodi:nodetypes="cccc" />
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#fafb02;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="120.36874"
y="211.45474"
id="text5462"><tspan
sodipodi:role="line"
id="tspan5464"
x="120.36874"
y="211.45474">PTL2</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.86912483px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
d="M 163.06834,205.57265 L 181.5005,205.2418 L 181.23697,275.78711 L 192.98697,275.41586"
id="path5466"
sodipodi:nodetypes="cccc" />
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#f4f505;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="214.74823"
y="199.62009"
id="text5468"><tspan
sodipodi:role="line"
id="tspan5470"
x="214.74823"
y="199.62009">PTL3</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.86912483px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Lend);stroke-opacity:1"
d="M 253.58997,195.9165 L 272.02214,195.58566 L 272.19759,383.77609 L 279.99681,383.84381"
id="path5472"
sodipodi:nodetypes="cccc" />
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="29.062088"
y="62.027313"
id="text5492"><tspan
sodipodi:role="line"
id="tspan5494"
x="29.062088"
y="62.027313">PTL0</tspan></text>
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="120.76131"
y="60.217766"
id="text5496"><tspan
sodipodi:role="line"
id="tspan5498"
x="120.76131"
y="60.217766">PTL1</tspan></text>
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="211.57297"
y="60.436745"
id="text5500"><tspan
sodipodi:role="line"
id="tspan5502"
x="211.57297"
y="60.436745">PTL2</tspan></text>
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="299.80103"
y="59.486141"
id="text5504"><tspan
sodipodi:role="line"
id="tspan5506"
x="299.80103"
y="59.486141">PTL3</tspan></text>
<text
xml:space="preserve"
style="font-size:10.42949772px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="298.11804"
y="367.74725"
id="text5516"><tspan
sodipodi:role="line"
id="tspan5518"
x="298.11804"
y="367.74725">frame</tspan></text>
</g>
</svg>
/design/trunk/src/images/mm_hash.svg
0,0 → 1,882
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4001"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/home/jermar/software/HelenOS-doc/design/src/images"
sodipodi:docname="mm_hash.svg">
<defs
id="defs4003">
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path2705"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3697"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.73548823"
inkscape:cx="372.04724"
inkscape:cy="526.18109"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata4006">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g3206"
transform="matrix(0.892659,0,0,0.892659,2.576186,1.173626)">
<g
transform="matrix(0.590686,0,0,0.606171,9.823542,4.305978)"
id="g4933">
<rect
style="fill:#000000;fill-opacity:1;stroke-width:1.125;stroke-miterlimit:4;stroke-dasharray:none"
id="rect4046"
width="202"
height="708.42859"
x="24"
y="10.933611" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1.125;stroke-miterlimit:4;stroke-dasharray:none"
id="rect4931"
width="193"
height="702"
x="28"
y="13.362183" />
</g>
<g
id="g2736">
<g
id="g2555"
transform="matrix(0.79177,0,0,0.79177,19.99723,-90.74993)"
style="fill:#ffffff;fill-opacity:1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3093"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2859"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2571"
transform="matrix(0.79177,0,0,0.79177,19.54129,-89.95816)">
<path
sodipodi:nodetypes="cc"
id="path3130"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path3984"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2559">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2561"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2563"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<g
id="g3721"
transform="matrix(0.79177,0,0,0.79177,0.53881,-175.4693)">
<path
sodipodi:nodetypes="cc"
id="path2580"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2582"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 244.05628,40.557777 C 236.33435,40.624333 231.0222,40.624333 231.0222,40.624333"
id="path2592"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 240.07955,53.286089 C 247.80148,53.219533 253.11363,53.219533 253.11363,53.219533"
id="path2594"
sodipodi:nodetypes="cc" />
<rect
ry="0"
rx="0"
y="35.428265"
x="255.48872"
height="22.169559"
width="22.597105"
id="rect2598"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2600"
width="16.189337"
height="17.189667"
x="258.62711"
y="37.813931" />
<g
id="g2602"
transform="matrix(0.79177,0,0,0.79177,168.7583,-92.22036)">
<path
sodipodi:nodetypes="cc"
id="path2604"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2606"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2608">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2610"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2612"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 333.91374,51.988627 L 349.2112,51.988627 L 349.2112,51.988627 L 349.2112,69.407567 L 84.794214,69.407567 L 84.794214,52.780397 L 106.62623,52.780397"
id="path3508"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 102.25452,44.116273 L 85.322047,44.116273 L 85.322047,44.116273 L 85.322047,26.697333 L 349.0647,26.697333 L 349.0647,43.324503 L 329.48782,43.324503"
id="path3712"
sodipodi:nodetypes="ccccccc" />
<text
xml:space="preserve"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="214.03432"
y="47.472927"
id="text3725"
sodipodi:linespacing="125%"
transform="scale(0.955569,1.046497)"><tspan
sodipodi:role="line"
id="tspan3727"
x="214.03432"
y="47.472927"
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">...</tspan></text>
</g>
<path
sodipodi:nodetypes="cc"
id="path4943"
d="M 80.705862,11.799244 L 80.705862,154.38593"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.67557204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4945"
d="M 26.826825,82.65977 L 141.56765,82.65977 L 141.56765,82.65977"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45533288;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4947"
d="M 26.32322,153.40776 L 140.23081,153.40776 L 140.23081,153.40776"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4951"
d="M 26.323222,296.03175 L 140.23081,296.03175 L 140.23081,296.03175"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path4953"
d="M 26.497083,367.82677 L 140.40468,367.82677 L 140.40468,367.82677"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.45003903;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text5017"
y="225.01509"
x="64.58226"
style="font-size:36.34477615px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="225.01509"
x="64.58226"
id="tspan5019"
sodipodi:role="line">...</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5021"
d="M 80.952964,296.60033 L 80.952964,439.18702"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.67557204;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5147"
y="32.628769"
x="51.325001"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan5151"
y="32.628769"
x="53.205505"
sodipodi:role="line">as_t </tspan><tspan
id="tspan3289"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="47.395919"
x="53.205505"
sodipodi:role="line">+ </tspan><tspan
id="tspan3291"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="62.163068"
x="51.325001"
sodipodi:role="line">VPN</tspan></text>
<path
sodipodi:nodetypes="ccc"
id="path3279"
d="M 269.02031,125.04215 L 298,223.36218 L 176.09137,323.27081"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
id="text3281"
y="224.78796"
x="305.91016"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="224.78796"
x="305.91016"
id="tspan3283"
sodipodi:role="line">pte_t</tspan></text>
<path
sodipodi:nodetypes="ccc"
id="path3285"
d="M 176.11168,127.4434 L 298,224.36218 L 268.02031,321.28096"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text3296"
y="106.65717"
x="53.515015"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan3298"
y="106.65717"
x="55.395519"
sodipodi:role="line">as_t </tspan><tspan
id="tspan3300"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="121.42432"
x="55.395519"
sodipodi:role="line">+ </tspan><tspan
id="tspan3302"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="136.19147"
x="53.515015"
sodipodi:role="line">VPN</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3304"
y="389.82788"
x="53.515015"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan3306"
y="389.82788"
x="55.395519"
sodipodi:role="line">as_t </tspan><tspan
id="tspan3308"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="404.59503"
x="55.395519"
sodipodi:role="line">+ </tspan><tspan
id="tspan3310"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="419.36218"
x="53.515015"
sodipodi:role="line">VPN</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3312"
y="317.65717"
x="52.504852"
style="font-size:7.08823204px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan3314"
y="317.65717"
x="54.385356"
sodipodi:role="line">as_t </tspan><tspan
id="tspan3316"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="332.42432"
x="54.385357"
sodipodi:role="line">+ </tspan><tspan
id="tspan3318"
style="font-size:11.81371975px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
y="347.19146"
x="52.504853"
sodipodi:role="line">VPN</tspan></text>
<g
transform="translate(0.485843,69.51158)"
id="g2764">
<g
id="g2766"
transform="matrix(0.79177,0,0,0.79177,19.99723,-90.74993)"
style="fill:#ffffff;fill-opacity:1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2768"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2770"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2772"
transform="matrix(0.79177,0,0,0.79177,19.54129,-89.95816)">
<path
sodipodi:nodetypes="cc"
id="path2774"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2776"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2778">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2780"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2782"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<g
id="g2784"
transform="matrix(0.79177,0,0,0.79177,0.53881,-175.4693)">
<path
sodipodi:nodetypes="cc"
id="path2786"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2788"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 244.05628,40.557777 C 236.33435,40.624333 231.0222,40.624333 231.0222,40.624333"
id="path2790"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 240.07955,53.286089 C 247.80148,53.219533 253.11363,53.219533 253.11363,53.219533"
id="path2792"
sodipodi:nodetypes="cc" />
<rect
ry="0"
rx="0"
y="35.428265"
x="255.48872"
height="22.169559"
width="22.597105"
id="rect2794"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2796"
width="16.189337"
height="17.189667"
x="258.62711"
y="37.813931" />
<g
id="g2798"
transform="matrix(0.79177,0,0,0.79177,168.7583,-92.22036)">
<path
sodipodi:nodetypes="cc"
id="path2800"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2802"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2804">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2806"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2808"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 333.91374,51.988627 L 349.2112,51.988627 L 349.2112,51.988627 L 349.2112,69.407567 L 84.794214,69.407567 L 84.794214,52.780397 L 106.62623,52.780397"
id="path2810"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 102.25452,44.116273 L 85.322047,44.116273 L 85.322047,44.116273 L 85.322047,26.697333 L 349.0647,26.697333 L 349.0647,43.324503 L 329.48782,43.324503"
id="path2812"
sodipodi:nodetypes="ccccccc" />
<text
xml:space="preserve"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="214.03432"
y="47.472927"
id="text2814"
sodipodi:linespacing="125%"
transform="scale(0.955569,1.046497)"><tspan
sodipodi:role="line"
id="tspan2816"
x="214.03432"
y="47.472927"
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">...</tspan></text>
</g>
<g
transform="translate(1.053602,285.1068)"
id="g2818">
<g
id="g2820"
transform="matrix(0.79177,0,0,0.79177,19.99723,-90.74993)"
style="fill:#ffffff;fill-opacity:1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2822"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2824"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2826"
transform="matrix(0.79177,0,0,0.79177,19.54129,-89.95816)">
<path
sodipodi:nodetypes="cc"
id="path2828"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2830"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2832">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2834"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2836"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<g
id="g2838"
transform="matrix(0.79177,0,0,0.79177,0.53881,-175.4693)">
<path
sodipodi:nodetypes="cc"
id="path2840"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2842"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 244.05628,40.557777 C 236.33435,40.624333 231.0222,40.624333 231.0222,40.624333"
id="path2844"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 240.07955,53.286089 C 247.80148,53.219533 253.11363,53.219533 253.11363,53.219533"
id="path2846"
sodipodi:nodetypes="cc" />
<rect
ry="0"
rx="0"
y="35.428265"
x="255.48872"
height="22.169559"
width="22.597105"
id="rect2848"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2850"
width="16.189337"
height="17.189667"
x="258.62711"
y="37.813931" />
<g
id="g2852"
transform="matrix(0.79177,0,0,0.79177,168.7583,-92.22036)">
<path
sodipodi:nodetypes="cc"
id="path2854"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2856"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2858">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2860"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2862"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 333.91374,51.988627 L 349.2112,51.988627 L 349.2112,51.988627 L 349.2112,69.407567 L 84.794214,69.407567 L 84.794214,52.780397 L 106.62623,52.780397"
id="path2864"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 102.25452,44.116273 L 85.322047,44.116273 L 85.322047,44.116273 L 85.322047,26.697333 L 349.0647,26.697333 L 349.0647,43.324503 L 329.48782,43.324503"
id="path2866"
sodipodi:nodetypes="ccccccc" />
<text
xml:space="preserve"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="214.03432"
y="47.472927"
id="text2868"
sodipodi:linespacing="125%"
transform="scale(0.955569,1.046497)"><tspan
sodipodi:role="line"
id="tspan2870"
x="214.03432"
y="47.472927"
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">...</tspan></text>
</g>
<g
transform="translate(0.485813,355.5116)"
id="g2872">
<g
id="g2874"
transform="matrix(0.79177,0,0,0.79177,19.99723,-90.74993)"
style="fill:#ffffff;fill-opacity:1">
<rect
style="fill:#ffffff;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect2876"
width="28.539986"
height="28"
x="109.88416"
y="160.36218"
rx="0"
ry="0" />
<rect
y="163.37526"
x="113.84792"
height="21.71043"
width="20.44702"
id="rect2878"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2880"
transform="matrix(0.79177,0,0,0.79177,19.54129,-89.95816)">
<path
sodipodi:nodetypes="cc"
id="path2882"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2884"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2886">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2888"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2890"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<g
id="g2892"
transform="matrix(0.79177,0,0,0.79177,0.53881,-175.4693)">
<path
sodipodi:nodetypes="cc"
id="path2894"
d="M 243.02088,272.84069 C 233.26814,272.92475 226.55893,272.92475 226.55893,272.92475"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2896"
d="M 237.9983,288.91646 C 247.75104,288.8324 254.46025,288.8324 254.46025,288.8324"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.74018908;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 244.05628,40.557777 C 236.33435,40.624333 231.0222,40.624333 231.0222,40.624333"
id="path2898"
sodipodi:nodetypes="cc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.73991454;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 240.07955,53.286089 C 247.80148,53.219533 253.11363,53.219533 253.11363,53.219533"
id="path2900"
sodipodi:nodetypes="cc" />
<rect
ry="0"
rx="0"
y="35.428265"
x="255.48872"
height="22.169559"
width="22.597105"
id="rect2902"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.0213716px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2904"
width="16.189337"
height="17.189667"
x="258.62711"
y="37.813931" />
<g
id="g2906"
transform="matrix(0.79177,0,0,0.79177,168.7583,-92.22036)">
<path
sodipodi:nodetypes="cc"
id="path2908"
d="M 157.56087,166.26929 C 147.80813,166.35335 141.09892,166.35335 141.09892,166.35335"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2910"
d="M 152.53829,182.34506 C 162.29103,182.261 169.00024,182.261 169.00024,182.261"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
transform="translate(62.11584,-0.571429)"
id="g2912">
<rect
ry="0"
rx="0"
y="160.36218"
x="109.88416"
height="28"
width="28.539986"
id="rect2914"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.55297828px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2916"
width="20.44702"
height="21.71043"
x="113.84792"
y="163.37526" />
</g>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.69563103;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 333.91374,51.988627 L 349.2112,51.988627 L 349.2112,51.988627 L 349.2112,69.407567 L 84.794214,69.407567 L 84.794214,52.780397 L 106.62623,52.780397"
id="path2918"
sodipodi:nodetypes="ccccccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.6934675;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 102.25452,44.116273 L 85.322047,44.116273 L 85.322047,44.116273 L 85.322047,26.697333 L 349.0647,26.697333 L 349.0647,43.324503 L 329.48782,43.324503"
id="path2920"
sodipodi:nodetypes="ccccccc" />
<text
xml:space="preserve"
style="font-size:14.30800819px;font-style:normal;font-weight:normal;line-height:125%;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="214.03432"
y="47.472927"
id="text2922"
sodipodi:linespacing="125%"
transform="scale(0.955569,1.046497)"><tspan
sodipodi:role="line"
id="tspan2924"
x="214.03432"
y="47.472927"
style="font-size:23.84668922px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;font-family:Bitstream Vera Sans">...</tspan></text>
</g>
</g>
</g>
</svg>
/design/trunk/src/images/ipc1.svg
0,0 → 1,460
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg2982"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms/u/b/bonds0am/BIG/HelenOS-doc/design/trunk/src/images"
sodipodi:docname="ipc1.svg">
<defs
id="defs2984">
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path4118"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path4121"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="458.49965"
inkscape:cy="656.5373"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata2987">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4517"
transform="matrix(0.817442,0,0,0.817442,2.203011,1.526568)">
<text
transform="matrix(0.994735,-0.10248,0.10248,0.994735,0,0)"
id="text4130"
y="302.92075"
x="242.57803"
style="font-size:22.92194748px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="302.92075"
x="242.57803"
id="tspan4132"
sodipodi:role="line">call</tspan></text>
<text
transform="matrix(0.981242,0.192782,-0.192782,0.981242,0,0)"
id="text4136"
y="122.19006"
x="290.23486"
style="font-size:22.92196846px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="122.19006"
x="290.23486"
id="tspan4138"
sodipodi:role="line">answer</tspan></text>
<rect
y="9.7947264"
x="402.7673"
height="48.361362"
width="201.44435"
id="rect3043"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:2.86524749;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="59.251869"
x="403.2572"
height="328.16293"
width="201.31006"
id="rect3045"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.86524749;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="64.553719"
x="413.13657"
height="217.48918"
width="118.61221"
id="rect3059"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.8495717;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text3061"
y="84.232925"
x="426.21069"
style="font-size:16.67699432px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3063"
y="84.232925"
x="426.21069"
sodipodi:role="line">Answerbox</tspan></text>
<text
id="text3069"
y="40.356186"
x="461.93063"
style="font-size:22.9219799px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="40.356186"
x="461.93063"
id="tspan3071"
sodipodi:role="line">Task B</tspan></text>
<rect
y="241.44713"
x="423.48355"
height="32.210594"
width="99.699463"
id="rect4153"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="144.79956"
x="423.48355"
height="32.210594"
width="99.699463"
id="rect4155"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="192.61186"
x="423.48355"
height="32.210594"
width="99.699463"
id="rect4157"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="98.184761"
x="424.11664"
height="32.210594"
width="99.699463"
id="rect4159"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4161"
y="260.76825"
x="435.20068"
style="font-size:16.80339241px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="260.76825"
x="435.20068"
id="tspan4163"
sodipodi:role="line">incoming</tspan></text>
<text
id="text4165"
y="212.33574"
x="433.12521"
style="font-size:15.35064888px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="212.33574"
x="433.12521"
id="tspan4167"
sodipodi:role="line">dispatched</tspan></text>
<text
id="text4169"
y="164.20906"
x="440.75018"
style="font-size:16.22729683px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="164.20906"
x="440.75018"
id="tspan4171"
sodipodi:role="line">answers</tspan></text>
<text
id="text4173"
y="117.90802"
x="429.70984"
style="font-size:14.29061031px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="117.90802"
x="429.70984"
id="tspan4175"
sodipodi:role="line">notifications</tspan></text>
<rect
y="316.87122"
x="547.62762"
height="17.564388"
width="54.365963"
id="rect4189"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="349.19583"
x="547.61761"
height="17.564388"
width="54.365963"
id="rect4191"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="300.95236"
x="547.61761"
height="17.564388"
width="54.365963"
id="rect4193"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="333.27698"
x="547.61761"
height="17.564388"
width="54.365963"
id="rect4195"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="366.39001"
x="547.61761"
height="17.564388"
width="54.365963"
id="rect4197"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="284.00165"
x="547.61761"
height="17.564388"
width="54.365963"
id="rect4199"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.18459654;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
transform="matrix(-7.45389e-18,-1,1,-7.45389e-18,0,0)"
id="text4201"
y="541.01526"
x="-366.00021"
style="font-size:19.74520111px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="541.01526"
x="-366.00021"
id="tspan4203"
sodipodi:role="line">Phones</tspan></text>
<rect
y="12.211226"
x="13.50009"
height="48.361362"
width="201.44435"
id="rect4237"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:2.86524749;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="61.668369"
x="13.989989"
height="328.16293"
width="201.31006"
id="rect4239"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.86524749;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="66.970215"
x="23.869356"
height="217.48918"
width="118.61221"
id="rect4241"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.8495717;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4243"
y="86.649429"
x="36.943504"
style="font-size:16.67699432px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan4245"
y="86.649429"
x="36.943504"
sodipodi:role="line">Answerbox</tspan></text>
<text
id="text4247"
y="42.772686"
x="72.663437"
style="font-size:22.9219799px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="42.772686"
x="72.663437"
id="tspan4249"
sodipodi:role="line">Task A</tspan></text>
<rect
y="243.86363"
x="34.216354"
height="32.210594"
width="99.699463"
id="rect4251"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="147.21606"
x="34.216354"
height="32.210594"
width="99.699463"
id="rect4253"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="195.02837"
x="34.216354"
height="32.210594"
width="99.699463"
id="rect4255"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="100.60126"
x="34.849426"
height="32.210594"
width="99.699463"
id="rect4257"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.17238188;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text4259"
y="263.18475"
x="45.933487"
style="font-size:16.80339241px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="263.18475"
x="45.933487"
id="tspan4261"
sodipodi:role="line">incoming</tspan></text>
<text
id="text4263"
y="214.75224"
x="43.858002"
style="font-size:15.35064888px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="214.75224"
x="43.858002"
id="tspan4265"
sodipodi:role="line">dispatched</tspan></text>
<text
id="text4267"
y="166.62556"
x="51.482983"
style="font-size:16.22729683px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="166.62556"
x="51.482983"
id="tspan4269"
sodipodi:role="line">answers</tspan></text>
<text
id="text4271"
y="120.32452"
x="40.442638"
style="font-size:14.29061031px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.32452"
x="40.442638"
id="tspan4273"
sodipodi:role="line">notifications</tspan></text>
<g
transform="matrix(1.910165,0,0,1.910165,-140.2276,-54.87534)"
id="g4275">
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4277"
width="28.461397"
height="9.19522"
x="156.31529"
y="195.87996" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4279"
width="28.461397"
height="9.19522"
x="156.31007"
y="212.80238" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4281"
width="28.461397"
height="9.19522"
x="156.31007"
y="187.5462" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4283"
width="28.461397"
height="9.19522"
x="156.31007"
y="204.46863" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4285"
width="28.461397"
height="9.19522"
x="156.31007"
y="221.8038" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.62015402;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect4287"
width="28.461397"
height="9.19522"
x="156.31007"
y="178.67226" />
<text
xml:space="preserve"
style="font-size:10.33690834px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="-221.59973"
y="152.85362"
id="text4289"
transform="matrix(-7.45389e-18,-1,1,-7.45389e-18,0,0)"><tspan
sodipodi:role="line"
id="tspan4291"
x="-221.59973"
y="152.85362">Phones</tspan></text>
</g>
<path
sodipodi:nodetypes="cc"
id="path4134"
d="M 423.9469,211.15582 L 155.1613,167.74075"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.91016495;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:1.910165, 1.910165;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path3073"
d="M 184.97248,294.8734 L 403.34697,264.85375"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.91016495px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<path
sodipodi:nodetypes="cszc"
id="path4295"
d="M 522.97472,259.52078 C 522.97472,259.52078 533.079,256.0386 542.59567,251.11897 C 552.11232,246.19932 561.04139,239.84222 558.69095,234.09232 C 553.99009,222.59255 533.60668,211.90239 533.60668,211.90239"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.19385314;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:1.19385312, 1.19385312;stroke-dashoffset:0;stroke-opacity:1" />
<text
transform="matrix(1.27634e-2,-0.999919,0.999919,1.27634e-2,0,0)"
id="text4297"
y="576.75055"
x="-262.33469"
style="font-size:15.95719242px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="576.75055"
x="-262.33469"
id="tspan4299"
sodipodi:role="line">processing</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/ipc2.svg
0,0 → 1,341
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg4583"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms/u/b/bonds0am/BIG/HelenOS-doc/design/trunk/src/images"
sodipodi:docname="ipc2.svg">
<defs
id="defs4585">
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path4121"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path4115"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path4118"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="532.76055"
inkscape:cy="761.05707"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0"
showguides="true"
inkscape:guide-bbox="true" />
<metadata
id="metadata4588">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g5757"
transform="matrix(0.746352,0,0,0.746352,3.274672,2.374636)">
<rect
y="11.659255"
x="15.20762"
height="528.66608"
width="294.9639"
id="rect4591"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.59463024;stroke-miterlimit:4;stroke-dasharray:4.59462983, 4.59462983;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text5466"
y="40.862053"
x="133.65926"
style="font-size:27.22743607px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="40.862053"
x="133.65926"
id="tspan5468"
sodipodi:role="line">Task</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5472"
d="M 92.403474,86.506308 L 92.391903,493.91007"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.53790617;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text5474"
y="77.226929"
x="55.067062"
style="font-size:14.37403202px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.226929"
x="55.067062"
id="tspan5476"
sodipodi:role="line">Thread #1</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5511"
d="M 228.45834,86.506331 L 228.44677,493.91009"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:4.53790617;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text5513"
y="77.226929"
x="191.12193"
style="font-size:14.37403202px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.226929"
x="191.12193"
id="tspan5515"
sodipodi:role="line">Thread #2</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5517"
d="M 471.29553,86.286038 L 471.28396,493.6898"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.26895308px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
id="text5519"
y="77.006599"
x="433.95914"
style="font-size:14.37403202px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.006599"
x="433.95914"
id="tspan5521"
sodipodi:role="line">Server #1</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5523"
d="M 593.84535,86.506354 L 593.83378,493.91012"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.26895308px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
id="text5525"
y="77.226929"
x="556.50897"
style="font-size:14.37403202px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.226929"
x="556.50897"
id="tspan5527"
sodipodi:role="line">Server #2</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5529"
d="M 225.11413,106.92689 L 455.57493,148.90252"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.36137187;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5531"
d="M 91.2459,150.03699 L 580.36734,244.36061"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.36137187;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="231.6268"
x="101.24749"
height="134.52795"
width="118.92212"
id="rect2795"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.83619118;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="208.59064"
x="101.35544"
height="24.792854"
width="118.19173"
id="rect2799"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:2.07629061;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
transform="scale(1.057982,0.945196)"
id="text5548"
y="240.11691"
x="105.42728"
style="font-size:16.73596764px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan5552"
y="240.11691"
x="105.42728"
sodipodi:role="line">answerbox</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path5568"
d="M 229.65203,104.65793 L 182.32816,193.79536"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.58826709;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:1.5882671, 1.5882671;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5572"
d="M 93.511132,151.77456 L 138.56605,195.53293"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.58826709;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:1.5882671, 1.5882671;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5582"
d="M 470.16105,265.7536 L 224.1417,297.35687"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.36137187;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="240.79512"
x="108.30379"
height="33.061886"
width="101.81271"
id="rect5592"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.55098057;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text5574"
y="265.60031"
x="111.23518"
style="font-size:10.27103519px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="265.60031"
x="111.23518"
id="tspan5576"
sodipodi:role="line">sys_wait_for_call()</tspan></text>
<text
id="text5594"
y="254.11801"
x="127.59748"
style="font-size:11.56284428px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="254.11801"
x="127.59748"
id="tspan5596"
sodipodi:role="line">thread #1</tspan></text>
<rect
y="322.76907"
x="108.00604"
height="33.061886"
width="101.1165"
id="rect5607"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.54566848;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text5609"
y="347.57425"
x="110.94346"
style="font-size:10.27103519px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="347.57425"
x="110.94346"
id="tspan5611"
sodipodi:role="line">sys_wait_for_call()</tspan></text>
<text
id="text5613"
y="336.09198"
x="127.30576"
style="font-size:11.56284428px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="336.09198"
x="127.30576"
id="tspan5615"
sodipodi:role="line">thread #2</tspan></text>
<rect
y="290.03143"
x="169.071"
height="18.151625"
width="39.868744"
id="rect5617"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.36137187;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5619"
d="M 167.4179,297.35687 L 140.83872,279.85353"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.90758121;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow1Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path5621"
d="M 139.38013,316.96711 L 167.09375,303.02925"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.90758121;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Lstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text5627"
y="313.40161"
x="120.25021"
style="font-size:40.10351562px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="313.40161"
x="120.25021"
id="tspan5629"
sodipodi:role="line">?</tspan></text>
<text
transform="matrix(0.980914,0.194443,-0.194443,0.980914,0,0)"
id="text5639"
y="54.174305"
x="352.47437"
style="font-size:21.02095985px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="54.174305"
x="352.47437"
id="tspan5641"
sodipodi:role="line">call (1)</tspan></text>
<text
transform="matrix(0.980914,0.194443,-0.194443,0.980914,0,0)"
id="text5647"
y="124.44096"
x="366.40308"
style="font-size:21.02097321px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="124.44096"
x="366.40308"
id="tspan5649"
sodipodi:role="line">call (2)</tspan></text>
<text
transform="matrix(0.993805,-0.111141,0.111141,0.993805,0,0)"
id="text5651"
y="314.6124"
x="300.97635"
style="font-size:21.02099228px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="314.6124"
x="300.97635"
id="tspan5653"
sodipodi:role="line">answer (1)</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/tld_ia32.svg
0,0 → 1,220
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg1582"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms.mff.cuni.cz/u/b/bonds0am/BIG/HelenOS-doc/design/trunk/src/images"
sodipodi:docname="tld_ia32.svg">
<defs
id="defs1584">
<marker
inkscape:stockid="SquareL"
orient="auto"
refY="0.0"
refX="0.0"
id="SquareL"
style="overflow:visible">
<path
id="path2579"
d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path2552"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path2632"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path2635"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Dot_l"
orient="auto"
refY="0.0"
refX="0.0"
id="Dot_l"
style="overflow:visible">
<path
id="path2588"
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
transform="scale(0.8) translate(7.125493, 1)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path2650"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.7"
inkscape:cx="689.54683"
inkscape:cy="575.64481"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata1587">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g2682"
transform="translate(-213,-328.9286)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect2598"
width="290.75568"
height="37.531872"
x="220.74432"
y="377.83032"
rx="0"
ry="0" />
<rect
y="377.66086"
x="512.25464"
height="37.866085"
width="35.662514"
id="rect2612"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text1597"
y="405.07123"
x="275.66791"
style="font-size:20.54834366px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="405.07123"
x="275.66791"
id="tspan1599"
sodipodi:role="line">Thread local data</tspan></text>
<path
id="path2474"
d="M 220,333.79075 L 220,454.36218 L 220,454.36218 L 220,454.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path2476"
d="M 511.5,333.86218 L 511.5,454.43361 L 511.5,454.43361 L 511.5,454.43361"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="csszc"
id="path2478"
d="M 531.04061,397.36218 C 531.04061,397.36218 564.8923,389.313 574.2255,399.98575 C 579.21427,405.69052 581.45496,421.72292 575.88572,432.14181 C 571.03578,441.21503 558.92057,445.17685 554.64721,445.24035 C 536.28617,445.51319 519.07107,424.95863 519.07107,424.95863"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Dot_l);marker-end:url(#Arrow1Lend);stroke-opacity:1" />
<text
id="text2662"
y="434.47937"
x="585.41992"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="434.47937"
x="585.41992"
id="tspan2664"
sodipodi:role="line">self-reference</tspan></text>
<rect
y="460.12039"
x="477.75821"
height="30.983606"
width="68.163933"
id="rect2680"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.51639342;stroke-miterlimit:4;stroke-dasharray:1.03278689, 0.51639344;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2666"
y="486.26843"
x="495.32617"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="486.26843"
x="495.32617"
id="tspan2668"
sodipodi:role="line">GS/FS</tspan></text>
<path
sodipodi:nodetypes="cc"
id="path2670"
d="M 511,467.87741 L 511,435.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#SquareL);marker-end:url(#TriangleOutL);stroke-opacity:1" />
</g>
</g>
</svg>
/design/trunk/src/images/tld_ia64.svg
0,0 → 1,263
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg1582"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms.mff.cuni.cz/u/b/bonds0am/BIG/HelenOS-doc/design/trunk/src/images"
sodipodi:docname="tld_ia64.svg">
<defs
id="defs1584">
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mend"
style="overflow:visible;">
<path
id="path2626"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path2629"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path2653"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="SquareL"
orient="auto"
refY="0.0"
refX="0.0"
id="SquareL"
style="overflow:visible">
<path
id="path2579"
d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path2552"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path2632"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path2635"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Dot_l"
orient="auto"
refY="0.0"
refX="0.0"
id="Dot_l"
style="overflow:visible">
<path
id="path2588"
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
transform="scale(0.8) translate(7.125493, 1)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path2650"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="370.17694"
inkscape:cy="1025.8423"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata1587">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<rect
ry="0"
rx="0"
y="93.43203"
x="108.01039"
height="39.52552"
width="306.20029"
id="rect2598"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:1.50846708;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-size:21.6398468px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="165.85146"
y="122.11993"
id="text1597"><tspan
sodipodi:role="line"
id="tspan1599"
x="165.85146"
y="122.11993">Thread local data</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05311882;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.10623765, 1.05311883;stroke-dashoffset:0;stroke-opacity:1"
d="M 107.22652,47.053124 L 107.22652,174.02917 L 107.22652,174.02917 L 107.22652,174.02917"
id="path2474" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05311882;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.10623765, 1.05311883;stroke-dashoffset:0;stroke-opacity:1"
d="M 414.21066,47.128348 L 414.21066,174.10438 L 414.21066,174.10438 L 414.21066,174.10438"
id="path2476" />
<g
id="g2714"
transform="matrix(1.053119,0,0,1.053119,-274.7186,-26.30638)">
<rect
y="179.19179"
x="286.75821"
height="30.983606"
width="68.163933"
id="rect2680"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.51639342;stroke-miterlimit:4;stroke-dasharray:1.03278689, 0.51639344;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2666"
y="205.33983"
x="304.32617"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="205.33983"
x="304.32617"
id="tspan2668"
sodipodi:role="line"> r13</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05311882px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#SquareL);marker-end:url(#TriangleOutL);stroke-opacity:1"
d="M 61.942743,172.80135 L 61.942743,138.55894"
id="path2670"
sodipodi:nodetypes="cc" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.50846708;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect2710"
width="45.235641"
height="39.124287"
x="61.863979"
y="93.483665" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05311882;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2.10623765, 1.05311883;stroke-dashoffset:0;stroke-opacity:1"
d="M 61.316238,47.287443 L 61.316238,174.26349 L 61.316238,174.26349 L 61.316238,174.26349"
id="path2712" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.84295785;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
d="M 69.145182,45.664617 L 98.740634,45.554865"
id="path2726"
sodipodi:nodetypes="cc" />
<text
xml:space="preserve"
style="font-size:14.48128414px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="56.652172"
y="37.390232"
id="text2773"><tspan
sodipodi:role="line"
id="tspan2775"
x="56.652172"
y="37.390232">16 bytes</tspan></text>
</g>
</svg>
/design/trunk/src/images/tld_mips.svg
0,0 → 1,271
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="744.09448819"
height="1052.3622047"
id="svg1582"
sodipodi:version="0.32"
inkscape:version="0.43"
sodipodi:docbase="/afs/ms.mff.cuni.cz/u/b/bonds0am/BIG/HelenOS-doc/design/trunk/src/images"
sodipodi:docname="tld_mips.svg">
<defs
id="defs1584">
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mend"
style="overflow:visible;">
<path
id="path2626"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path2629"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(0.6) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path2653"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="SquareL"
orient="auto"
refY="0.0"
refX="0.0"
id="SquareL"
style="overflow:visible">
<path
id="path2579"
d="M -5.0,-5.0 L -5.0,5.0 L 5.0,5.0 L 5.0,-5.0 L -5.0,-5.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="TriangleOutL"
orient="auto"
refY="0.0"
refX="0.0"
id="TriangleOutL"
style="overflow:visible">
<path
id="path2552"
d="M 5.77,0.0 L -2.88,5.0 L -2.88,-5.0 L 5.77,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none"
transform="scale(0.8)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lend"
style="overflow:visible;">
<path
id="path2632"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) rotate(180) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lstart"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow2Lstart"
style="overflow:visible">
<path
id="path2635"
style="font-size:12.0;fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="scale(1.1) translate(-5,0)" />
</marker>
<marker
inkscape:stockid="Dot_l"
orient="auto"
refY="0.0"
refX="0.0"
id="Dot_l"
style="overflow:visible">
<path
id="path2588"
d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;marker-end:none"
transform="scale(0.8) translate(7.125493, 1)" />
</marker>
<marker
inkscape:stockid="Arrow1Lend"
orient="auto"
refY="0.0"
refX="0.0"
id="Arrow1Lend"
style="overflow:visible;">
<path
id="path2650"
d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;marker-start:none;"
transform="scale(0.8) rotate(180)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="1.4"
inkscape:cx="401.92915"
inkscape:cy="1025.8423"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
inkscape:window-width="1273"
inkscape:window-height="943"
inkscape:window-x="0"
inkscape:window-y="0" />
<metadata
id="metadata1587">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g2738"
transform="matrix(0.610332,0,0,0.610332,7.10554,1.41723)">
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect2598"
width="290.75568"
height="37.531872"
x="29.744324"
y="96.901726"
rx="0"
ry="0" />
<text
id="text1597"
y="124.14263"
x="84.667908"
style="font-size:20.54834366px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="124.14263"
x="84.667908"
id="tspan1599"
sodipodi:role="line">Thread local data</tspan></text>
<path
id="path2474"
d="M 29,52.86215 L 29,173.43358 L 29,173.43358 L 29,173.43358"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path2476"
d="M 320.5,52.93358 L 320.5,173.50501 L 320.5,173.50501 L 320.5,173.50501"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
<g
transform="translate(-2,-24)"
id="g2719">
<g
id="g2714"
transform="translate(352.8197,12.92859)">
<rect
y="179.19179"
x="286.75821"
height="30.983606"
width="68.163933"
id="rect2680"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.51639342;stroke-miterlimit:4;stroke-dasharray:1.03278689, 0.51639344;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2666"
y="205.33983"
x="304.32617"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="205.33983"
x="304.32617"
id="tspan2668"
sodipodi:role="line">K1/R2</tspan></text>
</g>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#SquareL);marker-end:url(#TriangleOutL);stroke-opacity:1"
d="M 672.5,201.99341 L 672.5,169.47818"
id="path2670"
sodipodi:nodetypes="cc" />
</g>
<rect
y="96.362183"
x="321"
height="38"
width="350"
id="rect2710"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path2712"
d="M 670.5,54.290754 L 670.5,174.86218 L 670.5,174.86218 L 670.5,174.86218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:2, 1;stroke-dashoffset:0;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path2726"
d="M 37.857143,52.362183 L 664.28572,53.076469"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.75;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2734"
y="45.157558"
x="314.04745"
style="font-size:14.45062828px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="45.157558"
x="314.04745"
id="tspan2736"
sodipodi:role="line">0x7000</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/convert
0,0 → 1,20
#!/bin/bash
 
for f in `ls *.svg | sed 's/\.svg//g'`;
do
if [ ! -f "$f.eps" ]; then
echo "Converting $f.svg to $f.eps";
inkscape --without-gui --export-eps=$f.eps $f.svg
fi
 
if [ ! -f "$f.pdf" ]; then
echo "Converting $f.eps to $f.pdf";
egrep -v "^%%Orientation:" $f.eps | epstopdf --filter --outfile $f.pdf
fi
if [ ! -f "$f.png" ]; then
echo "Converting $f.svg to $f.png";
inkscape -D -X -Y -W -H --without-gui --export-width=600 --export-png=$f.png $f.svg
fi
done
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/design/trunk/src/images/btree.svg
0,0 → 1,1054
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/afs/ms.mff.cuni.cz/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/btree.png"
sodipodi:docname="btree.svg"
sodipodi:docbase="/tmp/bonds0am/HelenOS-doc/design/trunk/src/images.vector"
inkscape:version="0.43"
sodipodi:version="0.32"
id="svg2"
height="841.88977pt"
width="595.27557pt"
version="1.0">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path15932"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path15941"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path15911"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.3,0,0,0.3,-1.5,0)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="TriangleInM"
style="overflow:visible">
<path
id="path15846"
d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path15908"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path15917"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.6,0,0,0.6,-3,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path15920"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path15914"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.6,0,0,-0.6,3,0)" />
</marker>
</defs>
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="943"
inkscape:window-width="1272"
showguides="true"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="565.81824"
inkscape:cx="450.04293"
inkscape:zoom="0.55531454"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g1798"
transform="matrix(1.141349,0,0,1.141349,-33.93189,-15.7712)">
<rect
style="fill:#ffffff;fill-opacity:1"
id="rect3922"
width="0"
height="3"
x="233"
y="284.36218"
ry="0" />
<g
transform="translate(42.7725,1.826864)"
id="g19792">
<rect
ry="0"
rx="0"
y="11.5"
x="227.68846"
height="20.173136"
width="66.138458"
id="rect3093"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3792"
width="12.289355"
height="13.048913"
x="230.60747"
y="15.41913" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3794"
width="12.289355"
height="13.048913"
x="247.0869"
y="15.41913" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3796"
width="12.289355"
height="13.048913"
x="262.7825"
y="15.41913" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect3798"
width="12.289355"
height="13.048913"
x="278.67245"
y="15.41913" />
<text
xml:space="preserve"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="233.05537"
y="25.358408"
id="text4217"
sodipodi:linespacing="100%"><tspan
sodipodi:role="line"
id="tspan4233"
x="233.05537"
y="25.358408">7</tspan></text>
</g>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4003"
width="66.138458"
height="20.173136"
x="132.82686"
y="56.500011"
rx="0"
ry="0" />
<g
transform="matrix(1.373285,0,0,1.55178,73.22626,-38.22044)"
id="g4005">
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4007"
width="8.9488745"
height="8.4089966"
x="45.525562"
y="63.565441" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4009"
width="8.9488745"
height="8.4089966"
x="57.525562"
y="63.565441" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4011"
width="8.9488745"
height="8.4089966"
x="68.954796"
y="63.565441" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect4013"
width="8.9488745"
height="8.4089966"
x="80.525566"
y="63.565441" />
</g>
<text
sodipodi:linespacing="100%"
id="text4223"
y="70.358398"
x="138.56709"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="70.358398"
x="138.56709"
id="tspan4231"
sodipodi:role="line">3</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4227"
y="70.358398"
x="155.05539"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="70.358398"
x="155.05539"
id="tspan4229"
sodipodi:role="line">5</tspan></text>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4021"
width="66.138458"
height="20.173136"
x="57.826836"
y="106.50002"
rx="0"
ry="0" />
<rect
y="110.41915"
x="60.745811"
height="13.048913"
width="12.289355"
id="rect4025"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="77.225227"
height="13.048913"
width="12.289355"
id="rect4027"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="92.920822"
height="13.048913"
width="12.289355"
id="rect4029"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="108.81079"
height="13.048913"
width="12.289355"
id="rect4031"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4039"
width="66.138458"
height="20.173136"
x="132.82684"
y="106.50002"
rx="0"
ry="0" />
<rect
y="110.41915"
x="135.74582"
height="13.048913"
width="12.289355"
id="rect4043"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="152.22523"
height="13.048913"
width="12.289355"
id="rect4045"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="167.92082"
height="13.048913"
width="12.289355"
id="rect4047"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="183.81079"
height="13.048913"
width="12.289355"
id="rect4049"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4057"
width="66.138458"
height="20.173136"
x="207.68837"
y="106.50001"
rx="0"
ry="0" />
<rect
y="110.41914"
x="210.60738"
height="13.048913"
width="12.289355"
id="rect4061"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="227.08679"
height="13.048913"
width="12.289355"
id="rect4063"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="242.78239"
height="13.048913"
width="12.289355"
id="rect4065"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="258.67236"
height="13.048913"
width="12.289355"
id="rect4067"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
sodipodi:linespacing="100%"
id="text4235"
y="120.35841"
x="63.157913"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="63.157913"
id="tspan4239"
sodipodi:role="line">1</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4241"
y="120.35841"
x="79.664749"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="79.664749"
id="tspan4245"
sodipodi:role="line">2</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4247"
y="120.35841"
x="138.66475"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="138.66475"
id="tspan4249"
sodipodi:role="line">3</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4251"
y="120.35841"
x="155.15791"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="155.15791"
id="tspan4255"
sodipodi:role="line">4</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4257"
y="120.35841"
x="213.15791"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="213.15791"
id="tspan4261"
sodipodi:role="line">5</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4263"
y="120.35841"
x="230.05537"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="230.05537"
id="tspan4267"
sodipodi:role="line">6</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path4199"
d="M 166.81506,56.094428 L 270.59025,33.635433"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path4201"
d="M 313.75042,168.65175 L 287.7288,32.813649"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path4205"
d="M 95.236005,103.40321 L 132.8731,76.505927"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path4207"
d="M 150.45418,76.7899 L 163.90901,102.01447"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow1Mend);stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path4209"
d="M 166.44322,76.917363 L 237.36514,104.79421"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1;display:inline" />
<rect
inkscape:connector-avoid="true"
y="19.051414"
x="67.418739"
height="41.448586"
width="48.408092"
id="rect6363"
style="fill:#bc4343;fill-opacity:1;fill-rule:evenodd;stroke-linecap:butt" />
<rect
y="22.5"
x="71.314186"
height="16"
width="41"
id="rect7238"
style="fill:#2f11d0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-opacity:1" />
<rect
y="41"
x="71.326828"
height="16"
width="41"
id="rect8113"
style="fill:#2f11d0;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-linecap:butt;stroke-opacity:1" />
<text
sodipodi:linespacing="125%"
id="text8115"
y="33.925781"
x="80.026047"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#f3f1fc;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="33.925781"
x="80.026047"
id="tspan8119"
sodipodi:role="line">root</tspan></text>
<text
sodipodi:linespacing="125%"
id="text8121"
y="53.330078"
x="71.606125"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="53.330078"
x="71.606125"
id="tspan8125"
sodipodi:role="line">leaves</tspan></text>
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path8136"
d="M 115.82683,32.5 L 262.13796,25.069591"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-mid:none;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline" />
<path
sodipodi:nodetypes="ccccc"
id="path8161"
d="M 59.178273,44.5 L 48.82683,44.5 L 32.000003,44.117572 L 32.382432,121.88243 L 57.061974,121.88243"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Mstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cccc"
id="path8163"
d="M 67.591686,53.5 L 39.178596,53.882428 L 39.178596,112.5 L 49.413417,112.5"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path8165"
d="M 123.82683,111.96709 L 129.74528,111.96709"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path8167"
d="M 127.26868,121.5 L 132.8047,121.43255"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Sstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16837"
d="M 198.58401,112.09898 L 204.50246,112.09898"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16845"
d="M 202.29081,122.10712 L 207.82683,122.03967"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Sstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17012"
d="M 67.513213,126.5 L 67.513213,142.50596"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17014"
d="M 84.002562,126.68311 L 84.002562,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17016"
d="M 141.9494,126.68311 L 141.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17018"
d="M 158.9494,126.68311 L 158.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17020"
d="M 217.00256,126.68311 L 217.00256,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17022"
d="M 233.9494,126.68311 L 233.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<g
id="g20365">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Sstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
d="M 278.03854,122.2002 L 285.18878,122.12062 L 285.60419,149.01836 L 248.50601,178.72086 L 190.69269,178.13396 L 190.63125,236.42271 L 208.11212,236.65518"
id="path16847"
inkscape:connector-type="polyline"
sodipodi:nodetypes="ccccccc"
inkscape:export-filename="/afs/ms/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/btree.png"
inkscape:export-xdpi="99.956085"
inkscape:export-ydpi="99.956085" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;display:inline"
d="M 274.92516,112.44957 L 291.77186,112.56189 L 291.74379,151.04239 L 252.44916,183.91339 L 196.98622,184.38514 L 197.09474,229.30652 L 204.63097,228.96996"
id="path16839"
inkscape:connector-type="polyline"
sodipodi:nodetypes="ccccccc" />
</g>
<text
transform="scale(1.012408,0.987744)"
sodipodi:linespacing="125%"
id="text19428"
y="167.37177"
x="61.136925"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="167.37177"
x="61.136925"
id="tspan19430"
sodipodi:role="line">data</tspan></text>
<text
transform="scale(1.012408,0.987744)"
sodipodi:linespacing="125%"
id="text19432"
y="167.18213"
x="134.61267"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="167.18213"
x="134.61267"
id="tspan19434"
sodipodi:role="line">data</tspan></text>
<text
transform="scale(1.012408,0.987744)"
sodipodi:linespacing="125%"
id="text19436"
y="167.18213"
x="208.31079"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="167.18213"
x="208.31079"
id="tspan19438"
sodipodi:role="line">data</tspan></text>
<g
transform="translate(-20,8.99999)"
id="g19730">
<g
id="g18494"
transform="translate(-54.82678,107)">
<g
transform="matrix(1.031183,0,0,1.00426,312.935,-5.26198)"
id="g3979">
<rect
ry="0"
rx="0"
y="61.5"
x="43.400024"
height="20.087563"
width="64.138428"
id="rect3985"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<g
id="g3987"
transform="matrix(1.331757,0,0,1.545197,-14.39825,-32.81865)">
<rect
y="63.565441"
x="45.525562"
height="8.4089966"
width="8.9488745"
id="rect3989"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="63.565441"
x="57.525562"
height="8.4089966"
width="8.9488745"
id="rect3991"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="63.565441"
x="68.954796"
height="8.4089966"
width="8.9488745"
id="rect3993"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="63.565441"
x="80.525566"
height="8.4089966"
width="8.9488745"
id="rect3995"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.05112457px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<text
sodipodi:linespacing="100%"
id="text4269"
y="70.500008"
x="364.0195"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="70.500008"
x="364.0195"
id="tspan4273"
sodipodi:role="line">9</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4275"
y="70.500008"
x="376.56052"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="70.500008"
x="376.56052"
id="tspan4279"
sodipodi:role="line">11</tspan></text>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4075"
width="66.138458"
height="20.173136"
x="282.82678"
y="106.50002"
rx="0"
ry="0" />
<rect
y="110.41915"
x="285.74576"
height="13.048913"
width="12.289355"
id="rect4079"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="302.22519"
height="13.048913"
width="12.289355"
id="rect4081"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="317.92078"
height="13.048913"
width="12.289355"
id="rect4083"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="333.81076"
height="13.048913"
width="12.289355"
id="rect4085"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4093"
width="66.138458"
height="20.173136"
x="357.82678"
y="106.50001"
rx="0"
ry="0" />
<rect
y="110.41914"
x="360.74576"
height="13.048913"
width="12.289355"
id="rect4097"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="377.22519"
height="13.048913"
width="12.289355"
id="rect4099"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="392.92078"
height="13.048913"
width="12.289355"
id="rect4101"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41914"
x="408.81076"
height="13.048913"
width="12.289355"
id="rect4103"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
transform="scale(0.940731,1.063004)"
id="text4107"
y="133.8269"
x="480.65097"
style="font-size:16.04729843px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="133.8269"
x="480.65097"
id="tspan4109"
sodipodi:role="line">3</tspan></text>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect4111"
width="66.138458"
height="20.173136"
x="432.68835"
y="106.50002"
rx="0"
ry="0" />
<rect
y="110.41915"
x="435.60736"
height="13.048913"
width="12.289355"
id="rect4115"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="452.08679"
height="13.048913"
width="12.289355"
id="rect4117"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="467.78238"
height="13.048913"
width="12.289355"
id="rect4119"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="110.41915"
x="483.67236"
height="13.048913"
width="12.289355"
id="rect4121"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
sodipodi:linespacing="100%"
id="text4281"
y="120.50001"
x="289.15793"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.50001"
x="289.15793"
id="tspan4283"
sodipodi:role="line">7</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4285"
y="120.50001"
x="305.15793"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.50001"
x="305.15793"
id="tspan4289"
sodipodi:role="line">8</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4291"
y="120.35841"
x="363.3093"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="363.3093"
id="tspan4293"
sodipodi:role="line">9</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4295"
y="120.35841"
x="376.39426"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.35841"
x="376.39426"
id="tspan4299"
sodipodi:role="line">10</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4301"
y="120.79005"
x="434.69894"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.79005"
x="434.69894"
id="tspan4303"
sodipodi:role="line">11</tspan></text>
<text
sodipodi:linespacing="100%"
id="text4305"
y="120.50001"
x="451.69894"
style="font-size:10px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:start;line-height:100%;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="120.50001"
x="451.69894"
id="tspan4309"
sodipodi:role="line">12</tspan></text>
<path
inkscape:connector-type="polyline"
id="path4211"
d="M 357.93986,76.545525 L 318.93496,104.09302"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1;display:inline"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-type="polyline"
id="path4213"
d="M 375.78809,76.917363 L 388.88514,102.66563"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1;display:inline"
sodipodi:nodetypes="cc" />
<path
inkscape:connector-type="polyline"
id="path4215"
d="M 392.52081,76.545525 L 462.36629,104.79421"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Mend);stroke-opacity:1;display:inline"
sodipodi:nodetypes="cc"
inkscape:export-filename="/afs/ms/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/btree.png"
inkscape:export-xdpi="99.956085"
inkscape:export-ydpi="99.956085" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16841"
d="M 348.58401,112.09898 L 354.50246,112.09898"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16843"
d="M 423.58401,112.92024 L 429.50246,112.92024"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16849"
d="M 352.29081,121.10712 L 357.82683,121.03967"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Sstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
inkscape:connector-type="polyline"
id="path16851"
d="M 427.15077,121.92803 L 432.68679,121.86058"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow2Sstart);marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17024"
d="M 291.9494,126.68311 L 291.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17026"
d="M 308.9494,126.68311 L 308.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17028"
d="M 366.9494,126.68311 L 366.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17030"
d="M 384.40415,126.68311 L 384.40415,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17032"
d="M 441.9494,126.68311 L 441.9494,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
inkscape:connector-type="polyline"
id="path17034"
d="M 459.00256,126.68311 L 459.00256,142.68907"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;marker-end:url(#Arrow2Send);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<text
xml:space="preserve"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="228.44833"
y="275.5098"
id="text19440"
sodipodi:linespacing="125%"
transform="scale(1.012408,0.987744)"><tspan
sodipodi:role="line"
id="tspan19442"
x="228.44833"
y="275.5098">data</tspan></text>
<text
xml:space="preserve"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="302.14648"
y="275.69943"
id="text19444"
sodipodi:linespacing="125%"
transform="scale(1.012408,0.987744)"><tspan
sodipodi:role="line"
id="tspan19446"
x="302.14648"
y="275.69943">data</tspan></text>
<text
xml:space="preserve"
style="font-size:12.8364296px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="376.60995"
y="275.69943"
id="text19448"
sodipodi:linespacing="125%"
transform="scale(1.012408,0.987744)"><tspan
sodipodi:role="line"
id="tspan19450"
x="376.60995"
y="275.69943">data</tspan></text>
</g>
</g>
</g>
</svg>
/design/trunk/src/images/buddy_alloc.svg
0,0 → 1,530
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/home/segabond/HelenOS/HelenOS-doc/design/src/images/mm1.png"
sodipodi:docname="buddy_alloc.svg"
sodipodi:docbase="/tmp/bonds0am/HelenOS-doc/design/trunk/src/images.vector"
inkscape:version="0.43"
sodipodi:version="0.32"
id="svg2"
height="841.88977pt"
width="595.27557pt"
version="1.0">
<defs
id="defs4" />
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="943"
inkscape:window-width="1272"
showguides="true"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="627.68033"
inkscape:cx="-297.79531"
inkscape:zoom="0.35355339"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
ry="0"
y="284.36218"
x="233"
height="3"
width="0"
id="rect3922"
style="fill:#ffffff;fill-opacity:1" />
<g
id="g2453"
transform="matrix(1.336359,0,0,1.336359,-176.02,-187.3751)">
<g
id="g4774">
<rect
y="141.70967"
x="133.84521"
height="162.65251"
width="130.30968"
id="rect2201"
style="fill:#a3a3a3;fill-opacity:1" />
<text
id="text2203"
y="157.36703"
x="151.01781"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="157.36703"
x="151.01781"
id="tspan2205"
sodipodi:role="line">buddy_system_t</tspan></text>
<g
transform="translate(1.911118,0)"
id="g2215">
<rect
rx="0"
ry="5.1933813"
style="fill:#1e1d70;fill-opacity:1"
id="rect2207"
width="81.317284"
height="15.152285"
x="158.08888"
y="166.96347" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="167.68532"
y="177.57007"
id="text2211"><tspan
sodipodi:role="line"
id="tspan2213"
x="167.68532"
y="177.57007">max_order</tspan></text>
</g>
<rect
style="fill:#1e1d70;fill-opacity:1"
id="rect2222"
width="81.317284"
height="15.152285"
x="160"
y="185.14621"
ry="5.1933813"
rx="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="193.59644"
y="195.75281"
id="text2224"><tspan
sodipodi:role="line"
id="tspan2226"
x="193.59644"
y="195.75281">...</tspan></text>
<rect
y="274.78836"
x="160"
height="15.152285"
width="81.317284"
id="rect2230"
style="fill:#1e1d70;fill-opacity:1"
ry="5.1933813"
rx="0" />
<text
id="text2232"
y="285.39496"
x="193.59644"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="285.39496"
x="193.59644"
id="tspan2234"
sodipodi:role="line">0</tspan></text>
<rect
style="fill:#1e1d70;fill-opacity:1"
id="rect2238"
width="81.317284"
height="15.152285"
x="160"
y="203.36218"
ry="5.1933813"
rx="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="193.59644"
y="213.96878"
id="text2240"><tspan
sodipodi:role="line"
id="tspan2242"
x="193.59644"
y="213.96878">4</tspan></text>
<rect
y="256.54468"
x="160"
height="15.152285"
width="81.317284"
id="rect2246"
style="fill:#1e1d70;fill-opacity:1" />
<text
id="text2248"
y="267.15128"
x="193.59644"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="267.15128"
x="193.59644"
id="tspan2250"
sodipodi:role="line">1</tspan></text>
<rect
style="fill:#1e1d70;fill-opacity:1"
id="rect2254"
width="81.317284"
height="15.152285"
x="160"
y="221.2099"
ry="5.1933813"
rx="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="193.59644"
y="231.8165"
id="text2256"><tspan
sodipodi:role="line"
id="tspan2258"
x="193.59644"
y="231.8165">3</tspan></text>
<rect
y="238.34171"
x="160"
height="15.152285"
width="81.317284"
id="rect2262"
style="fill:#1e1d70;fill-opacity:1" />
<text
id="text2264"
y="248.9483"
x="193.59644"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="248.9483"
x="193.59644"
id="tspan2266"
sodipodi:role="line">2</tspan></text>
</g>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3093"
width="45.411697"
height="14"
x="269.58832"
y="256.36218"
rx="0"
ry="0" />
<rect
ry="0"
rx="0"
y="276.36218"
x="269.99994"
height="14"
width="40.999992"
id="rect2153"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3061"
width="40.999992"
height="14"
x="319.99994"
y="276.36218"
rx="0"
ry="0" />
<rect
ry="0"
rx="0"
y="276.36218"
x="369.99997"
height="14"
width="40.999992"
id="rect3069"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3077"
width="40.999992"
height="14"
x="417.99997"
y="276.36218"
rx="0"
ry="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="466.83984"
y="286.36218"
id="text3083"><tspan
sodipodi:role="line"
x="466.83984"
y="286.36218"
id="tspan3087">...</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 310.99994,283.36218 L 319.99995,283.36218"
id="path3099"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 360.99994,283.36218 L 369.99996,283.36218"
id="path3101"
inkscape:connector-type="polyline" />
<rect
ry="0"
rx="0"
y="256.36218"
x="316"
height="14"
width="44.999943"
id="rect3132"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3140"
width="44"
height="14"
x="369.99969"
y="256.36218"
rx="0"
ry="0" />
<rect
ry="0"
rx="0"
y="256.36218"
x="414.50046"
height="14"
width="44.499443"
id="rect3148"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3156"
width="40.999992"
height="14"
x="487.99997"
y="256.36218"
rx="0"
ry="0" />
<g
id="g3162"
transform="matrix(0.931818,0,0,1,278.4091,-18)">
<rect
ry="0"
rx="0"
y="274.36218"
x="270"
height="14"
width="44"
id="rect3164"
style="opacity:1;fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text3166"
y="283.32547"
x="273.81436"
style="font-size:8.63597393px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3168"
y="283.32547"
x="273.81436"
sodipodi:role="line">frame_t</tspan></text>
</g>
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3172"
width="40.999992"
height="14"
x="529.99994"
y="256.36218"
rx="0"
ry="0" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 289.58997,256.80314 L 289.58997,242.36218 L 390,242.36218 L 390,256.6085"
id="path3180"
sodipodi:nodetypes="cccc" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 396.4546,256.36218 L 396.4117,242.59728 L 504.20585,242.59728 L 504.20585,256.3119"
id="path3182"
sodipodi:nodetypes="cccc" />
<path
sodipodi:nodetypes="cccc"
id="path3208"
d="M 289.21411,168.30314 L 289.21411,153.86218 L 432.28755,153.86218 L 432.28755,168.1085"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.19368839px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3194"
width="40.999992"
height="14"
x="269"
y="167.86218"
rx="0"
ry="0" />
<rect
ry="0"
rx="0"
y="167.86218"
x="327.46799"
height="14"
width="40.999992"
id="rect3202"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<path
id="path3214"
d="M 286.54431,182.36218 C 320,201.36218 350,181.81916 350,181.81916"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="314.33417"
y="204.43457"
id="text3216"><tspan
sodipodi:role="line"
id="tspan3218"
x="314.33417"
y="204.43457">2</tspan></text>
<text
xml:space="preserve"
style="font-size:6.955163px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="322.71967"
y="196.64647"
id="text3220"><tspan
sodipodi:role="line"
id="tspan3222"
x="322.71967"
y="196.64647">i</tspan></text>
<text
id="text3224"
y="178.85046"
x="312.83984"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="178.85046"
x="312.83984"
id="tspan3226"
sodipodi:role="line">...</tspan></text>
<text
id="text3228"
y="218.36218"
x="312.83984"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="218.36218"
x="312.83984"
id="tspan3230"
sodipodi:role="line">...</tspan></text>
<rect
ry="0"
rx="0"
y="167.78978"
x="413.00003"
height="14"
width="40.999992"
id="rect3260"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3268"
width="40.999992"
height="14"
x="471.46796"
y="167.78978"
rx="0"
ry="0" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 430.54431,182.28979 C 464,201.28979 494,181.74677 494,181.74677"
id="path3274" />
<text
id="text3278"
y="204.36218"
x="458.33417"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="204.36218"
x="458.33417"
id="tspan3280"
sodipodi:role="line">2</tspan></text>
<text
id="text3282"
y="196.57408"
x="466.71967"
style="font-size:6.955163px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="196.57408"
x="466.71967"
id="tspan3284"
sodipodi:role="line">i</tspan></text>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="456.83984"
y="178.77808"
id="text3286"><tspan
sodipodi:role="line"
id="tspan3288"
x="456.83984"
y="178.77808">...</tspan></text>
<text
xml:space="preserve"
style="font-size:9.83645821px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="316.17401"
y="218.81308"
id="text3290"
transform="scale(1.219951,0.819705)"><tspan
sodipodi:role="line"
id="tspan3292"
x="316.17401"
y="218.81308">...</tspan></text>
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 410.67234,283.3036 L 417.99997,283.31903"
id="path3336"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 241,262.36218 L 269.58832,262.91952"
id="path3342"
inkscape:connector-type="polyline" />
<rect
ry="0"
rx="0"
y="276.36218"
x="487.99997"
height="14"
width="40.999992"
id="rect3361"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 458.99996,283.36218 L 487.99997,283.36218"
id="path3367"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 241,282.36218 L 269.99994,282.94804"
id="path3371"
inkscape:connector-type="polyline" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline"
d="M 240.84543,174.61438 L 269.66454,174.20268"
id="path3373"
inkscape:connector-type="polyline" />
</g>
</g>
</svg>
/design/trunk/src/images/fifo.svg
0,0 → 1,505
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/afs/ms.mff.cuni.cz/u/j/jermj0bm/BIG/HelenOS-doc/design/src/images/btree.png"
sodipodi:docname="fifo.svg"
sodipodi:docbase="/tmp/bonds0am/HelenOS-doc/design/trunk/src/images.vector"
inkscape:version="0.43"
sodipodi:version="0.32"
id="svg2"
height="841.88977pt"
width="595.27557pt"
version="1.0">
<defs
id="defs4">
<marker
inkscape:stockid="Arrow1Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mend"
style="overflow:visible">
<path
id="path15932"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path15941"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path15935"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Sstart"
style="overflow:visible">
<path
id="path15911"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.3,0,0,0.3,-1.5,0)" />
</marker>
<marker
inkscape:stockid="TriangleInM"
orient="auto"
refY="0"
refX="0"
id="TriangleInM"
style="overflow:visible">
<path
id="path15846"
d="M 5.77,0 L -2.88,5 L -2.88,-5 L 5.77,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(-0.4,-0.4)" />
</marker>
<marker
inkscape:stockid="Arrow2Send"
orient="auto"
refY="0"
refX="0"
id="Arrow2Send"
style="overflow:visible">
<path
id="path15908"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.3,0,0,-0.3,1.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mstart"
style="overflow:visible">
<path
id="path15917"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(0.6,0,0,0.6,-3,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path15920"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow2Mend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Mend"
style="overflow:visible">
<path
id="path15914"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-0.6,0,0,-0.6,3,0)" />
</marker>
</defs>
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="943"
inkscape:window-width="1272"
showguides="true"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="388.18254"
inkscape:cx="70.653498"
inkscape:zoom="0.5"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base"
showborder="true"
inkscape:showpageshadow="false" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<g
id="g4072"
transform="matrix(1.422759,0,0,1.422759,-183.227,-42.40769)">
<rect
style="fill:#ffffff;fill-opacity:1"
id="rect3922"
width="0"
height="3"
x="203.44992"
y="270.4747"
ry="0" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4"
id="rect3093"
width="378.13843"
height="20.173136"
x="133"
y="49.612518"
rx="0"
ry="0" />
<g
transform="translate(35.13844,-33)"
id="g2837">
<g
id="g2819">
<rect
y="86.531647"
x="100.78057"
height="13.048913"
width="12.289355"
id="rect3792"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.531647"
x="117.26"
height="13.048913"
width="12.289355"
id="rect3794"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.379738"
x="133.76721"
height="13.048913"
width="12.289355"
id="rect3796"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.379738"
x="149.94342"
height="13.048913"
width="12.289355"
id="rect2817"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
<g
id="g2827"
transform="translate(64.98665,-5.960464e-8)">
<rect
y="86.531647"
x="100.78057"
height="13.048913"
width="12.289355"
id="rect2829"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.531647"
x="117.26"
height="13.048913"
width="12.289355"
id="rect2831"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.379738"
x="133.76721"
height="13.048913"
width="12.289355"
id="rect2833"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="86.379738"
x="149.94342"
height="13.048913"
width="12.289355"
id="rect2835"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
<g
transform="translate(165.1518,-33)"
id="g2851">
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2853"
width="12.289355"
height="13.048913"
x="100.78057"
y="86.531647" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2855"
width="12.289355"
height="13.048913"
x="117.26"
y="86.531647" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2857"
width="12.289355"
height="13.048913"
x="133.76721"
y="86.379738" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2859"
width="12.289355"
height="13.048913"
x="149.94342"
y="86.379738" />
</g>
<g
transform="translate(296.125,-33)"
id="g2873">
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2875"
width="12.289355"
height="13.048913"
x="100.78057"
y="86.531647" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2877"
width="12.289355"
height="13.048913"
x="117.26"
y="86.531647" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2879"
width="12.289355"
height="13.048913"
x="133.76721"
y="86.379738" />
<rect
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
id="rect2881"
width="12.289355"
height="13.048913"
x="149.94342"
y="86.379738" />
</g>
<rect
y="53.531647"
x="461.8923"
height="13.048913"
width="12.289355"
id="rect2885"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="53.531647"
x="478.37173"
height="13.048913"
width="12.289355"
id="rect2887"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<rect
y="53.379738"
x="494.87894"
height="13.048913"
width="12.289355"
id="rect2889"
style="fill:#0000ff;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1.53443897px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path3130"
d="M 321.81702,91.711442 C 321.90108,101.46419 321.90108,108.1734 321.90108,108.1734"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
sodipodi:nodetypes="cc"
id="path3984"
d="M 402.81702,91.711442 C 402.90108,101.46419 402.90108,108.1734 402.90108,108.1734"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:2.19784665;stroke-linecap:butt;stroke-linejoin:miter;marker-start:url(#Arrow1Mstart);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<text
id="text3986"
y="97.442596"
x="413.91016"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3990"
y="97.442596"
x="413.91016"
sodipodi:role="line">head</tspan></text>
<text
id="text3992"
y="97.729706"
x="290.39258"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="97.729706"
x="290.39258"
id="tspan3994"
sodipodi:role="line">tail</tspan><tspan
id="tspan3996"
y="112.72971"
x="290.39258"
sodipodi:role="line" /></text>
<text
id="text3998"
y="43.612518"
x="398.68164"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.612518"
x="398.68164"
id="tspan4000"
sodipodi:role="line">1</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4004"
y="43.360565"
x="415.68164"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.360565"
x="415.68164"
id="tspan4008"
sodipodi:role="line">2</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4010"
y="43.612518"
x="432.12109"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.612518"
x="432.12109"
id="tspan4014"
sodipodi:role="line">3</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4016"
y="43.442596"
x="448.08594"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.442596"
x="448.08594"
id="tspan4020"
sodipodi:role="line">4</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4022"
y="43.360565"
x="464.41406"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.360565"
x="464.41406"
id="tspan4026"
sodipodi:role="line">5</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4028"
y="43.360565"
x="480.41406"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.360565"
x="480.41406"
id="tspan4032"
sodipodi:role="line">6</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4034"
y="43.442596"
x="496.58118"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.442596"
x="496.58118"
id="tspan4038"
sodipodi:role="line">7</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4040"
y="43.360565"
x="139.01562"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.360565"
x="139.01562"
id="tspan4044"
sodipodi:role="line">8</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4046"
y="43.442596"
x="154.75972"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.442596"
x="154.75972"
id="tspan4050"
sodipodi:role="line">9</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4052"
y="43.518768"
x="167.68164"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.518768"
x="167.68164"
id="tspan4056"
sodipodi:role="line">10</tspan></text>
<text
sodipodi:linespacing="125%"
id="text4064"
y="43.612518"
x="185.7168"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.612518"
x="185.7168"
id="tspan4070"
sodipodi:role="line">...</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/frame_alloc.svg
0,0 → 1,397
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
inkscape:export-ydpi="99.956085"
inkscape:export-xdpi="99.956085"
inkscape:export-filename="/home/segabond/HelenOS/HelenOS-doc/design/src/images/frame_alloc.png"
sodipodi:docname="frame_alloc.svg"
sodipodi:docbase="/tmp/bonds0am/HelenOS-doc/design/trunk/src/images.vector"
inkscape:version="0.43"
sodipodi:version="0.32"
id="svg2"
height="841.88977pt"
width="595.27557pt"
version="1.0">
<defs
id="defs4" />
<sodipodi:namedview
inkscape:window-y="0"
inkscape:window-x="0"
inkscape:window-height="943"
inkscape:window-width="1272"
showguides="true"
showgrid="true"
inkscape:current-layer="layer1"
inkscape:document-units="px"
inkscape:cy="701.7251"
inkscape:cx="260.84924"
inkscape:zoom="1"
inkscape:pageshadow="2"
inkscape:pageopacity="0.0"
borderopacity="1.0"
bordercolor="#666666"
pagecolor="#ffffff"
id="base" />
<metadata
id="metadata7">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
id="layer1"
inkscape:groupmode="layer"
inkscape:label="Layer 1">
<rect
ry="0"
y="284.36218"
x="233"
height="3"
width="0"
id="rect3922"
style="fill:#ffffff;fill-opacity:1" />
<g
id="g2060"
transform="matrix(1.719384,0,0,1.719384,-11.02496,-74.62649)">
<path
id="path3486"
d="M 23.466991,91.862357 C 147,214.36218 147,214.36218 147,214.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" />
<rect
style="fill:#a3a3a3;fill-opacity:1"
id="rect2201"
width="109.42462"
height="119"
x="7.5753789"
y="135.36218" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="41.172607"
y="149.01955"
id="text2203"><tspan
sodipodi:role="line"
id="tspan2205"
x="41.172607"
y="149.01955">zone_t</tspan></text>
<rect
rx="0"
ry="5.3005772"
style="fill:#1e1d70;fill-opacity:1"
id="rect2207"
width="81.317284"
height="15.152285"
x="20.1548"
y="158.61598" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="25.751236"
y="169.22258"
id="text2211"><tspan
sodipodi:role="line"
id="tspan2213"
x="25.751236"
y="169.22258">base</tspan></text>
<g
transform="translate(-20,0)"
id="g2343">
<rect
style="fill:#1e1d70;fill-opacity:1"
id="rect2222"
width="81.317284"
height="15.152285"
x="40.1548"
y="176.79872"
ry="5.3005772"
rx="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="41.751236"
y="187.40532"
id="text2224"><tspan
sodipodi:role="line"
id="tspan2226"
x="41.751236"
y="187.40532">free_frames</tspan></text>
</g>
<rect
rx="0"
ry="5.3005772"
y="195.01469"
x="20.1548"
height="15.152285"
width="81.317284"
id="rect2238"
style="fill:#1e1d70;fill-opacity:1" />
<text
id="text2240"
y="205.62129"
x="21.751236"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="205.62129"
x="21.751236"
id="tspan2242"
sodipodi:role="line">busy_frames</tspan></text>
<g
transform="translate(-19.1548,-0.500229)"
id="g2314">
<rect
style="fill:#1e1d70;fill-opacity:1"
id="rect2254"
width="81.317284"
height="15.152285"
x="40.1548"
y="212.86241"
ry="5.3005772"
rx="0" />
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="41.751236"
y="223.46901"
id="text2256"><tspan
sodipodi:role="line"
id="tspan2258"
x="41.751236"
y="223.46901">frames</tspan></text>
</g>
<g
id="g2319">
<g
transform="translate(-304,-62)"
id="g3327">
<rect
ry="0"
rx="0"
y="276.36218"
x="449.99997"
height="14"
width="40.999992"
id="rect3077"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text3079"
y="275.42673"
x="469.85483"
style="font-size:8.33636761px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"
transform="scale(0.965307,1.03594)"><tspan
id="tspan3081"
y="275.42673"
x="469.85483"
sodipodi:role="line">frame_t</tspan></text>
</g>
<g
transform="translate(-262,-62)"
id="g2253">
<rect
ry="0"
rx="0"
y="276.36218"
x="449.99997"
height="14"
width="40.999992"
id="rect2255"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text2257"
y="275.42673"
x="469.85483"
style="font-size:8.33636761px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"
transform="scale(0.965307,1.03594)"><tspan
id="tspan2259"
y="275.42673"
x="469.85483"
sodipodi:role="line">frame_t</tspan></text>
</g>
<g
transform="translate(-220,-62)"
id="g2269">
<rect
ry="0"
rx="0"
y="276.36218"
x="449.99997"
height="14"
width="40.999992"
id="rect2271"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text2273"
y="275.42673"
x="469.85483"
style="font-size:8.33636761px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"
transform="scale(0.965307,1.03594)"><tspan
id="tspan2275"
y="275.42673"
x="469.85483"
sodipodi:role="line">frame_t</tspan></text>
</g>
<g
transform="translate(-163,-62)"
id="g2285">
<rect
ry="0"
rx="0"
y="276.36218"
x="449.99997"
height="14"
width="40.999992"
id="rect2287"
style="fill:#bc4343;fill-opacity:1;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" />
<text
id="text2289"
y="275.42673"
x="469.85483"
style="font-size:8.33636761px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"
transform="scale(0.965307,1.03594)"><tspan
id="tspan2291"
y="275.42673"
x="469.85483"
sodipodi:role="line">frame_t</tspan></text>
</g>
<text
xml:space="preserve"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
x="272.71555"
y="227.01964"
id="text2293"><tspan
sodipodi:role="line"
id="tspan2295"
x="272.71555"
y="227.01964">...</tspan></text>
</g>
<path
inkscape:connection-start="#g2314"
inkscape:connection-end="#g3327"
inkscape:connector-type="polyline"
id="path2297"
d="M 102.31728,220.49051 L 145.99997,221.08377"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" />
<rect
rx="0"
ry="5.3005772"
y="230.2099"
x="20"
height="15.152285"
width="81.317284"
id="rect2350"
style="fill:#1e1d70;fill-opacity:1" />
<text
id="text2352"
y="239.83635"
x="21.7136"
style="font-size:10.7099371px;font-style:normal;font-weight:normal;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="239.83635"
x="21.7136"
id="tspan2354"
sodipodi:role="line">buddy_system</tspan></text>
<text
id="text3444"
y="53.532104"
x="24.964844"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="53.532104"
x="24.964844"
id="tspan3446"
sodipodi:role="line">physical memory</tspan></text>
<rect
y="58.792347"
x="22.894783"
height="34.217697"
width="80.790855"
id="rect3454"
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke:#000000;stroke-width:0.7042774;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.40855471, 0.70427735;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="58.900604"
x="102.00406"
height="34.217697"
width="38.752056"
id="rect3456"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.4877643;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.97552856, 0.48776428;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="58.756367"
x="139.42778"
height="34.217697"
width="98.14444"
id="rect3458"
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke:#000000;stroke-width:0.7762391;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.55247807, 0.77623903;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="58.900604"
x="237.24388"
height="34.217697"
width="38.752056"
id="rect3460"
style="opacity:1;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.4877643;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:0.97552856, 0.48776428;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="58.855751"
x="276.34186"
height="34.217697"
width="54.316319"
id="rect3462"
style="opacity:1;fill:#a3a3a3;fill-opacity:1;stroke:#000000;stroke-width:0.5774678;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:1.15493561, 0.5774678;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text3468"
y="77.394295"
x="45.757385"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.394295"
x="45.757385"
id="tspan3470"
sodipodi:role="line">zone</tspan></text>
<text
id="text3472"
y="77.68898"
x="174.26894"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.68898"
x="174.26894"
id="tspan3474"
sodipodi:role="line">zone</tspan></text>
<text
id="text3476"
y="77.277275"
x="290.1326"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="77.277275"
x="290.1326"
id="tspan3478"
sodipodi:role="line">zone</tspan></text>
<path
id="path3488"
d="M 102,92.362183 C 327,214.36218 327,214.36218 327,214.36218"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:1, 1;stroke-dashoffset:0;stroke-opacity:1" />
<path
id="path3642"
d="M 100.45878,238.4066 C 169.49641,238.4066 169.49641,238.4066 169.49641,238.4066 L 169.49641,238.4066 L 169.49641,228.38373 L 169.49641,228.38373"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.95797735px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
<path
id="path3644"
d="M 101.00172,242.39293 L 245.49828,242.39293 L 245.04748,228.3154 L 245.04748,228.3154"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.97043198px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
</g>
</g>
</svg>
/design/trunk/src/images/slab_alloc.svg
0,0 → 1,1329
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://web.resource.org/cc/"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
width="595.27557pt"
height="841.88977pt"
id="svg2247"
sodipodi:version="0.32"
inkscape:version="0.43"
version="1.0"
sodipodi:docbase="/tmp/bonds0am/HelenOS-doc/design/trunk/src/images.vector"
sodipodi:docname="slab_alloc.svg"
inkscape:export-filename="/afs/labts.troja.mff.cuni.cz/homes/jermj0bm/HelenOS-doc/design/src/images/slab_alloc.png"
inkscape:export-xdpi="157.50999"
inkscape:export-ydpi="157.50999">
<defs
id="defs2249">
<marker
inkscape:stockid="Arrow2Lend"
orient="auto"
refY="0"
refX="0"
id="Arrow2Lend"
style="overflow:visible">
<path
id="path3433"
style="font-size:12px;fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.97309,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
transform="matrix(-1.1,0,0,-1.1,5.5,0)" />
</marker>
<marker
inkscape:stockid="Arrow1Mstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Mstart"
style="overflow:visible">
<path
id="path3319"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.4,0.4)" />
</marker>
<marker
inkscape:stockid="Arrow1Lstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Lstart"
style="overflow:visible">
<path
id="path3325"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.8,0.8)" />
</marker>
<marker
inkscape:stockid="Arrow1Sstart"
orient="auto"
refY="0"
refX="0"
id="Arrow1Sstart"
style="overflow:visible">
<path
id="path3313"
d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z "
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none"
transform="scale(0.2,0.2)" />
</marker>
</defs>
<sodipodi:namedview
id="base"
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1.0"
inkscape:pageopacity="0.0"
inkscape:pageshadow="2"
inkscape:zoom="0.25"
inkscape:cx="-538.45681"
inkscape:cy="141.82979"
inkscape:document-units="px"
inkscape:current-layer="layer1"
showgrid="true"
showguides="true"
inkscape:guide-bbox="true"
inkscape:window-width="1272"
inkscape:window-height="940"
inkscape:window-x="0"
inkscape:window-y="25">
<sodipodi:guide
orientation="vertical"
position="15.152288"
id="guide2269" />
</sodipodi:namedview>
<metadata
id="metadata2252">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
</cc:Work>
</rdf:RDF>
</metadata>
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1">
<g
id="g4740"
transform="matrix(1.789563,0,0,1.789563,-11.7663,-16.31601)">
<rect
y="22"
x="15.152288"
height="241"
width="42"
id="rect3146"
style="opacity:1;fill:#a3a3a3;fill-opacity:0.94117647;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
transform="matrix(1.626303e-19,-1,1,1.626303e-19,0,0)"
id="text3338"
y="28.503906"
x="-146.17773"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="28.503906"
x="-146.17773"
id="tspan3340"
sodipodi:role="line">Magazine Layer</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
id="text3342"
y="39.117188"
x="-253.26953"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="39.117188"
x="-253.26953"
id="tspan3344"
sodipodi:role="line">Slab Layer</tspan></text>
<text
transform="matrix(-1.867538e-17,-1,1,-1.867538e-17,0,0)"
id="text3346"
y="48.236824"
x="-173.81024"
style="font-size:9.52507591px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
id="tspan3400"
y="48.236824"
x="-173.81024"
sodipodi:role="line">Common layer</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
id="text3350"
y="49.503906"
x="-88.722656"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="49.503906"
x="-88.722656"
id="tspan3352"
sodipodi:role="line">CPU Layer</tspan></text>
<path
id="path3354"
d="M 35,20.914606 C 35,180.25289 35,180.25289 35,180.25289"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path3356"
d="M 15.152288,180 C 57,180 56.568543,180 56.568543,180"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path3360"
d="M 35.237022,99.474516 C 57.591673,99.474516 57.591673,99.474516 57.591673,99.474516"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
y="24.474579"
x="74"
height="54.525421"
width="46.04369"
id="rect3336"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text3362"
y="33.194035"
x="80.344711"
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="33.194035"
x="80.344711"
id="tspan3364"
sodipodi:role="line">CPU0 cache </tspan></text>
<text
sodipodi:linespacing="125%"
id="text3366"
y="38.663589"
x="77.194489"
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="38.663589"
x="77.194489"
id="tspan2092"
sodipodi:role="line">current</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3370"
y="38.932865"
x="100.5347"
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="38.932865"
x="100.5347"
id="tspan2094"
sodipodi:role="line">last</tspan></text>
<g
id="g3102">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7949"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7953"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3390"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7947"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7951"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect7955"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
id="g3094">
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1563"
width="15.904104"
height="5.1382489"
x="77.306519"
y="45.564636" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1565"
width="15.904104"
height="5.1382489"
x="77.306519"
y="50.523357" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1567"
width="15.904104"
height="5.1382489"
x="77.309441"
y="55.180214" />
<rect
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1569"
width="15.904104"
height="5.1382489"
x="77.306519"
y="59.97953" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1571"
width="15.904104"
height="5.1382489"
x="77.306519"
y="64.636391" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect1573"
width="15.904104"
height="5.1382489"
x="77.306519"
y="69.666344" />
</g>
<text
id="text1633"
y="43.43259"
x="100.84136"
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.43259"
x="100.84136"
id="tspan1635"
sodipodi:role="line">[full]</tspan></text>
<rect
transform="scale(1,-1)"
y="-100.49511"
x="61"
height="2.0254474"
width="268"
id="rect1786"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
transform="scale(1,-1)"
y="-179.84258"
x="60.817307"
height="2.0254474"
width="268"
id="rect1840"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
transform="scale(1,-1)"
y="-260.59644"
x="61"
height="2.0254474"
width="268"
id="rect1842"
style="opacity:1;fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="25"
x="126.54958"
height="54.525421"
width="46.04369"
id="rect2781"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2783"
y="33.719456"
x="132.89429"
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="33.719456"
x="132.89429"
id="tspan2785"
sodipodi:role="line">CPU1 cache </tspan></text>
<text
sodipodi:linespacing="125%"
id="text2787"
y="39.189011"
x="129.74406"
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="39.189011"
x="129.74406"
id="tspan2096"
sodipodi:role="line">current</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2791"
y="39.602051"
x="153.56203"
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="39.602051"
x="153.56203"
id="tspan2102"
sodipodi:role="line">last</tspan></text>
<rect
y="55.446922"
x="152.77679"
height="5.1382489"
width="15.904104"
id="rect2795"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="64.903099"
x="152.77388"
height="5.1382489"
width="15.904104"
id="rect2797"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="45.831341"
x="152.77388"
height="5.1382489"
width="15.904104"
id="rect2799"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="50.790062"
x="152.77388"
height="5.1382489"
width="15.904104"
id="rect2801"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.246239"
x="152.77388"
height="5.1382489"
width="15.904104"
id="rect2803"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="69.933052"
x="152.77388"
height="5.1382489"
width="15.904104"
id="rect2805"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="46.090057"
x="129.85609"
height="5.1382489"
width="15.904104"
id="rect2807"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="51.048779"
x="129.85609"
height="5.1382489"
width="15.904104"
id="rect2809"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="55.705635"
x="129.85902"
height="5.1382489"
width="15.904104"
id="rect2811"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.504951"
x="129.85609"
height="5.1382489"
width="15.904104"
id="rect2813"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="65.161812"
x="129.85609"
height="5.1382489"
width="15.904104"
id="rect2815"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="70.191765"
x="129.85609"
height="5.1382489"
width="15.904104"
id="rect2817"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2823"
y="43.502674"
x="154.11375"
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.502674"
x="154.11375"
id="tspan2825"
sodipodi:role="line">[empty]</tspan></text>
<rect
y="25"
x="179"
height="54.525421"
width="46.04369"
id="rect2829"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2831"
y="33.719456"
x="185.34471"
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="33.719456"
x="185.34471"
id="tspan2833"
sodipodi:role="line">CPU2 cache </tspan></text>
<text
sodipodi:linespacing="125%"
id="text2835"
y="39.189011"
x="182.19449"
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="39.189011"
x="182.19449"
id="tspan2098"
sodipodi:role="line">current</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2839"
y="38.932865"
x="206.55322"
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="38.932865"
x="206.55322"
id="tspan2100"
sodipodi:role="line">last</tspan></text>
<rect
y="55.446922"
x="205.22722"
height="5.1382489"
width="15.904104"
id="rect2843"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="64.903099"
x="205.2243"
height="5.1382489"
width="15.904104"
id="rect2845"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="45.831341"
x="205.2243"
height="5.1382489"
width="15.904104"
id="rect2847"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="50.790062"
x="205.2243"
height="5.1382489"
width="15.904104"
id="rect2849"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.246239"
x="205.2243"
height="5.1382489"
width="15.904104"
id="rect2851"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="69.933052"
x="205.2243"
height="5.1382489"
width="15.904104"
id="rect2853"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="46.090057"
x="182.30652"
height="5.1382489"
width="15.904104"
id="rect2855"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="51.048779"
x="182.30652"
height="5.1382489"
width="15.904104"
id="rect2857"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="55.705635"
x="182.30945"
height="5.1382489"
width="15.904104"
id="rect2859"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.504951"
x="182.30652"
height="5.1382489"
width="15.904104"
id="rect2861"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="65.161812"
x="182.30652"
height="5.1382489"
width="15.904104"
id="rect2863"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="70.191765"
x="182.30652"
height="5.1382489"
width="15.904104"
id="rect2865"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2871"
y="43.502674"
x="206.56418"
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.502674"
x="206.56418"
id="tspan2873"
sodipodi:role="line">[empty]</tspan></text>
<rect
y="25"
x="247.9563"
height="54.525421"
width="46.04369"
id="rect2877"
style="fill:#1e1d70;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2879"
y="33.719456"
x="254.30101"
style="font-size:5.68998718px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="33.719456"
x="254.30101"
id="tspan2881"
sodipodi:role="line">CPUn cache </tspan></text>
<text
sodipodi:linespacing="125%"
id="text2883"
y="39.189011"
x="251.15079"
style="font-size:4.48867798px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="39.189011"
x="251.15079"
id="tspan2088"
sodipodi:role="line">current</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2887"
y="38.932865"
x="274.09811"
style="font-size:4.74100494px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="38.932865"
x="274.09811"
id="tspan2090"
sodipodi:role="line">last</tspan></text>
<rect
y="55.446922"
x="274.18353"
height="5.1382489"
width="15.904104"
id="rect2891"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="64.903099"
x="274.1806"
height="5.1382489"
width="15.904104"
id="rect2893"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="45.831341"
x="274.1806"
height="5.1382489"
width="15.904104"
id="rect2895"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="50.790062"
x="274.1806"
height="5.1382489"
width="15.904104"
id="rect2897"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.246239"
x="274.1806"
height="5.1382489"
width="15.904104"
id="rect2899"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="69.933052"
x="274.1806"
height="5.1382489"
width="15.904104"
id="rect2901"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="46.090057"
x="251.26282"
height="5.1382489"
width="15.904104"
id="rect2903"
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="51.048779"
x="251.26282"
height="5.1382489"
width="15.904104"
id="rect2905"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="55.705635"
x="251.26575"
height="5.1382489"
width="15.904104"
id="rect2907"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="60.504951"
x="251.26282"
height="5.1382489"
width="15.904104"
id="rect2909"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="65.161812"
x="251.26282"
height="5.1382489"
width="15.904104"
id="rect2911"
style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<rect
y="70.191765"
x="251.26282"
height="5.1382489"
width="15.904104"
id="rect2913"
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" />
<text
id="text2919"
y="43.43259"
x="274.84137"
style="font-size:3.20176601px;font-style:normal;font-weight:normal;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.43259"
x="274.84137"
id="tspan2921"
sodipodi:role="line">[full]</tspan></text>
<text
id="text2923"
y="63.285717"
x="230.71428"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="63.285717"
x="230.71428"
id="tspan2925"
sodipodi:role="line">...</tspan></text>
<g
transform="translate(9.948973,81.86735)"
id="g3110">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3112"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3114"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3116"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3118"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3120"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3122"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<text
sodipodi:linespacing="100%"
id="text3193"
y="138.75195"
x="80.301758"
style="font-size:12px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan3197"
y="138.75195"
x="80.301758"
sodipodi:role="line">Full</tspan><tspan
style="font-size:6px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:100%;writing-mode:lr-tb;text-anchor:middle;font-family:Bitstream Vera Sans"
id="tspan3201"
y="144.75195"
x="80.301758"
sodipodi:role="line">Magazines</tspan></text>
<g
transform="translate(34.94897,81.86735)"
id="g3477">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3479"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3481"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3483"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3485"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3487"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3489"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(84.94897,81.86735)"
id="g3491">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3493"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3495"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3497"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3499"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3501"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3503"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(184.949,81.86735)"
id="g3505">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3507"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3509"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3511"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3513"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3515"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3517"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(109.949,81.86735)"
id="g3519">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3521"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3523"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3525"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3527"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3529"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3531"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(134.949,81.86735)"
id="g3533">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3535"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3537"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3539"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3541"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3543"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3545"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(59.94897,81.86735)"
id="g3561">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3563"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3565"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3567"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3569"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3571"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3573"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
transform="translate(159.949,81.86735)"
id="g3575">
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3577"
width="15.904104"
height="5.1382489"
x="100.22722"
y="54.921501" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3579"
width="15.904104"
height="5.1382489"
x="100.2243"
y="64.377678" />
<rect
style="fill:#bc4343;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3581"
width="15.904104"
height="5.1382489"
x="100.2243"
y="45.30592" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3583"
width="15.904104"
height="5.1382489"
x="100.2243"
y="50.264641" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3585"
width="15.904104"
height="5.1382489"
x="100.2243"
y="59.720818" />
<rect
style="fill:#a8a8a8;fill-opacity:1;stroke:#000000;stroke-width:0.34653935;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1"
id="rect3587"
width="15.904104"
height="5.1382489"
x="100.2243"
y="69.407631" />
</g>
<g
id="g1985">
<path
id="path3616"
d="M 176.13305,127.18072 C 182.4201,127.18072 182.4201,127.18072 182.4201,127.18072"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path3618"
d="M 201.26893,127.36144 C 207.55598,127.36144 207.55598,127.36144 207.55598,127.36144"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 226.26893,127.36144 C 232.55598,127.36144 232.55598,127.36144 232.55598,127.36144"
id="path3620" />
<path
id="path3622"
d="M 276.26893,127.36144 C 282.55598,127.36144 282.55598,127.36144 282.55598,127.36144"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 251.26893,127.36144 C 257.55598,127.36144 257.55598,127.36144 257.55598,127.36144"
id="path3624" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 151.60329,127.18072 C 157.89034,127.18072 157.89034,127.18072 157.89034,127.18072"
id="path3649" />
<path
id="path3651"
d="M 126.60329,127.18072 C 132.89034,127.18072 132.89034,127.18072 132.89034,127.18072"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
id="g3687">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
id="path3279" />
<path
id="path3685"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="translate(176,2.943353e-7)"
id="g3691">
<path
id="path3693"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
id="path3695" />
</g>
<g
transform="translate(107,0.217264)"
id="g3697">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
id="path3699" />
<path
id="path3701"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<g
transform="translate(54,0.217264)"
id="g3703">
<path
id="path3705"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
id="path3707" />
</g>
<g
id="g3856"
transform="translate(86.5,82)">
<path
id="path3858"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
id="path3860" />
</g>
<g
transform="translate(87,161.2173)"
id="g3862">
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 85.167362,91.246186 C 85.167362,102.8792 85.167362,102.8792 85.167362,102.8792"
id="path3864" />
<path
id="path3866"
d="M 104.83264,106.53655 C 104.83264,94.903535 104.83264,94.903535 104.83264,94.903535"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.49237213;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<text
id="text3868"
y="279.02914"
x="136.4716"
style="font-size:12px;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="279.02914"
x="136.4716"
id="tspan3870"
sodipodi:role="line">Frame allocator</tspan></text>
<g
transform="matrix(-1,4.302927e-19,-4.302927e-19,-1,411.4702,283)"
id="g1994">
<path
id="path1996"
d="M 176.13305,127.18072 C 182.4201,127.18072 182.4201,127.18072 182.4201,127.18072"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
id="path1998"
d="M 201.26893,127.36144 C 207.55598,127.36144 207.55598,127.36144 207.55598,127.36144"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 226.26893,127.36144 C 232.55598,127.36144 232.55598,127.36144 232.55598,127.36144"
id="path2000" />
<path
id="path2002"
d="M 276.26893,127.36144 C 282.55598,127.36144 282.55598,127.36144 282.55598,127.36144"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 251.26893,127.36144 C 257.55598,127.36144 257.55598,127.36144 257.55598,127.36144"
id="path2004" />
<path
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
d="M 151.60329,127.18072 C 157.89034,127.18072 157.89034,127.18072 157.89034,127.18072"
id="path2006" />
<path
id="path2008"
d="M 126.60329,127.18072 C 132.89034,127.18072 132.89034,127.18072 132.89034,127.18072"
style="fill:none;fill-opacity:0.75;fill-rule:evenodd;stroke:#000000;stroke-width:0.26610187;stroke-linecap:square;stroke-linejoin:miter;marker-start:none;marker-end:url(#Arrow2Lend);stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
<text
sodipodi:linespacing="125%"
id="text2076"
y="43.334007"
x="77.724846"
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.334007"
x="77.724846"
id="tspan2080"
sodipodi:role="line">[partial]</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2104"
y="43.43259"
x="130.46965"
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.43259"
x="130.46965"
id="tspan2106"
sodipodi:role="line">[partial]</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2108"
y="43.334007"
x="182.46965"
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.334007"
x="182.46965"
id="tspan2110"
sodipodi:role="line">[partial]</tspan></text>
<text
sodipodi:linespacing="125%"
id="text2112"
y="43.334007"
x="251.46965"
style="font-size:3.20176601px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;writing-mode:lr-tb;text-anchor:start;fill:#feff00;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Bitstream Vera Sans"
xml:space="preserve"><tspan
y="43.334007"
x="251.46965"
id="tspan2114"
sodipodi:role="line">[partial]</tspan></text>
</g>
</g>
</svg>
/design/trunk/src/images/helenos.svg
0,0 → 1,106
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 12.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 51448) -->
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" [
<!ENTITY ns_svg "http://www.w3.org/2000/svg">
<!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
]>
<svg version="1.1" xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" width="207.379" height="185.525" viewBox="0 0 207.379 185.525"
overflow="visible" enable-background="new 0 0 207.379 185.525" xml:space="preserve">
<g id="Layer_1">
<g>
<path fill="#272827" d="M29.516,139.5h6.066v44.899h-6.066V163.45H6.065v20.949H0V139.5h6.065v18.572h23.451V139.5z"/>
<path fill="#272827" d="M68.763,174.143c-0.188,1.188-0.75,2.627-1.688,4.44s-2.313,3.314-4.127,4.502
c-1.063,0.688-2.189,1.251-3.439,1.626c-1.251,0.438-3.064,0.626-5.44,0.626c-2.251,0-4.315-0.438-6.128-1.251
c-1.813-0.813-3.377-1.938-4.627-3.439c-1.313-1.501-2.251-3.252-2.877-5.19c-0.688-1.938-1-4.127-1-6.504
c0-3.439,0.563-6.565,1.751-9.317c1.126-2.751,2.876-4.94,5.19-6.504c2.376-1.563,5.315-2.376,8.755-2.376
c2.314,0,4.377,0.438,6.191,1.313c1.751,0.938,3.189,2.188,4.377,3.814c1.125,1.626,2.001,3.627,2.626,5.94
c0.563,2.314,0.875,5.003,0.875,8.005H45.313c0,3.439,0.813,6.065,2.439,7.941c1.563,1.876,3.939,2.814,7.066,2.814
c1.25,0,2.376-0.188,3.439-0.625c1.001-0.438,1.876-0.938,2.626-1.626c0.688-0.688,1.313-1.376,1.751-2.189
c0.375-0.75,0.563-1.438,0.625-2.001H68.763z M63.51,165.451c-0.188-2.876-0.938-5.253-2.376-7.066
c-1.376-1.813-3.627-2.688-6.754-2.688c-1.626,0-3.126,0.438-4.502,1.313c-1.438,0.938-2.564,2.126-3.377,3.689
s-1.188,3.126-1.188,4.752H63.51z"/>
<path fill="#272827" d="M78.374,184.399h-5.503V139.5h5.503V184.399z"/>
<path fill="#272827" d="M111.259,174.143c-0.188,1.188-0.75,2.627-1.688,4.44c-0.938,1.813-2.313,3.314-4.127,4.502
c-1.063,0.688-2.188,1.251-3.439,1.626c-1.251,0.438-3.064,0.626-5.441,0.626c-2.251,0-4.314-0.438-6.128-1.251
c-1.814-0.813-3.377-1.938-4.628-3.439c-1.313-1.501-2.251-3.252-2.876-5.19c-0.688-1.938-1-4.127-1-6.504
c0-3.439,0.563-6.565,1.751-9.317c1.125-2.751,2.876-4.94,5.19-6.504c2.376-1.563,5.315-2.376,8.755-2.376
c2.313,0,4.377,0.438,6.191,1.313c1.751,0.938,3.189,2.188,4.377,3.814c1.126,1.626,2.001,3.627,2.627,5.94
c0.563,2.314,0.875,5.003,0.875,8.005H87.809c0,3.439,0.813,6.065,2.438,7.941c1.563,1.876,3.94,2.814,7.066,2.814
c1.251,0,2.376-0.188,3.439-0.625c1-0.438,1.876-0.938,2.627-1.626c0.688-0.688,1.313-1.376,1.751-2.189
c0.375-0.75,0.563-1.438,0.625-2.001H111.259z M106.006,165.451c-0.188-2.876-0.938-5.253-2.376-7.066
c-1.376-1.813-3.627-2.688-6.754-2.688c-1.626,0-3.127,0.438-4.502,1.313c-1.438,0.938-2.564,2.126-3.377,3.689
s-1.188,3.126-1.188,4.752H106.006z"/>
<path fill="#272827" d="M141.945,184.399h-5.504l-0.063-20.136c0-3.002-0.5-5.19-1.563-6.504
c-1.001-1.376-2.814-2.063-5.441-2.063c-1.25,0-2.563,0.313-3.877,1c-1.313,0.626-2.438,1.751-3.377,3.377
c-0.938,1.626-1.375,3.814-1.375,6.504v17.822h-5.503v-32.705h5.189v4.627h0.126c0.938-1.438,2.251-2.688,3.814-3.877
c1.563-1.126,3.627-1.688,6.065-1.688c1.938,0,3.814,0.313,5.503,1.001c1.688,0.625,3.127,1.813,4.315,3.502
c1.125,1.688,1.688,4.002,1.688,6.878V184.399z"/>
<path fill="#272827" d="M175.256,169.454c0,2.751-0.251,5.127-0.751,7.066c-0.5,1.938-1.313,3.564-2.501,4.939
c-1.126,1.313-2.627,2.314-4.565,3.002c-1.876,0.688-4.189,1.063-7.004,1.063c-2.751,0-5.065-0.376-7.004-1.063
s-3.502-1.688-4.689-3.002c-1.188-1.375-2.001-3.063-2.502-5.002c-0.563-1.939-0.813-4.315-0.813-7.004V150.38
c0-4.503,1.313-7.942,3.939-10.381c2.563-2.438,6.254-3.627,11.068-3.627c4.815,0,8.505,1.188,11.069,3.627
c2.501,2.438,3.752,5.878,3.752,10.381V169.454z M164.25,151.13c0-1.938-0.25-3.439-0.75-4.564
c-0.5-1.188-1.563-1.751-3.127-1.751s-2.563,0.625-3.127,1.813c-0.563,1.188-0.813,2.688-0.813,4.502v19.261
c0,4.44,1.313,6.691,4.002,6.691c1.563,0,2.627-0.625,3.127-1.938c0.438-1.251,0.688-2.814,0.688-4.753V151.13z"/>
<path fill="#272827" d="M189.12,168.703v3.314c0,1.563,0.313,2.752,1,3.689c0.626,0.938,1.751,1.376,3.377,1.376
c1.188,0,2.063-0.438,2.752-1.376c0.625-0.938,0.938-2.001,0.938-3.314c0-1.688-0.438-2.938-1.376-3.814
c-0.938-0.875-2.501-2.001-4.752-3.377c-3.939-2.251-6.754-4.314-8.317-6.128c-2.126-2.502-3.189-5.628-3.189-9.381
c0-2.188,0.313-4.127,1.001-5.815c0.625-1.688,1.501-3.064,2.688-4.189c1.188-1.063,2.627-1.938,4.315-2.502
c1.688-0.563,3.627-0.813,5.815-0.813c2.251,0,4.252,0.375,6.003,1.063c1.751,0.688,3.252,1.688,4.44,3.001
c1.188,1.313,2.063,2.939,2.626,4.815c0.563,1.876,0.876,4.002,0.876,6.316h-10.131c-0.063-2.189-0.313-3.815-0.688-4.94
c-0.375-1.063-1.376-1.688-2.939-1.813c-2.313,0-3.564,1.063-3.814,3.127c0,1.438,0.25,2.501,0.813,3.313
c0.563,0.813,1.375,1.626,2.501,2.439c1,0.625,2.313,1.438,4.002,2.438c1.688,0.938,2.939,1.751,3.814,2.313
c0.876,0.563,1.688,1.188,2.439,1.876c1.313,1.251,2.376,2.752,3.063,4.503c0.688,1.751,1.001,4.002,1.001,6.691
c0,2.938-0.563,5.503-1.626,7.629c-1.063,2.063-2.688,3.689-4.753,4.753c-2.126,1.063-4.689,1.626-7.754,1.626
c-2.376,0-4.502-0.313-6.316-0.938c-1.813-0.563-3.313-1.438-4.502-2.563c-1.188-1.126-2.063-2.377-2.627-3.814
c-0.563-1.438-0.875-2.939-0.875-4.503v-5.003H189.12z"/>
</g>
</g>
<g id="Layer_2">
<path fill="#6B6B6B" d="M160.914,84.42c2.357,6.217-0.646,13.124-6.713,15.426l-72.997,27.702
c-6.068,2.303-12.896-0.871-15.257-7.088L37.554,45.643c-2.359-6.218,0.646-13.123,6.713-15.426l72.997-27.702
c6.065-2.303,12.896,0.872,15.256,7.088L160.914,84.42z"/>
<path fill="#DEDDDD" d="M161.994,80.904c2.309,6.089-0.734,12.893-6.8,15.194l-72.991,27.699
c-6.067,2.303-12.856-0.768-15.168-6.857L39.224,43.659c-2.311-6.09,0.733-12.892,6.8-15.194l72.991-27.7
c6.064-2.302,12.855,0.769,15.167,6.858L161.994,80.904z"/>
<path fill="#A4ADAF" d="M155.905,79.039c2.059,5.426-0.627,11.481-5.997,13.52l-64.655,24.536
c-5.374,2.039-11.398-0.709-13.459-6.139L47.008,45.645c-2.06-5.428,0.626-11.48,6-13.519L117.66,7.59
c5.374-2.039,11.4,0.709,13.458,6.136L155.905,79.039z"/>
<path fill="#FFFFFF" d="M47.786,45.947c-2.016-5.315,0.626-11.251,5.901-13.253l63.514-24.103
c5.28-2.003,11.193,0.683,13.213,6.002l24.28,63.98c2.017,5.317-0.625,11.251-5.904,13.254L85.279,115.93
c-5.279,2.004-11.194-0.684-13.211-6L47.786,45.947z"/>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="70.8823" y1="179.5894" x2="155.9314" y2="139.9303" gradientTransform="matrix(-4.371139e-008 1 -1 -4.371139e-008 260.9996 -51.1469)">
<stop offset="0" style="stop-color:#FFFFFF"/>
<stop offset="0.1147" style="stop-color:#E9E9E9"/>
<stop offset="0.3539" style="stop-color:#B0B0B0"/>
<stop offset="0.6936" style="stop-color:#575757"/>
<stop offset="1" style="stop-color:#000000"/>
</linearGradient>
<path opacity="0.24" fill="url(#XMLID_2_)" d="M47.786,45.947c-2.016-5.315,0.626-11.251,5.901-13.253l63.514-24.103
c5.28-2.003,11.193,0.683,13.213,6.002l24.28,63.98c2.017,5.317-0.625,11.251-5.904,13.254L85.279,115.93
c-5.279,2.004-11.194-0.684-13.211-6L47.786,45.947z"/>
</g>
<g id="Layer_3">
<circle fill="#D4DBE0" stroke="#E5E5E4" cx="81.68" cy="109.059" r="2.375"/>
<ellipse transform="matrix(0.819 -0.5738 0.5738 0.819 -47.5865 66.3171)" fill="#A4ADAF" cx="81.313" cy="108.579" rx="1.729" ry="1.247"/>
<circle fill="#D4DBE0" stroke="#E5E5E4" cx="148.374" cy="83.394" r="2.375"/>
<ellipse transform="matrix(0.819 -0.5738 0.5738 0.819 -20.7849 99.9422)" fill="#A4ADAF" cx="148.006" cy="82.913" rx="1.729" ry="1.247"/>
</g>
<g id="Layer_4">
<path fill="#444444" d="M124.11,78.229c-2.326,0.875-4.822-0.045-5.576-2.049l-14.853-39.55c-0.753-2.006,0.521-4.34,2.849-5.214
l0,0c2.327-0.875,4.823,0.044,5.577,2.05l14.853,39.55C127.712,75.021,126.437,77.356,124.11,78.229L124.11,78.229z"/>
<path fill="#444444" d="M94.454,89.329c-2.328,0.875-4.823-0.043-5.577-2.051L74.024,47.73c-0.753-2.006,0.521-4.339,2.85-5.214
l0,0c2.325-0.874,4.823,0.044,5.576,2.05l14.853,39.548C98.055,86.122,96.78,88.456,94.454,89.329L94.454,89.329z"/>
<path fill="#444444" d="M116.055,53.935c0.753,2.006,0.388,3.998-0.814,4.449l-23.729,8.911c-1.203,0.453-2.789-0.807-3.542-2.813
l0,0c-0.754-2.007-0.389-4,0.815-4.451l23.727-8.911C113.714,50.668,115.301,51.928,116.055,53.935L116.055,53.935z"/>
<g id="Layer_5">
</g>
</g>
<g id="Layer_6">
<polygon opacity="0.78" fill="#272827" points="68.008,100.595 63.259,106.61 45.741,60.42 52.572,60.089 "/>
<polygon fill="#848A8D" points="63.259,106.61 60.491,106.17 43.741,61.92 45.741,60.42 "/>
</g>
</svg>
/design/trunk/src/ch_synchronization.xml
0,0 → 1,553
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="sync">
<?dbhtml filename="sync.html"?>
 
<title>Synchronization</title>
 
<section>
<title>Introduction</title>
 
<para>The HelenOS operating system is designed to make use of the
parallelism offered by the hardware and to exploit concurrency of both the
kernel and userspace tasks. This is achieved through multiprocessor
support and several levels of multiprogramming such as multitasking,
multithreading and also through userspace fibrils. However, such a highly
concurrent environment needs safe and efficient ways to handle mutual
exclusion and synchronization of many execution flows.</para>
</section>
 
<section>
<title>Active Kernel Primitives</title>
 
<section>
<indexterm>
<primary>synchronization</primary>
 
<secondary>- spinlock</secondary>
</indexterm>
 
<title>Spinlocks</title>
 
<para>The basic mutual exclusion primitive is the spinlock. The spinlock
implements active waiting for the availability of a memory lock (i.e.
simple variable) in a multiprocessor-safe manner. This safety is
achieved through the use of a specialized, architecture-dependent,
atomic test-and-set operation which either locks the spinlock (i.e. sets
the variable) or, provided that it is already locked, leaves it
unaltered. In any case, the test-and-set operation returns a value, thus
signalling either success (i.e. zero return value) or failure (i.e.
non-zero value) in acquiring the lock. Note that this makes a
fundamental difference between the naive algorithm that doesn't use the
atomic operation and the spinlock algortihm. While the naive algorithm
is prone to race conditions on SMP configurations and thus is completely
SMP-unsafe, the spinlock algorithm eliminates the possibility of race
conditions and is suitable for mutual exclusion use.</para>
 
<para>The semantics of the test-and-set operation is that the spinlock
remains unavailable until this operation called on the respective
spinlock returns zero. HelenOS builds two functions on top of the
test-and-set operation. The first function is the unconditional attempt
to acquire the spinlock and is called <code>spinlock_lock()</code>. It
simply loops until the test-and-set returns a zero value. The other
function, <code>spinlock_trylock()</code>, is the conditional lock
operation and calls the test-and-set only once to find out whether it
managed to acquire the spinlock or not. The conditional operation is
useful in situations in which an algorithm cannot acquire more spinlocks
in the proper order and a deadlock cannot be avoided. In such a case,
the algorithm would detect the danger and instead of possibly
deadlocking the system it would simply release some spinlocks it already
holds and retry the whole operation with the hope that it will succeed
next time. The unlock function, <code>spinlock_unlock()</code>, is quite
easy - it merely clears the spinlock variable.</para>
 
<para>Nevertheless, there is a special issue related to hardware
optimizations that modern processors implement. Particularly problematic
is the out-of-order execution of instructions within the critical
section protected by a spinlock. The processors are always
self-consistent so that they can carry out speculatively executed
instructions in the right order with regard to dependencies among those
instructions. However, the dependency between instructions inside the
critical section and those that implement locking and unlocking of the
respective spinlock is not implicit on some processor architectures. As
a result, the processor needs to be explicitly told about each
occurrence of such a dependency. Therefore, HelenOS adds
architecture-specific hooks to all <code>spinlock_lock()</code>,
<code>spinlock_trylock()</code> and <code>spinlock_unlock()</code>
functions to prevent the instructions inside the critical section from
permeating out. On some architectures, these hooks can be void because
the dependencies are implicitly there because of the special properties
of locking and unlocking instructions. However, other architectures need
to instrument these hooks with different memory barriers, depending on
what operations could permeate out.</para>
 
<para>Spinlocks have one significant drawback: when held for longer time
periods, they harm both parallelism and concurrency. The processor
executing <code>spinlock_lock()</code> does not do any fruitful work and
is effectively halted until it can grab the lock and proceed.
Similarily, other execution flows cannot execute on the processor that
holds the spinlock because the kernel disables preemption on that
processor when a spinlock is held. The reason behind disabling
preemption is priority inversion problem avoidance. For the same reason,
threads are strongly discouraged from sleeping when they hold a
spinlock.</para>
 
<para>To summarize, spinlocks represent very simple and essential mutual
exclusion primitive for SMP systems. On the other hand, spinlocks scale
poorly because of the active loop they are based on. Therefore,
spinlocks are used in HelenOS only for short-time mutual exclusion and
in cases where the mutual exclusion is required out of thread context.
Lastly, spinlocks are used in the construction of passive
synchronization primitives.</para>
</section>
</section>
 
<section>
<title>Passive Kernel Synchronization</title>
 
<section>
<indexterm>
<primary>synchronization</primary>
 
<secondary>- wait queue</secondary>
</indexterm>
 
<title>Wait Queues</title>
 
<para>A wait queue is the basic passive synchronization primitive on
which all other passive synchronization primitives are built. Simply
put, it allows a thread to sleep until an event associated with the
particular wait queue occurs. Multiple threads are notified about
incoming events in a first come, first served fashion. Moreover, should
the event come before any thread waits for it, it is recorded in the
wait queue as a missed wakeup and later forwarded to the first thread
that decides to wait in the queue. The inner structures of the wait
queue are protected by a spinlock.</para>
 
<para>The thread that wants to wait for a wait queue event uses the
<code>waitq_sleep_timeout()</code> function. The algorithm then checks
the wait queue's counter of missed wakeups and if there are any missed
wakeups, the call returns immediately. The call also returns immediately
if only a conditional wait was requested. Otherwise the thread is
enqueued in the wait queue's list of sleeping threads and its state is
changed to <constant>Sleeping</constant>. It then sleeps until one of
the following events happens:</para>
 
<orderedlist>
<listitem>
<para>another thread calls <code>waitq_wakeup()</code> and the
thread is the first thread in the wait queue's list of sleeping
threads;</para>
</listitem>
 
<listitem>
<para>another thread calls <code>waitq_interrupt_sleep()</code> on
the sleeping thread;</para>
</listitem>
 
<listitem>
<para>the sleep times out provided that none of the previous
occurred within a specified time limit; the limit can be
infinity.</para>
</listitem>
</orderedlist>
 
<para>All five possibilities (immediate return on success, immediate
return on failure, wakeup after sleep, interruption and timeout) are
distinguishable by the return value of
<code>waitq_sleep_timeout()</code>. Being able to interrupt a sleeping
thread is essential for externally initiated thread termination. The
ability to wait only for a certain amount of time is used, for instance,
to passively delay thread execution by several microseconds or even
seconds in <code>thread_sleep()</code> function. Due to the fact that
all other passive kernel synchronization primitives are based on wait
queues, they also have the option of being interrutped and, more
importantly, can timeout. All of them also implement the conditional
operation. Furthemore, this very fundamental interface reaches up to the
implementation of futexes - userspace synchronization primitive, which
makes it possible for a userspace thread to request a synchronization
operation with a timeout or a conditional operation.</para>
 
<para>From the description above, it should be apparent, that when a
sleeping thread is woken by <code>waitq_wakeup()</code> or when
<code>waitq_sleep_timeout()</code> succeeds immediately, the thread can
be sure that the event has occurred. The thread need not and should not
verify this fact. This approach is called direct hand-off and is
characteristic for all passive HelenOS synchronization primitives, with
the exception as described below.</para>
</section>
 
<section>
<indexterm>
<primary>synchronization</primary>
 
<secondary>- semaphore</secondary>
</indexterm>
 
<title>Semaphores</title>
 
<para>The interesting point about wait queues is that the number of
missed wakeups is equal to the number of threads that will not block in
<code>watiq_sleep_timeout()</code> and would immediately succeed
instead. On the other hand, semaphores are synchronization primitives
that will let predefined amount of threads into their critical section
and block any other threads above this count. However, these two cases
are exactly the same. Semaphores in HelenOS are therefore implemented as
wait queues with a single semantic change: their wait queue is
initialized to have so many missed wakeups as is the number of threads
that the semphore intends to let into its critical section
simultaneously.</para>
 
<para>In the semaphore language, the wait queue operation
<code>waitq_sleep_timeout()</code> corresponds to semaphore
<code>down</code> operation, represented by the function
<code>semaphore_down_timeout()</code> and by way of similitude the wait
queue operation waitq_wakeup corresponds to semaphore <code>up</code>
operation, represented by the function <code>sempafore_up()</code>. The
conditional down operation is called
<code>semaphore_trydown()</code>.</para>
</section>
 
<section>
<title>Mutexes</title>
 
<indexterm>
<primary>synchronization</primary>
 
<secondary>- mutex</secondary>
</indexterm>
 
<para>Mutexes are sometimes referred to as binary sempahores. That means
that mutexes are like semaphores that allow only one thread in its
critical section. Indeed, mutexes in HelenOS are implemented exactly in
this way: they are built on top of semaphores. From another point of
view, they can be viewed as spinlocks without busy waiting. Their
semaphore heritage provides good basics for both conditional operation
and operation with timeout. The locking operation is called
<code>mutex_lock()</code>, the conditional locking operation is called
<code>mutex_trylock()</code> and the unlocking operation is called
<code>mutex_unlock()</code>.</para>
</section>
 
<section>
<title>Reader/Writer Locks</title>
 
<indexterm>
<primary>synchronization</primary>
 
<secondary>- read/write lock</secondary>
</indexterm>
 
<para>Reader/writer locks, or rwlocks, are by far the most complicated
synchronization primitive within the kernel. The goal of these locks is
to improve concurrency of applications, in which threads need to
synchronize access to a shared resource, and that access can be
partitioned into a read-only mode and a write mode. Reader/writer locks
should make it possible for several, possibly many, readers to enter the
critical section, provided that no writer is currently in the critical
section, or to be in the critical section contemporarily. Writers are
allowed to enter the critical section only individually, provided that
no reader is in the critical section already. Applications, in which the
majority of operations can be done in the read-only mode, can benefit
from increased concurrency created by reader/writer locks.</para>
 
<para>During reader/writer lock construction, a decision should be made
whether readers will be prefered over writers or whether writers will be
prefered over readers in cases when the lock is not currently held and
both a reader and a writer want to gain the lock. Some operating systems
prefer one group over the other, creating thus a possibility for
starving the unprefered group. In the HelenOS operating system, none of
the two groups is prefered. The lock is granted on a first come, first
served basis with the additional note that readers are granted the lock
in the biggest possible batch.</para>
 
<para>With this policy and the timeout modes of operation, the direct
hand-off becomes much more complicated. For instance, a writer leaving
the critical section must wake up all leading readers in the rwlock's
wait queue or one leading writer or no-one if no thread is waiting.
Similarily, the last reader leaving the critical section must wakeup the
sleeping writer if there are any sleeping threads left at all. As
another example, if a writer at the beginning of the rwlock's wait queue
times out and the lock is held by at least one reader, the writer which
has timed out must first wake up all readers that follow him in the
queue prior to signalling the timeout itself and giving up.</para>
 
<para>Due to the issues mentioned in the previous paragraph, the
reader/writer lock imlpementation needs to walk the rwlock wait queue's
list of sleeping threads directly, in order to find out the type of
access that the queueing threads demand. This makes the code difficult
to understand and dependent on the internal implementation of the wait
queue. Nevertheless, it remains unclear to the authors of HelenOS
whether a simpler but equivalently fair solution exists.</para>
 
<para>The implementation of rwlocks as it has been already put, makes
use of one single wait queue for both readers and writers, thus avoiding
any possibility of starvation. In fact, rwlocks use a mutex rather than
a bare wait queue. This mutex is called <emphasis>exclusive</emphasis>
and is used to synchronize writers. The writer's lock operation,
<code>rwlock_write_lock_timeout()</code>, simply tries to acquire the
exclusive mutex. If it succeeds, the writer is granted the rwlock.
However, if the operation fails (e.g. times out), the writer must check
for potential readers at the head of the list of sleeping threads
associated with the mutex's wait queue and then proceed according to the
procedure outlined above.</para>
 
<para>The exclusive mutex plays an important role in reader
synchronization as well. However, a reader doing the reader's lock
operation, <code>rwlock_read_lock_timeout()</code>, may bypass this
mutex when it detects that:</para>
 
<orderedlist>
<listitem>
<para>there are other readers in the critical section and</para>
</listitem>
 
<listitem>
<para>there are no sleeping threads waiting for the exclusive
mutex.</para>
</listitem>
</orderedlist>
 
<para>If both conditions are true, the reader will bypass the mutex,
increment the number of readers in the critical section and then enter
the critical section. Note that if there are any sleeping threads at the
beginning of the wait queue, the first must be a writer. If the
conditions are not fulfilled, the reader normally waits until the
exclusive mutex is granted to it.</para>
</section>
 
<section>
<title>Condition Variables</title>
 
<indexterm>
<primary>synchronization</primary>
 
<secondary>- condition variable</secondary>
</indexterm>
 
<para>Condition variables can be used for waiting until a condition
becomes true. In this respect, they are similar to wait queues. But
contrary to wait queues, condition variables have different semantics
that allows events to be lost when there is no thread waiting for them.
In order to support this, condition variables don't use direct hand-off
and operate in a way similar to the example below. A thread waiting for
the condition becoming true does the following:</para>
 
<example>
<title>Use of <code>condvar_wait_timeout()</code>.</title>
 
<programlisting language="C"><function>mutex_lock</function>(<varname>mtx</varname>);
while (!<varname>condition</varname>)
<function>condvar_wait_timeout</function>(<varname>cv</varname>, <varname>mtx</varname>); /* <remark>the condition is true, do something</remark> */
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting>
</example>
 
<para>A thread that causes the condition become true signals this event
like this:</para>
 
<example>
<title>Use of <code>condvar_signal()</code>.</title>
 
<programlisting language="C"><function>mutex_lock</function>(<varname>mtx</varname>);
<varname>condition</varname> = <constant>true</constant>;
<function>condvar_signal</function>(<varname>cv</varname>); /* <remark>condvar_broadcast(cv);</remark> */
<function>mutex_unlock</function>(<varname>mtx</varname>);</programlisting>
</example>
 
<para>The wait operation, <code>condvar_wait_timeout()</code>, always
puts the calling thread to sleep. The thread then sleeps until another
thread invokes <code>condvar_broadcast()</code> on the same condition
variable or until it is woken up by <code>condvar_signal()</code>. The
<code>condvar_signal()</code> operation unblocks the first thread
blocking on the condition variable while the
<code>condvar_broadcast()</code> operation unblocks all threads blocking
there. If there are no blocking threads, these two operations have no
efect.</para>
 
<para>Note that the threads must synchronize over a dedicated mutex. To
prevent race condition between <code>condvar_wait_timeout()</code> and
<code>condvar_signal()</code> or <code>condvar_broadcast()</code>, the
mutex is passed to <code>condvar_wait_timeout()</code> which then
atomically puts the calling thread asleep and unlocks the mutex. When
the thread eventually wakes up, <code>condvar_wait()</code> regains the
mutex and returns.</para>
 
<para>Also note, that there is no conditional operation for condition
variables. Such an operation would make no sence since condition
variables are defined to forget events for which there is no waiting
thread and because <code>condvar_wait()</code> must always go to sleep.
The operation with timeout is supported as usually.</para>
 
<para>In HelenOS, condition variables are based on wait queues. As it is
already mentioned above, wait queues remember missed events while
condition variables must not do so. This is reasoned by the fact that
condition variables are designed for scenarios in which an event might
occur very many times without being picked up by any waiting thread. On
the other hand, wait queues would remember any event that had not been
picked up by a call to <code>waitq_sleep_timeout()</code>. Therefore, if
wait queues were used directly and without any changes to implement
condition variables, the missed_wakeup counter would hurt performance of
the implementation: the <code>while</code> loop in
<code>condvar_wait_timeout()</code> would effectively do busy waiting
until all missed wakeups were discarded.</para>
 
<para>The requirement on the wait operation to atomically put the caller
to sleep and release the mutex poses an interesting problem on
<code>condvar_wait_timeout()</code>. More precisely, the thread should
sleep in the condvar's wait queue prior to releasing the mutex, but it
must not hold the mutex when it is sleeping.</para>
 
<para>Problems described in the two previous paragraphs are addressed in
HelenOS by dividing the <code>waitq_sleep_timeout()</code> function into
three pieces:</para>
 
<orderedlist>
<listitem>
<para><code>waitq_sleep_prepare()</code> prepares the thread to go
to sleep by, among other things, locking the wait queue;</para>
</listitem>
 
<listitem>
<para><code>waitq_sleep_timeout_unsafe()</code> implements the core
blocking logic;</para>
</listitem>
 
<listitem>
<para><code>waitq_sleep_finish()</code> performs cleanup after
<code>waitq_sleep_timeout_unsafe()</code>; after this call, the wait
queue spinlock is guaranteed to be unlocked by the caller</para>
</listitem>
</orderedlist>
 
<para>The stock <code>waitq_sleep_timeout()</code> is then a mere
wrapper that calls these three functions. It is provided for convenience
in cases where the caller doesn't require such a low level control.
However, the implementation of <code>condvar_wait_timeout()</code> does
need this finer-grained control because it has to interleave calls to
these functions by other actions. It carries its operations out in the
following order:</para>
 
<orderedlist>
<listitem>
<para>calls <code>waitq_sleep_prepare()</code> in order to lock the
condition variable's wait queue,</para>
</listitem>
 
<listitem>
<para>releases the mutex,</para>
</listitem>
 
<listitem>
<para>clears the counter of missed wakeups,</para>
</listitem>
 
<listitem>
<para>calls <code>waitq_sleep_timeout_unsafe()</code>,</para>
</listitem>
 
<listitem>
<para>retakes the mutex,</para>
</listitem>
 
<listitem>
<para>calls <code>waitq_sleep_finish()</code>.</para>
</listitem>
</orderedlist>
</section>
</section>
 
<section>
<title>Userspace Synchronization</title>
 
<section>
<title>Futexes</title>
 
<indexterm>
<primary>synchronization</primary>
 
<secondary>- futex</secondary>
</indexterm>
 
<para>In a multithreaded environment, userspace threads need an
efficient way to synchronize. HelenOS borrows an idea from Linux<xref
linkend="futex" /> to implement lightweight userspace synchronization
and mutual exclusion primitive called futex. The key idea behind futexes
is that non-contended synchronization is very fast and takes place only
in userspace without kernel's intervention. When more threads contend
for a futex, only one of them wins; other threads go to sleep via a
dedicated syscall.</para>
 
<para>The userspace part of the futex is a mere integer variable, a
counter, that can be atomically incremented or decremented. The kernel
part is rather more complicated. For each userspace futex counter, there
is a kernel structure describing the futex. This structure
contains:</para>
 
<itemizedlist>
<listitem>
<para>number of references,</para>
</listitem>
 
<listitem>
<para>physical address of the userspace futex counter,</para>
</listitem>
 
<listitem>
<para>hash table link and</para>
</listitem>
 
<listitem>
<para>a wait queue.</para>
</listitem>
</itemizedlist>
 
<para>The reference count helps to find out when the futex is no longer
needed and can be deallocated. The physical address is used as a key for
the global futex hash table. Note that the kernel has to use physical
address to identify the futex beacause one futex can be used for
synchronization among different address spaces and can have different
virtual addresses in each of them. Finally, the kernel futex structure
includes a wait queue. The wait queue is used to put threads that didn't
win the futex to sleep until the winner wakes one of them up.</para>
 
<para>A futex should be initialized by setting its userspace counter to
one before it is used. When locking the futex via userspace library
function <code>futex_down_timeout()</code>, the library code atomically
decrements the futex counter and tests if it dropped below zero. If it
did, then the futex is locked by another thread and the library uses the
<constant>SYS_FUTEX_SLEEP</constant> syscall to put the thread asleep.
If the counter decreased to 0, then there was no contention and the
thread can enter the critical section protected by the futex. When the
thread later leaves that critical section, it, using library function
<code>futex_up()</code>, atomically increments the counter. If the
counter value increased to one, then there again was no contention and
no action needs to be done. However, if it increased to zero or even a
smaller number, then there are sleeping threads waiting for the futex to
become available. In that case, the library has to use the
<constant>SYS_FUTEX_WAKEUP</constant> syscall to wake one sleeping
thread.</para>
 
<para>So far, futexes are very elegant in that they don't interfere with
the kernel when there is no contention for them. Another nice aspect of
futexes is that they don't need to be registered anywhere prior to the
first kernel intervention.</para>
 
<para>Both futex related syscalls, <constant>SYS_FUTEX_SLEEP</constant>
and <constant>SYS_FUTEX_WAKEUP</constant>, respectivelly, are mere
wrappers for <code>waitq_sleep_timeout()</code> and
<code>waitq_sleep_wakeup()</code>, respectively, with some housekeeping
functionality added. Both syscalls need to translate the userspace
virtual address of the futex counter to physical address in order to
support synchronization accross shared memory. Once the physical address
is known, the kernel checks whether the futexes are already known to it
by searching the global futex hash table for an item with the physical
address of the futex counter as a key. When the search is successful, it
returns an address of the kernel futex structure associated with the
counter. If the hash table does not contain the key, the kernel creates
it and inserts it into the hash table. At the same time, the the current
task's B+tree of known futexes is searched in order to find out if the
task already uses the futex. If it does, no action is taken. Otherwise
the reference count of the futex is incremented, provided that the futex
already existed.</para>
</section>
</section>
</chapter>
/design/trunk/src/ch_arch_overview.xml
0,0 → 1,152
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="architecture">
<?dbhtml filename="arch.html"?>
 
<title>Architecture Overview</title>
 
<para>The HelenOS operating system is designed as a relatively small
microkernel assisted with a set of userspace drivers and server tasks.
HelenOS is not very radical in which subsystems should or should not be
implemented in the kernel - in some cases, both kernel and userspace drivers
exist. The reason for creating the system as a microkernel is prosaic. Even
though it is initially more difficult to get the same level of functionality
from a microkernel than it is in the case of a simple monolithic kernel, a
microkernel is much easier to maintain once the pieces have been put to work
together. Therefore, the kernel of HelenOS, as well as the essential
userspace libraries thereof can be maintained by only a few developers who
understand them completely. In addition, a microkernel based operating
system reaches completion sooner than monolithic kernels as the system can
be used even without some traditional subsystems (e.g. block devices,
filesystems and networking).</para>
 
<figure float="1">
<mediaobject id="arch1">
<imageobject role="pdf">
<imagedata fileref="images/arch1.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/arch1.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/arch1.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>HelenOS architecture overview.</title>
</figure>
 
<para>HelenOS is comprised of the kernel and the userspace server tasks. The
kernel provides scheduling, memory management and IPC. It also contains
essential device drivers that control the system clock and other devices
necessary to guarantee a safe environment. Userspace communicates with the
kernel through a small set of syscalls. The userspace layer consists of
tasks with different roles, capabilities and privileges. Some of the tasks
serve as device drivers, naming servers, managers of various kinds and some
are just ordinary user programs. All of them communicate with other threads
via kernel-provided IPC.</para>
 
<section>
<title>Scheduling</title>
 
<indexterm>
<primary>thread</primary>
</indexterm>
 
<para>Kernel's unit of execution flow is a thread. A thread is an entity
that executes code and has a stack that takes up some space in memory. The
relation between kernel and userspace threads is 1:1:n, meaning that there
can be several so called fibrils running within one userspace thread that
maps to one kernel thread. Threads are grouped into tasks by functionality
they provide (i.e. several threads implement functionality of one task).
<indexterm>
<primary>task</primary>
</indexterm> Tasks serve as containers of threads, they provide linkage
to address space and are communication endpoints for IPC. Finally, tasks
can be holders of capabilities that entitle them to do certain sensitive
operations (e.g access raw hardware and physical memory).</para>
 
<para>The scheduler deploys several run queues on each processor. A thread
ready for execution is put into one of the run queues, depending on its
priority and its current processor, from where it is eventually picked up
by the scheduler. Special purpose kernel threads strive to keep processors
balanced by thread migration. Threads are scheduled by the round robing
scheduling policy with respect to multiple priority run queues.</para>
</section>
 
<section>
<title>Memory Management</title>
 
<para>Memory management is another large subsystem in HelenOS. It serves
the kernel to satisfy its own memory allocation requests, provides
translation between virtual and physical memory addresses and manages
virtual address spaces of userspace tasks.</para>
 
<para>Kernel allocates memory from the slab allocator, which itself
allocates memory from a buddy system based allocator of physical memory
frames.</para>
 
<para>The virtual address translation layer currently supports two
mechanisms for mapping virtual memory pages to physical memory frames
(i.e. 4-level hierarchical page tables and global page hash table), and is
further extensible to other mechanisms.</para>
 
<indexterm>
<primary>address space</primary>
</indexterm>
 
<para>Userspace tasks depend on support of address spaces provided by the
kernel. Each address space is a set of mutually disjunctive address space
areas. An address space area is usually connected to, and backed by,
anonymous memory, executable image of some program or continuous region of
physical memory. However, swapping pages in and out to external memory is
not supported. Address space areas can be easily shared among address
spaces.</para>
</section>
 
<section>
<indexterm>
<primary>IPC</primary>
</indexterm>
 
<title>IPC</title>
 
<para>Due to the fact that HelenOS is a microkernel, strong emphasis is
put on its IPC (Inter-Process Communication<footnote>
<para>The term Inter-Process Communication is slightly confusing
because in HelenOS terminology there are tasks instead of processes.
However, its abbreviation, IPC, is being publicly used as a standard
name for similar facilities. This book will therefore use the term IPC
to refer to communication among tasks.</para>
</footnote>). Tasks communicate by passing very short messages to one
another or by sending (i.e. sharing) address space areas when larger data
is to be transfered.</para>
 
<indexterm>
<primary>IPC</primary>
 
<secondary>- phone</secondary>
</indexterm>
 
<indexterm>
<primary>IPC</primary>
 
<secondary>- answerbox</secondary>
</indexterm>
 
<indexterm>
<primary>IPC</primary>
 
<secondary>- message queue</secondary>
</indexterm>
 
<para>The abstraction uses terms like phones, calls and answerboxes, but
is similar to well-known abstraction of message queues. A task can have
multiple simultaneous simplex connections to several other tasks. A
connection leads from one of the source task's phones to the destination
task's answerbox. The phones are used as handles for making calls to other
tasks. Calls are asynchronous and can be forwarded from one task to
another.</para>
</section>
</chapter>
/design/trunk/src/ch_scheduling.xml
0,0 → 1,279
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="scheduling">
<?dbhtml filename="scheduling.html"?>
 
<title>Scheduling</title>
 
<para>One of the key aims of the operating system is to create and support
the impression that several activities are executing contemporarily. This is
true for both uniprocessor as well as multiprocessor systems. In the case of
multiprocessor systems, the activities are truly happening in parallel. The
scheduler helps to materialize this impression by planning threads on as
many processors as possible and, when this strategy reaches its limits, by
quickly switching among threads executing on a single processor.</para>
 
<section>
<title>Contexts</title>
 
<para>The term <emphasis>context</emphasis> refers to the set of processor
resources that define the current state of the computation or the
environment and the kernel understands it in several more or less narrow
sences:</para>
 
<itemizedlist>
<listitem>
<para>synchronous register context,</para>
</listitem>
 
<listitem>
<para>asynchronous register context,</para>
</listitem>
 
<listitem>
<para>FPU context and</para>
</listitem>
 
<listitem>
<para>memory management context.</para>
</listitem>
</itemizedlist>
 
<para>The most narrow sense refers to the the synchronous register
context. It includes all the preserved registers as defined by the
architecture. To highlight some, the program counter and stack pointer
take part in the synchronous register context. These registers must be
preserved across a procedure call and during synchronous context
switches.</para>
 
<para>The next type of the context understood by the kernel is the
asynchronous register context. On an interrupt, the interrupted execution
flow's state must be guaranteed to be eventually completely restored.
Therefore the interrupt context includes, among other things, the scratch
registers as defined by the architecture. As a special optimization and if
certain conditions are met, it need not include the architecture's
preserved registers. The condition mentioned in the previous sentence is
that the low-level assembly language interrupt routines don't modify the
preserved registers. The handlers usually call a higher-level C routine.
The preserved registers are then saved on the stack by the compiler
generated code of the higher-level function. In HelenOS, several
architectures can be compiled with this optimization.</para>
 
<para>Although the kernel does not do any floating point
arithmetics<footnote>
<para>Some architectures (e.g. ia64) inevitably use a fixed set of
floating point registers to carry out their normal operations.</para>
</footnote>, it must protect FPU context of userspace threads against
destruction by other threads. Moreover, only a fraction of userspace
programs use the floating point unit. HelenOS contains a generic framework
for switching FPU context only when the switch is forced (i.e. a thread
uses a floating point instruction and its FPU context is not loaded in the
processor).</para>
 
<para>The last member of the context family is the memory management
context. It includes memory management registers that identify address
spaces on hardware level (i.e. ASIDs and page tables pointers).</para>
 
<section>
<title>Synchronous Context Switches</title>
 
<para>The scheduler, but also other pieces of the kernel, make heavy use
of synchronous context switches, because it is a natural vehicle not
only for changes in control flow, but also for switching between two
kernel stacks. Two functions figure in a synchronous context switch
implementation: <code>context_save()</code> and
<code>context_restore()</code>. Note that these two functions break the
natural perception of the linear C code execution flow starting at
function's entry point and ending on one of the function's exit
points.</para>
 
<para>When the <code>context_save()</code> function is called, the
synchronous context is saved in a memory structure passed to it. After
executing <code>context_save()</code>, the caller is returned 1 as a
return value. The execution of instructions continues as normally until
<code>context_restore()</code> is called. For the caller, it seems like
the call never returns<footnote>
<para>Which might be a source of problems with variable liveliness
after <code>context_restore()</code>.</para>
</footnote>. Nevertheless, a synchronous register context, which is
saved in a memory structure passed to <code>context_restore()</code>, is
restored, thus transfering the control flow to the place of occurrence
of the corresponding call to <code>context_save()</code>. From the
perspective of the caller of the corresponding
<code>context_save()</code>, it looks like a return from
<code>context_save()</code>. However, this time a return value of 0 is
returned.</para>
</section>
</section>
 
<section>
<title>Threads</title>
 
<para>A thread is the basic executable entity with some code and a stack.
While the code, implemented by a C language function, can be shared by
several threads, the stack is always private to each instance of the
thread. Each thread belongs to exactly one task through which it shares
address space with its sibling threads. Threads that execute purely in the
kernel don't have any userspace memory allocated. However, when a thread
has ambitions to run in userspace, it must be allocated a userspace stack.
The distinction between the purely kernel threads and threads running also
in userspace is made by refering to the former group as to kernel threads
and to the latter group as to userspace threads. Both kernel and userspace
threads are visible to the scheduler and can become a subject of kernel
preemption and thread migration anytime when preemption is not
disabled.</para>
 
<formalpara>
<title>Thread States</title>
 
<para>In each moment, a thread exists in one of six possible thread
states. When the thread is created and first inserted into the
scheduler's run queues or when a thread is migrated to a new processor,
it is put into the <constant>Entering</constant> state. After some time
elapses, the scheduler picks up the thread and starts executing it. A
thread being currently executed on a processor is in the
<constant>Running</constant> state. From there, the thread has three
possibilities. It either runs until it is preemtped, in which case the
state changes to <constant>Ready</constant>, goes to the
<constant>Sleeping</constant> state by going to sleep or enters the
<constant>Exiting</constant> state when it reaches termination. When the
thread exits, its kernel structure usually stays in memory, until the
thread is detached by another thread using <code>thread_detach()</code>
function. Terminated but undetached threads are in the
<constant>Lingering</constant> state. When the thread is detached or
detaches itself during its life, it is destroyed in the
<constant>Exiting</constant> state and the
<constant>Lingering</constant> state is not reached.<figure float="1">
<title>Transitions among thread states.</title>
 
<mediaobject id="thread_states" xreflabel="">
<imageobject role="pdf">
<imagedata fileref="images/thread_states.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/thread_states.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/thread_states.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure></para>
</formalpara>
 
<formalpara>
<title>Fibrils</title>
 
<para>HelenOS userspace layer knows even smaller units of execution.
Each userspace thread can make use of an arbitrary number of fibrils.
These fibrils have their own synchronous register context, userspace
code and stack. They live their own life within the userspace thread and
the scheduler does not have any idea about them because they are
completely implemented by the userspace library. This implies several
things:<itemizedlist>
<listitem>
<para>fibrils schedule themselves cooperatively within the time
slice given to their userspace thread,</para>
</listitem>
 
<listitem>
<para>fibrils share FPU context of their containing thread
and</para>
</listitem>
 
<listitem>
<para>all fibrils of one userspace thread block when one of them
goes to sleep.</para>
</listitem>
</itemizedlist></para>
</formalpara>
</section>
 
<section>
<title>Scheduler</title>
 
<section>
<title>Run Queues</title>
 
<para>There is an array of several run queues on each processor. The
current version of HelenOS uses 16 run queues implemented by 16 doubly
linked lists. Each of the run queues is associated with thread priority.
The lower the run queue index in the array is, the higher is the
priority of threads linked in that run queue and the shorter is the time
in which those threads will execute. When kernel code wants to access
the run queue, it must first acquire its lock.</para>
</section>
 
<section>
<title>Scheduler Operation</title>
 
<para>The scheduler is invoked either explicitly when a thread calls the
<code>scheduler()</code> function (e.g. goes to sleep or merely wants to
relinquish the processor for a while) or implicitly on a periodic basis
when the generic clock interrupt preempts the current thread. After its
invocation, the scheduler saves the synchronous register context of the
current thread and switches to its private stack. Afterwards, a new
thread is selected according to the scheduling policy. If there is no
suitable thread, the processor is idle and no thread executes on it.
Note that the act of switching to the private scheduler stack is
essential. If the processor kept running using the stack of the
preempted thread it could damage it because the old thread can be
migrated to another processor and scheduled there. In the worst case
scenario, two execution flows would be using the same stack.</para>
 
<para>The scheduling policy is implemented in the function
<code>find_best_thread()</code>. This function walks the processor run
queues from lower towards higher indices and looks for a thread. If the
visited run queue is empty, it simply searches the next run queue. If it
is known in advance that there are no ready threads waiting for
execution, <code>find_best_thread()</code> interruptibly halts the
processor or busy waits until some threads arrive. This process repeats
until <code>find_best_thread()</code> succeeds.</para>
 
<para>After the best thread is chosen, the scheduler switches to the
thread's task and memory management context. Finally, the saved
synchronous register context is restored and the thread runs. Each
scheduled thread is given a time slice depending on its priority (i.e.
run queue). The higher priority, the shorter timeslice. To summarize,
this policy schedules threads with high priorities more frequently but
gives them smaller time slices. On the other hand, lower priority
threads are scheduled less frequently, but run for longer periods of
time.</para>
 
<para>When a thread uses its entire time slice, it is preempted and put
back into the run queue that immediately follows the previous run queue
from which the thread ran. Threads that are woken up from a sleep are
put into the biggest priority run queue. Low priority threads are
therefore those that don't go to sleep so often and just occupy the
processor.</para>
 
<para>In order to avoid complete starvation of the low priority threads,
from time to time, the scheduler will provide them with a bonus of one
point priority increase. In other words, the scheduler will now and then
move the entire run queues one level up.</para>
</section>
 
<section>
<title>Processor Load Balancing</title>
 
<para>Normally, for the sake of cache locality, threads are scheduled on
one of the processors and don't leave it. Nevertheless, a situation in
which one processor is heavily overloaded while others sit idle can
occur. HelenOS deploys special kernel threads to help mitigate this
problem. Each processor is associated with one load balancing thread
called <code>kcpulb</code> that wakes up regularly to see whether its
processor is underbalanced or not. If it is, the thread attempts to
migrate threads from other overloaded processors to its own processor's
run queues. When the job is done or there is no need for load balancing,
the thread goes to sleep.</para>
 
<para>The balancing threads operate very gently and try to migrate low
priority threads first; one <code>kcpulb</code> never takes from one
processor twice in a row. The load balancing threads as well as threads
that were just stolen cannot be migrated. The <code>kcpulb</code>
threads are wired to their processors and cannot be migrated whatsoever.
The ordinary threads are protected only until they are
rescheduled.</para>
</section>
</section>
</chapter>
/design/trunk/src/ap_arch.xml
0,0 → 1,280
<?xml version="1.0" encoding="UTF-8"?>
<appendix id="archspecs">
<?dbhtml filename="arch.html"?>
 
<title>Architecture Specific Notes</title>
 
<section>
<title>AMD64/Intel EM64T</title>
 
<para>The amd64 architecture is a 64-bit extension of the older ia32
architecture. Only 64-bit applications are supported. Creating this port
was relatively easy, because it shares a lot of common code with ia32
platform. However, the 64-bit extension has some specifics, which made the
porting interesting.</para>
 
<section>
<title>Virtual Memory</title>
 
<para>The amd64 architecture uses standard processor defined 4-level
page mapping of 4KB pages. The NX(no-execute) flag on individual pages
is fully supported.</para>
</section>
 
<section>
<title>TLB-only Paging</title>
 
<para>All memory on the amd64 architecture is memory mapped, if the
kernel needs to access physical memory, a mapping must be created.
During boot process the boot loader creates mapping for the first 20MB
of physical memory. To correctly initialize the page mapping system, an
identity mapping of whole physical memory must be created. However, to
create the mapping it is unavoidable to allocate new - possibly unmapped
- frames from frame allocator. The ia32 solves it by mapping first 2GB
memory during boot process. The same solution on 64-bit platform becomes
unfeasible because of the size of the possible address space.</para>
 
<para>As soon as the exception routines are initialized, a special page
fault exception handler is installed which provides a complete view of
physical memory until the real page mapping system is initialized. It
dynamically changes the page tables to always contain exactly the
faulting address. The page then becomes cached in the TLB and on the
next page fault the same tables can be utilized to handle another
mapping.</para>
</section>
 
<section>
<title>Mapping of Physical Memory</title>
 
<para>The amd64 ABI document describes several modes of program layout.
The operating system kernel should be compiled in a
<emphasis>kernel</emphasis> mode - the kernel is located in the negative
2 gigabytes (0xffffffff80000000-0xfffffffffffffffff) and can access data
anywhere in the 64-bit space. This wouldn't allow kernel to see directly
more than 2GB of physical memory. HelenOS duplicates the virtual mapping
of the physical memory starting at 0xffff800000000000 and accesses all
external references using this address range.</para>
</section>
 
<section>
<title>Thread Local Storage</title>
 
<para>The code accessing thread local storage uses a segment register FS
as a base. The thread local storage is stored in the hidden 64-bit part
of the FS register which must be written using priviledged machine
specific instructions. Special syscall to change this register is
provided to user applications. The TLS address for this platform is
expected to point just after the end of the thread local data. The
application sometimes need to get a real address of the thread local
data in its address space but it is impossible to read the base of the
FS segmentation register. The solution is to add the self-reference
address to the end of thread local data, so that the application can
read the address as %gs:0.</para>
 
<figure float="1">
<title>IA-32 &amp; AMD64 TLD</title>
 
<mediaobject id="tldia32">
<imageobject role="pdf">
<imagedata fileref="images/tld_ia32.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/tld_ia32.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/tld_ia32.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
</section>
 
<section>
<title>Fast SYSCALL/SYSRET Support</title>
 
<para>The entry point for system calls was traditionally a speed problem
on the ia32 architecture. The amd64 supports SYSCALL/SYSRET
instructions. Upon encountering the SYSCALL instruction, the processor
changes privilege mode and transfers control to an address stored in
machine specific register. Unlike other similar instructions it does not
change stack to a known kernel stack, which must be done by the syscall
entry routine. A hidden part of a GS register is provided to support the
entry routine with data needed for switching to kernel stack.</para>
</section>
 
<section>
<title>Debugging Support</title>
 
<para>To provide developers tools for finding bugs, hardware breakpoints
and watchpoints are supported. The kernel also supports self-debugging -
it sets watchpoints on certain data and upon every modification
automatically checks whether a correct value was written. It is
worthwhile to mention, that since this feature was implemented, the
watchpoint was never fired.</para>
</section>
</section>
 
<section>
<title>Intel IA-32</title>
 
<para>The ia32 architecture uses 4K pages and processor supported 2-level
page tables. Along with amd64, it is one of the two architectures that fully
support SMP configurations. The architecture is mostly similar to amd64,
it even shares a lot of code. The debugging support is the same as with
amd64. The thread local storage uses GS register.</para>
</section>
 
<section>
<title>32-bit MIPS</title>
 
<para>Both little and big endian kernels are supported. In order to test
different page sizes, the mips32 page size was set to 16K. The mips32
architecture is TLB-only, the kernel simulates 2-level page tables. On
processors that support it, lazy FPU context switching is
implemented.</para>
 
<section>
<title>Thread Local Storage</title>
 
<para>The thread local storage support in compilers is a relatively
recent phenomena. The standardization of such support for the mips32
platform is very new and even the newest versions of GCC cannot generate
100% correct code. Because of some weird MIPS processor variants, it was
decided, that the TLS pointer will be gathered not from some of the free
registers, but a special instruction was devised and the kernel is
supposed to emulate it. HelenOS expects that the TLS pointer is in the
K1 register. Upon encountering the reserved instruction exception and
checking that the application is requesting a TLS pointer, it returns
the contents of the K1 register. The K1 register is expected to point
0x7000 bytes after the beginning of the thread local data.</para>
 
<figure float="1">
<title>MIPS &amp; PowerPC TLD</title>
 
<mediaobject id="tldmips">
<imageobject role="pdf">
<imagedata fileref="images/tld_mips.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/tld_mips.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/tld_mips.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure>
</section>
 
<section>
<title>Lazy FPU Context Switching</title>
 
<para>Implementing lazy FPU switching on MIPS architecture is
straightforward. When coprocessor CP1 is disabled, any FPU intruction
raises a Coprocessor Unusable exception. The generic lazy FPU context
switch is then called that takes care of the correct context
save/restore.</para>
</section>
</section>
 
<section>
<title>Power PC</title>
 
<para>PowerPC allows kernel to enable mode, where data and intruction
memory reads are not translated through virtual memory mapping
(<emphasis>real mode</emphasis>). The real mode is automatically enabled
when an exception occurs. However, the kernel uses the same memory
structure as on other 32-bit platforms - physical memory is mapped into
the top 2GB, userspace memory is available in the bottom half of the
32-bit address space.</para>
 
<section>
<title>OpenFirmware Boot</title>
 
<para>The OpenFirmware loads an image of HelenOS operating system and
passes control to the HelenOS specific boot loader. The boot loader then
performs following tasks:</para>
 
<itemizedlist>
<listitem>
<para>Fetches information from OpenFirmware regarding memory
structure, device information etc.</para>
</listitem>
 
<listitem>
<para>Switches memory mapping to the real mode.</para>
</listitem>
 
<listitem>
<para>Copies the kernel to proper physical address.</para>
</listitem>
 
<listitem>
<para>Creates basic memory mapping and switches to the new kernel
mapping, in which the kernel can run.</para>
</listitem>
 
<listitem>
<para>Passes control to the kernel <function>main_bsp</function>
function.</para>
</listitem>
</itemizedlist>
</section>
 
<section>
<title>Thread Local Storage</title>
 
<para>The Power PC thread local storage uses R2 register to hold an
address, that is 0x7000 bytes after the beginning of the thread local
data. Overally it is the same as on the MIPS architecture.</para>
</section>
</section>
 
<section>
<title>IA-64</title>
 
<para>The ia64 kernel uses 16K pages.</para>
 
<section>
<title>Two IA-64 Stacks</title>
 
<para>The architecture makes use of a pair of stacks. One stack is the
ordinary memory stack while the other is a special register stack. This
makes the ia64 architecture unique. HelenOS on ia64 solves the problem
by allocating two physical memory frames for thread and scheduler
stacks. The upper frame is used by the register stack while the first
frame is used by the conventional memory stack. The generic kernel and
userspace code had to be adjusted to cope with the possibility of
allocating more frames for the stack.</para>
</section>
 
<section>
<title>Thread Local Storage</title>
 
<para>Although thread local storage is not officially supported in
statically linked binaries, GCC supports it without any major obstacles.
The r13 register is used as a thread pointer, the thread local data
section starts at address r13+16.</para>
 
<para><figure float="1">
<title>IA-64 TLD</title>
 
<mediaobject id="tldia64">
<imageobject role="pdf">
<imagedata fileref="images/tld_ia64.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/tld_ia64.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/tld_ia64.svg" format="SVG" />
</imageobject>
</mediaobject>
</figure></para>
</section>
</section>
</appendix>
/design/trunk/src/ch_ds.xml
0,0 → 1,180
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="ds">
<?dbhtml filename="ds.html"?>
 
<title>Data Structures</title>
 
<para>There is a lot of data that either flows through various HelenOS
subsystems or is stored directly by them. Each subsystem uses its own data
structures to represent the data. These data structures need to be kept
somewhere. In order to work efficiently, HelenOS, and especially its kernel,
deploys several house keeping data types that are designed to facilitate
managing other data structures. Most of them serve like generic
containers.</para>
 
<section>
<title>Lists</title>
 
<indexterm>
<primary>linked list</primary>
</indexterm>
 
<para>HelenOS uses doubly-circularly-linked lists to bind related data
together. Lists are composed of an independent sentinel node called head
and links that are always part of the object that is to be put into the
list. Adding items to a list thus doesn't require any further memory
allocations. Head and each link then contains forward and backward
pointer. An empty list is composed of a sole head whose both pointers
reference the head itself. The expense of two times bigger memory
consumption as compared to memory consumption of singly linked lists is
justified by constant insertion and removal times at random positions
within the list.</para>
 
<para>Lists are frequently used to implement FIFO behaviour (e.g.
scheduler run queues or synchronization wait queues). Contrary to the FIFO
type, which is also supported by HelenOS, they don't take up any unused
space and are more general. On the other hand, they are slower than
in-array FIFOs and can be hardly used to implement buffers.</para>
 
<figure float="1">
<mediaobject id="list" xreflabel="">
<imageobject role="pdf">
<imagedata fileref="images/list.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/list.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/list.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Doubly-circularly-linked list</title>
</figure>
</section>
 
<section>
<title>FIFO Queues</title>
 
<indexterm>
<primary>FIFO queue</primary>
</indexterm>
 
<para>FIFO queues are implemented as either statically or dynamically
allocated arrays<footnote>
<para>Depending on the array size.</para>
</footnote> of some generic type with two indices. The first index
points to the head of the FIFO queue and the other points to the tail
thereof. There can be as many items in the FIFO as is the number of
elements in the array and no more. The indices are taken modulo size of
the queue because as a consequence of insertions and deletions, the tail
can have numericaly lower index than the head.</para>
 
<para>FIFO queues are used, for example, in ASID management code to store
inactive ASIDs or in userspace keyboard driver to buffer read
characters.</para>
 
<figure float="1">
<mediaobject id="fifo" xreflabel="">
<imageobject role="pdf">
<imagedata fileref="images/fifo.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/fifo.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/fifo.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>FIFO queue showing the wrap around the end of the array.</title>
</figure>
</section>
 
<section id="hashtables">
<title>Hash Tables</title>
 
<indexterm>
<primary>hash table</primary>
</indexterm>
 
<para>The kernel, as well as userspace, provides hash table data type
which uses separate chaining. The hash table type is very generic in that
it forces the user to supply methods for computing the hash index,
comparing items against a set of keys and the item removal callback
function. Besides these virtual operations, the hash table is composed of
a dynamically allocated array of list heads that represent each chain,
number of chains and the maximal number of keys.</para>
 
<figure float="1">
<mediaobject id="hash" xreflabel="">
<imageobject role="pdf">
<imagedata fileref="images/hash.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/hash.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/hash.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>Generic hash table.</title>
</figure>
</section>
 
<section>
<title>Bitmaps</title>
 
<indexterm>
<primary>bitmap</primary>
</indexterm>
 
<para>Several bitmap operations such as clearing or setting consecutive
bit sequences as well as copying portions of one bitmap into another one
are supported.</para>
</section>
 
<section>
<title>B+trees</title>
 
<indexterm>
<primary>B-trees</primary>
 
<secondary>- B+tree</secondary>
</indexterm>
 
<para>HelenOS makes use of a variant of B-tree called B+tree. B+trees, in
HelenOS implementation, are 3-4-5 balanced trees. They are characteristic
by the fact that values are kept only in the leaf-level nodes and that
these nodes are linked together in a list. This data structure has
logaritmic search, insertion and deletion times and, thanks to the
leaf-level list, provides fantastic means of walking the nodes containing
data. Moreover, B+trees can be used for easy storing, resizing and merging
of disjunctive intervals.</para>
 
<figure float="1">
<mediaobject id="btree" xreflabel="">
<imageobject role="pdf">
<imagedata fileref="images/btree.pdf" format="PDF" />
</imageobject>
 
<imageobject role="html">
<imagedata fileref="images/btree.png" format="PNG" />
</imageobject>
 
<imageobject role="fop">
<imagedata fileref="images/btree.svg" format="SVG" />
</imageobject>
</mediaobject>
 
<title>B+tree containing keys ranging from 1 to 12.</title>
</figure>
</section>
</chapter>
/design/trunk/src/ch_time.xml
0,0 → 1,202
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="time">
<?dbhtml filename="time.html"?>
 
<title>Time Management</title>
 
<para>Time is one of the dimensions in which kernel as well as the whole
system operates. It is of special importance to many kernel subsytems.
Knowledge of time makes it possible for the scheduler to preemptively plan
threads for execution. Different parts of the kernel can request execution
of their callback function with a specified delay. A good example of such
kernel code is the synchronization subsystem which uses this functionality
to implement timeouting versions of synchronization primitives.</para>
 
<section>
<title>System Clock</title>
 
<para>Every hardware architecture supported by HelenOS must support some
kind of a device that can be programmed to yield periodic time signals
(i.e. clock interrupts). Some architectures have external clock that is
merely programmed by the kernel to interrupt the processor multiple times
in a second. This is the case of ia32 and amd64 architectures<footnote>
<para>When running in uniprocessor mode.</para>
</footnote>, which use i8254 or a compatible chip to achieve the
goal.</para>
 
<para>Other architectures' processors typically contain two registers. The
first register is usually called a compare or a match register and can be
set to an arbitrary value by the operating system. The contents of the
compare register then stays unaltered until it is written by the kernel
again. The second register, often called a counter register, can be also
written by the kernel, but the processor automatically increments it after
every executed instruction or in some fixed relation to processor speed.
The point is that a clock interrupt is generated whenever the values of
the counter and the compare registers match. Sometimes, the scheme of two
registers is modified so that only one register is needed. Such a
register, called a decrementer, then counts towards zero and an interrupt
is generated when zero is reached.</para>
 
<para>In any case, the initial value of the decrementer or the initial
difference between the counter and the compare registers, respectively,
must be set accordingly to a known relation between the real time and the
speed of the decrementer or the counter register, respectively.</para>
 
<para>The rest of this section will, for the sake of clarity, focus on the
two-register scheme. The decrementer scheme is very similar.</para>
 
<para>The kernel must reinitialize one of the two registers after each
clock interrupt in order to schedule next interrupt. However this step is
tricky and must be done with caution. Imagine that the clock interrupt is
masked either because the kernel is servicing another interrupt or because
the processor locally disabled interrupts for a while. If the clock
interrupt occurs during this period, it will be pending until the
interrupts are enabled again. Theoretically, it could happen an arbitrary
counter register ticks later. Which is worse, the ideal time period
between two non-delayed clock interrupts can also elapse arbitrary number
of times before the delayed interrupt gets serviced. The
architecture-specific part of the clock interrupt driver must avoid time
drifts caused by such behaviour by taking proactive
counter-measures.</para>
 
<para>Let us assume that the kernel wants each clock interrupt be
generated every <constant>TICKCONST</constant> ticks. This value
represents the ideal number of ticks between two non-delayed clock
interrupts and has some known relation to real time. On each clock
interrupt, the kernel computes and writes down the expected value of the
counter register as it hopes to read it on the next clock interrupt. When
that interrupt comes, the kernel reads the counter register again and
compares it with the written down value. If the difference is smaller than
or equal to <constant>TICKCONST</constant>, then the time drift is none or
small and the next interrupt is scheduled earlier with a penalty of so
many ticks as is the value of the difference. However, if the difference
is bigger, then at least one clock signal was missed. In that case, the
missed clock signal is remembered in the special counter. If there are
more missed signals, each of them is recorded there. The next interrupt is
scheduled with respect to the difference similarily to the former case.
This time, the penalty is taken modulo <constant>TICKCONST</constant>. The
effect of missed clock signals is remedied in the generic clock interrupt
handler.</para>
</section>
 
<section>
<title>Timeouts</title>
 
<para>Kernel subsystems can register a callback function to be executed
with a specified delay. Such a registration is represented by a kernel
structure called <classname>timeout</classname>. Timeouts are registered
via <code>timeout_register</code> function. This function takes a pointer
to a timeout structure, a callback function, a parameter of the callback
function and a delay in microseconds as parameters. After the structure is
initialized with all these values, it is sorted into the processor's list
of active timeouts, according to the number of clock interrupts remaining
to their expiration and relatively to already listed timeouts.</para>
 
<para>Timeouts can be unregistered via <code>timeout_unregister</code>.
This function can, as opposed to <code>timeout_register</code>, fail when
it is too late to remove the timeout from the list of active
timeouts.</para>
 
<para>Timeouts are nearing their expiration in the list of active timeouts
which exists on every processor in the system. The expiration counters are
decremented on each clock interrupt by the generic clock interrupt
handler. Due to the relative ordering of timeouts in the list, it is
sufficient to decrement expiration counter only of the first timeout in
the list. Timeouts with expiration counter equal to zero are removed from
the list and their callback function is called with respective
parameter.</para>
</section>
 
<section>
<title>Generic Clock Interrupt Handler</title>
 
<para>On each clock interrupt, the architecture specific part of the clock
interrupt handler makes a call to the generic clock interrupt handler
implemented by the <code>clock</code> function. The generic handler takes
care of several mission critical goals:</para>
 
<itemizedlist>
<listitem>
<para>expiration of timeouts,</para>
</listitem>
 
<listitem>
<para>updating time of the day counters for userspace and</para>
</listitem>
 
<listitem>
<para>preemption of threads.</para>
</listitem>
</itemizedlist>
 
<para>The <code>clock</code> function checks for expired timeouts and
decrements unexpired timeout expiration counters exactly one more times
than is the number of missed clock signals (i.e. at least once and
possibly more times, depending on the missed clock signals counter). The
time of the day counters are also updated one more times than is the
number of missed clock signals. And finally, the remaining timeslice of
the running thread is decremented with respect to this counter as well. By
considering its value, the kernel performs actions that would otherwise be
lost due to an occasional excessive time drift described in previous
paragraphs.</para>
</section>
 
<section>
<title>Time Source for Userspace</title>
 
<para>In HelenOS, userspace tasks don't communicate with the kernel in
order to read the system time. Instead, a mechanism that shares kernel
time of the the day counters with userspace address spaces is deployed. On
the kernel side, during system initialization, HelenOS allocates a frame
of physical memory and stores the time of the day counters there. The
counters have the following structure:</para>
 
<itemizedlist>
<listitem>
<para>first 32-bit counter for seconds,</para>
</listitem>
 
<listitem>
<para>32-bit counter for microseconds and</para>
</listitem>
 
<listitem>
<para>second 32-bit counter for seconds.</para>
</listitem>
</itemizedlist>
 
<para>One of the userspace tasks with capabilities of memory manager (e.g.
ns) asks the kernel to map this frame into its address space. Other
non-privileged tasks then use IPC to receive read-only share of this
memory. Reading time in a userspace task is therefore just a matter of
reading memory.</para>
 
<para>There are two interesting points about this. First, the counters are
32-bit even on 64-bit machines. The goal is to provide subsecond precision
with the possibility to span roughly 136 years. Note that a single 64-bit
microsecond counter could not be usually read atomically on 32-bit
platforms. Unfortunately, on 32-bit platforms it is usually impossible to
read atomically two 32-bit counters either. However, a generic protocol is
used to guarantee that sequentially read times will create a
non-decreasing sequence.</para>
 
<para>The problematic part is incrementing seconds counter and clearing
microseconds counter together once every second. Seconds must be
incremented and microseconds must be reset. However, without any
synchronization, the two kernel stores and the two userspace reads can
arbitrarily interleave. Furthemore, the reader has no chance to detect
that the counters were updated only paritally. Therefore three counters
are used in HelenOS.</para>
 
<para>If seconds need to be updated, the kernel increments the first
second counter, issues a write memory barrier operation, updates the
microsecond counter, issues another write memory barrier operation and
increments the second second counter. When only microseconds needs to be
updated, no special action is taken by the kernel. On the other hand, the
userspace task must always read all three counters in reversed order. A
read memory barrier operation must be issued between each two reads. A
non-atomic read is detected when the two second counters differ. The
userspace library solves this situation by returning higher of them with
microseconds set to zero.</para>
</section>
</chapter>
/design/trunk/src/ch_hardware.xml
0,0 → 1,79
<?xml version="1.0" encoding="UTF-8"?>
<chapter id="hardware">
<?dbhtml filename="hardware.html"?>
 
<title>Device Drivers</title>
 
<para>Since HelenOS is a microkernel, a framework for supporting userspace
device drivers has been implemented. A typical userspace task acting as a
device driver might need to:</para>
 
<itemizedlist>
<listitem>
<para>receive notifications about interrupts sent by its device,</para>
</listitem>
 
<listitem>
<para>access physical memory address space,</para>
</listitem>
 
<listitem>
<para>access I/O space and</para>
</listitem>
 
<listitem>
<para>control preemption.</para>
</listitem>
</itemizedlist>
 
<section>
<title>Interrupt Notifications</title>
 
<para>Userspace tasks that are in hold of the
<constant>CAP_IRQ_REG</constant> capability can register themselves via
the <code>ipc_register_irq()</code> to be notified about occurrences of a
given interrupt. The registration call takes two arguments. The first
argument is the IRQ number and the second is the pointer to special
pseudocode that instructs the kernel interrupt handler how to process the
IRQ. Currently the pseudocode language supports reading and writing
physical memory, reading from and writing to I/O space and actions related
to running HelenOS in virtual environments.</para>
 
<para>When the interrupt comes after its handler has been registered by a
userspace task, the kernel interrupt handler interprets the pseudocode
program and sends an IPC notification to the respective task. The
userspace task can get certain information about the interrupt (e.g. what
key was pressed) by issuing memory or I/O space reads in the pseudocode
program. The read values are wrapped into the IPC notification sent to the
task. The write operations are also very essential because some interrupts
are level-sensitive and need to be processed in the kernel interrupt
routine. In many situations, the interrupt is considered serviced only
when the interrupt handler performs certain reads or writes of memory or
I/O space.</para>
</section>
 
<section>
<title>Accessing Memory and I/O Space</title>
 
<para>When a task has the <constant>CAP_MEM_MANAGER</constant> capability,
it can use the <constant>SYS_MAP_PHYSMEM</constant> to map regions of
physical memory to its address space. When successful, the syscall creates
an address space area for the physical memory region. The address space
area can be further shared by other tasks. Similarily, when a task has the
<constant>CAP_IOSPACE_MANAGER</constant> capability, it is entitled to
request access to the I/O space by using the
<constant>SYS_IOSPACE_ENABLE</constant>. However, this syscall is relevant
only on architectures that have separate I/O space (e.g. amd64 and
ia32).</para>
</section>
 
<section>
<title>Disabling Preemption</title>
 
<para>It might be desirable for a device driver to temporarily disable
preemption. Tasks that can do this are required to have the
<constant>CAP_PREEMPT_CONTROL</constant> capability. Preemption could be theoretically disabled
by disabling interrupts on the current processor, but disabling preemption
is more lightweight as interrupt processing remains enabled.</para>
</section>
</chapter>
/design/trunk/src/index.xml
0,0 → 1,59
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
"http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
<!ENTITY chintro SYSTEM "ch_intro.xml">
<!ENTITY charcho SYSTEM "ch_arch_overview.xml">
<!ENTITY chds SYSTEM "ch_ds.xml">
<!ENTITY chtime SYSTEM "ch_time.xml">
<!ENTITY chsched SYSTEM "ch_scheduling.xml">
<!ENTITY chsynch SYSTEM "ch_synchronization.xml">
<!ENTITY chmemmg SYSTEM "ch_memory_management.xml">
<!ENTITY chipcom SYSTEM "ch_ipc.xml">
<!ENTITY chhware SYSTEM "ch_hardware.xml">
<!ENTITY apparch SYSTEM "ap_arch.xml">
<!ENTITY biblio SYSTEM "biblio.xml">
]>
 
<book>
<bookinfo>
<title>HelenOS 0.2.0</title>
<subtitle>design documentation</subtitle>
</bookinfo>
 
<!-- Infroduction -->
&chintro;
<!-- Arch overview -->
&charcho;
 
<!-- Data structures -->
&chds;
<!-- Time management -->
&chtime;
<!-- Scheduling -->
&chsched;
<!-- Synchronization -->
&chsynch;
<!-- Memory management -->
&chmemmg;
 
<!-- IPC -->
&chipcom;
<!-- Hardware handling -->
&chhware;
 
<!-- Architecture specifics -->
&apparch;
<!-- Bibliography -->
&biblio;
<!-- Index -->
<index/>
</book>
/design/trunk/src/biblio.xml
0,0 → 1,97
<?xml version="1.0" encoding="UTF-8"?>
<bibliography>
<title>Bibliography</title>
<biblioentry id="Black89">
<abbrev>Black89</abbrev>
 
<authorgroup>
<author>
<firstname>D.L.</firstname>
 
<surname>Black</surname>
</author>
 
<author>
<firstname>R.F.</firstname>
 
<surname>Rashid</surname>
</author>
 
<author>
<firstname>D.B.</firstname>
 
<surname>Golub</surname>
</author>
 
<author>
<firstname>C.R.</firstname>
 
<surname>Hill</surname>
</author>
</authorgroup>
 
<issn>0163-5964</issn>
 
<publisher>
<publishername>ACM Press</publishername>
</publisher>
 
<title>Translation Lookaside Buffer Consistency: A Software
Approach</title>
</biblioentry>
 
<biblioentry id="Bonwick01">
<abbrev>Bonwick01</abbrev>
 
<authorgroup>
<author>
<firstname>Jeff</firstname>
 
<surname>Bonwick</surname>
</author>
 
<author>
<firstname>Jonathan</firstname>
 
<surname>Adams</surname>
</author>
</authorgroup>
 
<publisher>
<publishername>USENIX</publishername>
</publisher>
 
<title>Magazines and Vmem: Extending the Slab Allocator to Many CPUs and
Arbitrary Resources</title>
</biblioentry>
 
<biblioentry id="futex">
<abbrev>Franke et al.</abbrev>
 
<authorgroup>
<author>
<firstname>Hubertus</firstname>
 
<surname>Franke</surname>
</author>
 
<author>
<firstname>Rusty</firstname>
 
<surname>Russell</surname>
</author>
 
<author>
<firstname>Matthew</firstname>
 
<surname>Kirkwood</surname>
</author>
</authorgroup>
 
<publisher>
<publishername>Proceedings of the 2002 Ottawa Linux Summit</publishername>
</publisher>
<title>Fuss, Futexes and Furwocks: Fast Userlevel Locking in
Linux</title>
</biblioentry>
</bibliography>
/design/trunk/tools/extra/dblatex-extra.xsl
0,0 → 1,16
<?xml version='1.0'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version='1.0'>
 
<!--
Implement inline <code/> tag
-->
<xsl:template match="code">
<xsl:call-template name="inline.italicmonoseq"/>
</xsl:template>
 
 
<xsl:template match="subtitle[@style='italic']">
<xsl:call-template name="inline.italicmonoseq"/>
</xsl:template>
 
</xsl:stylesheet>
/design/trunk/tools/toolchain
0,0 → 1,95
#!/bin/bash
 
# DocBook Toolchain for ${PLATFORM}
# by Sergey Bondari <bondari@itbs.cz>
 
 
check_error() {
if [ "$1" -ne "0" ]; then
echo
echo "Script failed: $2"
exit
fi
}
 
DOCBOOKXSL_VERSION="1.69.1"
FOP_VERSION="0.20.5"
DBLATEX_VERSION="0.1.9"
 
DOCBOOKXSL="docbook-xsl-${DOCBOOKXSL_VERSION}.tar.bz2"
DOCBOOKXSL_PATCH="docbook-xsl-${DOCBOOKXSL_VERSION}-patch.tar.bz2"
 
FOP="fop-${FOP_VERSION}-src.tar.gz"
JIMI="jimi-1.0.jar"
DBLATEX="dblatex-${DBLATEX_VERSION}.tar.bz2"
 
DOCBOOKXSL_SOURCE="http://www.helenos.eu/tools/"
JIMI_SOURCE="http://www.helenos.eu/tools/"
FOP_SOURCE="http://ftp.sh.cvut.cz/MIRRORS/apache/xmlgraphics/fop/"
DBLATEX_SOURCE="http://mesh.dl.sourceforge.net/sourceforge/dblatex/"
 
WORKDIR=`pwd`
 
DOCBOOKXSLDIR="${WORKDIR}/docbook-xsl-${DOCBOOKXSL_VERSION}"
FOPDIR="${WORKDIR}/fop-${FOP_VERSION}"
 
echo ">>> Downloading tarballs"
 
if [ ! -f "${DOCBOOKXSL}" ]; then
wget -c "${DOCBOOKXSL_SOURCE}${DOCBOOKXSL}"
check_error $? "Error downloading DOCBOOK XSL."
fi
 
if [ ! -f "${DOCBOOKXSL_PATCH}" ]; then
wget -c "${DOCBOOKXSL_SOURCE}${DOCBOOKXSL_PATCH}"
check_error $? "Error downloading DOCBOOK XSL Patch."
fi
 
if [ ! -f "${FOP}" ]; then
wget -c "${FOP_SOURCE}${FOP}"
check_error $? "Error downloading FOP."
fi
 
if [ ! -f "${JIMI}" ]; then
wget -c "${JIMI_SOURCE}${JIMI}"
check_error $? "Error downloading JIMI."
fi
 
if [ ! -f "${DBLATEX}" ]; then
wget -c "${DBLATEX_SOURCE}${DBLATEX}"
check_error $? "Error downloading DBLaTex Patch."
fi
 
 
echo ">>> Unpacking tarballs"
tar -jxvf "${DOCBOOKXSL}"
check_error $? "Error unpacking DOCBOOK XSL."
 
tar -zxvf "${FOP}"
check_error $? "Error unpacking FOP."
 
rm -rf "docbook-xsl"
mv ${DOCBOOKXSLDIR} "docbook-xsl"
check_error $? "Rename failed."
 
tar -jxvf "${DOCBOOKXSL_PATCH}"
check_error $? "Docbook XSL patch injection failed"
 
tar -jxvf "${DBLATEX}"
 
rm -rf "fop"
mv ${FOPDIR} "fop"
check_error $? "Rename failed."
 
cp ${JIMI} fop/lib
check_error $? "Cannot inject JIMI to FOP."
 
mkdir -p ${WORKDIR}/dblatex
cd dblatex-${DBLATEX_VERSION}
./configure --prefix=${WORKDIR}/dblatex
make
make install
cd ..
 
echo
echo ">>> Done."
Property changes:
Added: svn:executable
+*
\ No newline at end of property
/design/trunk/Makefile
0,0 → 1,109
#
# Copyright (C) 2006 Sergey Bondari
# All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
# are met:
#
# - Redistributions of source code must retain the above copyright
# notice, this list of conditions and the following disclaimer.
# - Redistributions in binary form must reproduce the above copyright
# notice, this list of conditions and the following disclaimer in the
# documentation and/or other materials provided with the distribution.
# - The name of the author may not be used to endorse or promote products
# derived from this software without specific prior written permission.
#
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
#
 
 
# Use xsltproc as XSL processor
XSLT = xsltproc
 
TOOLCHAIN_DIR = tools/
 
# DocBook XSL package
DOCBOOK_DIR = $(TOOLCHAIN_DIR)docbook-xsl/
 
# FOP - Apache XML graphics package
FOP_DIR=$(TOOLCHAIN_DIR)fop/
FOP=$(FOP_DIR)fop.sh
 
DBLATEX_DIR=$(TOOLCHAIN_DIR)dblatex/
DBLATEX=$(DBLATEX_DIR)bin/dblatex
 
# Output folders
BUILD_HTML_DIR = build/html/
BUILD_PDF_DIR = build/pdf/
BUILD_HTML_CHUNKED_DIR = build/html.chunked/
 
 
all: html htmlchunked pdf
 
build: clean all
 
html: imgconvert
mkdir -p $(BUILD_HTML_DIR)
mkdir -p $(BUILD_HTML_DIR)images
cp src/images/* $(BUILD_HTML_DIR)images
xsltproc \
--stringparam section.autolabel 1 \
--stringparam section.label.includes.component.label 1 \
--stringparam section.autolabel.max.depth 2 \
--stringparam preferred.mediaobject.role html \
--output $(BUILD_HTML_DIR)index.html $(DOCBOOK_DIR)html/docbook.xsl src/index.xml
htmlchunked: imgconvert
mkdir -p $(BUILD_HTML_CHUNKED_DIR)
mkdir -p $(BUILD_HTML_CHUNKED_DIR)images
cp src/images/* $(BUILD_HTML_CHUNKED_DIR)images
xsltproc \
--stringparam section.autolabel 1 \
--stringparam section.label.includes.component.label 1 \
--stringparam chunk.section.depth 0 \
--stringparam section.autolabel.max.depth 2 \
--stringparam preferred.mediaobject.role html \
--output $(BUILD_HTML_CHUNKED_DIR)index.html $(DOCBOOK_DIR)html/chunk.xsl src/index.xml
pdf: dblatex-pdf
dblatex-pdf: imgconvert
mkdir -p $(BUILD_PDF_DIR)
$(DBLATEX) \
-t pdf -T db2latex -f pdf \
-p tools/extra/dblatex-extra.xsl \
-o $(BUILD_PDF_DIR)HelenOS-doc-design.pdf \
src/index.xml
fo-pdf: imgconvert
mkdir -p $(BUILD_PDF_DIR)
mkdir -p $(BUILD_PDF_DIR)images
cp src/images/* $(BUILD_PDF_DIR)images
xsltproc \
--stringparam paper.type A4 \
--stringparam fop.extensions 1 \
--stringparam bondari.jimi.compatible 1 \
--stringparam section.autolabel 1 \
--stringparam section.label.includes.component.label 1 \
--stringparam section.autolabel.max.depth 2 \
--stringparam body.font.master 12 \
--stringparam preferred.mediaobject.role fop \
--output $(BUILD_PDF_DIR)index.fo $(DOCBOOK_DIR)fo/docbook.xsl src/index.xml
 
$(FOP) -q -fo $(BUILD_PDF_DIR)index.fo -pdf $(BUILD_PDF_DIR)index.pdf
imgconvert:
cd src/images; ./convert
 
distclean: clean
 
clean:
rm -rf build
rm -rf src/images/*.pdf
rm -rf src/images/*.eps
rm -rf src/images/*.png