/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 & 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 & 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 |