Skip to main content
aboutsummaryrefslogblamecommitdiffstats
blob: 90156d408f29ca6cf2910ca7e5c36f1dc7d5b829 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
                                                              













                                                                                 
                                                                                                                                     




































                                                               



                                                                    
                                                       
 




                                                                           
 
                                                               
 
                                                    
 
                                                  

                                                                    
















































                                                         

                                                                   
                                                                         
                                                                    







































                                                                   
                                                                  





                                    
 
                                
 
                                 
 





                                                                                                                         
 
                              
 





                                                                                           
 
                           
 





                                                                     
 
                     
 
                                                                                 
                                                                                                                            





                         
 
                           
 




                                                       
 
                            
 
                                        
                                                                

















































                                                                                                     
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>

<head>
        <TITLE>TCF Agent Prototype Implementation</TITLE>
</head>

<body LANG="EN-US">

<h1>TCF Agent Prototype Implementation</h1>

<p>
    Copyright (c) 2009 Wind River Systems, Inc. Made available under the EPL v1.0
</p>
<p>
    Direct comments, questions to the <a href="https://dev.eclipse.org/mailman/listinfo/tcf-dev">tcf-dev@eclipse.org</a> mailing list
</p>

<h2>Table of Contents</h2>
<ul>
    <li>
        <a href='#Introduction'>Introduction</a>
    </li>
    <li>
        <a href='#Framework'>Target Communication Framework</a>
    </li>
    <li>
        <a href='#Services'>Services</a>
    </li>
    <li>
        <a href='#Context'>Executable Context Handling</a>
    </li>
    <li>
        <a href='#EventQueue'>Agent Event Queue</a>
    </li>
    <li>
        <a href='#Misc'>Misc</a>
    </li>
    <li>
        <a href='#Architecture'>Architecture</a>
    </li>
</ul>

<h1><a name='Introduction'>Inroduction<a></h1>

<p>This is a brief description of the TCF
agent prototype implementation.</p>

<p>The agent is implemented in C.
The code mostly uses POSIX APIs to improve portability.


<p>The agent is implemented as
an event driven program. The main event queue is handled by a single
thread &ndash; the event dispatch thread. Some sub-systems are using
other threads locally, but will never call other sub-systems using
these threads. Instead an event will be placed on the main event
queue to handle the inter sub-system communication.</p>

<p>Main program parses command line options and initialized sub-systems</p>
<p>Files:</p>
<ul>
        <li>main.c</li>
</ul>

<h1><a name='Framework'>Target Communication Framework</a></h1>

<h3>Command and Event Registration and Dispatch</h3>

<p>This module handles registration of command and
event handlers. It is called when new messages are received and will
dispatch messages to the appropriate handler. It has no knowledge of
what transport protocol is used and what services do.</p>
<p>Files:</p>
<ul>
        <li>protocol.c</li>
        <li>protocol.h</li>
</ul>

<h3>Transport Layer</h3>

<p>Implements input and output stream over TCP/IP
transport and UDP based auto discovery.</p>
<p>Files:</p>
<ul>
        <li>channel.c</li>
        <li>channel.h</li>
        <li>channel_tcp.c</li>
        <li>channel_tcp.h</li>
        <li>discovery.c</li>
        <li>discovery.h</li>
        <li>discovery_udp.c</li>
        <li>discovery_udp.h</li>
        <li>tcf.h</li>
</ul>

<h3>Input and Output Stream Interface and Library</h3>

<p>This module defines generic input and output stream
interfaces and supporting library functions.</p>
<p>Files:</p>
<ul>
        <li>streams.c</li>
        <li>streams.h</li>
</ul>

<h1><a name='Services'>Services</a></h1>

<h3>Breakpoint</h3>

<p>The breakpoint services implements a global
breakpoint list.</p>
<p>Files:</p>
<ul>
        <li>breakpoints.c</li>
        <li>breakpoints.h</li>
</ul>

<h3>Run Control</h3>

<p>This module implements the run control service. It
builds uses the context module to do low level control of contexts.
It implements a &ldquo;safe queue&rdquo; which contains events that
that should be processed then executable contexts are suspended. Incoming
TCF messages are suspended while the safe queue is non-empty and are
resumed when the last safe queue entry is handled.</p>
<p>Files:</p>
<ul>
        <li>runctrl.c</li>
        <li>runctrl.h</li>
</ul>

<h3>System Monitoring</h3>

<p>This module provides system level monitoring
information, similar to the UNIX top or Windows task manager.</p>
<p>Files:</p>
<ul>
        <li>sysmon.c</li>
        <li>sysmon.h</li>
</ul>

<h3>Agent Diagnostics</h3>

<p>This service is used to do end-to-end self test
from the host to the target.</p>
<p>Files:</p>
<ul>
        <li>diagnostics.c</li>
        <li>diagnostics.h</li>
</ul>

<h1><a name='Context'>Executable Context Handling</a></h1>

<p>This module handles process/thread OS contexts and
their state machine. All ptrace() handling is isolated to here.</p>
<p>Files:</p>
<ul>
        <li>context.c</li>
        <li>context.h</li>
</ul>

<h1><a name='EventQueue'>Agent Event Queue<a></h1>

<p>This module implements the main event queue
dispatch and queuing. All events are processed by a single thread.
Any thread can queue new events.</p>
<p>Files:</p>
<ul>
        <li>events.c</li>
        <li>events.h</li>
</ul>

<h1><a name='Misc'>Misc</a></h1>

<h3>Command line interpreter</h3>

<p>The module allows a user to interact with agent. Current implementation of command line interpreter is incomplete.</p>
<p>Files:</p>
<ul>
        <li>cmdline.c</li>
        <li>cmdline.h</li>
</ul>

<h3>Error message display</h3>

<p>This module defines agent error codes in addition to system codes defined in errno.h</p>
<p>Files:</p>
<ul>
        <li>errors.c</li>
        <li>errors.h</li>
</ul>

<h3>Exception Handling</h3>

<p>Exception handling. Functionality is similar to C++ try/catch.</p>
<p>Files:</p>
<ul>
        <li>exceptions.c</li>
        <li>exceptions.h</li>
</ul>

<h3>JSON Library</h3>

<p>The module contains utility functions for parsing and generating of JSON text.
TCF standard services use JSON as messages format. See <a href='TCF Specification.html#JSON'>JSON - Preferred Marshaling</a>
for JSON description.</p>
<p>Files:</p>
<ul>
        <li>json.c</li>
        <li>json.h</li>
</ul>

<h3>Double Linked List</h3>

<p>Utilitity module to support double linked lists.</p>
<p>Files:</p>
<ul>
        <li>link.h</li>
</ul>

<h3>Host OS Abstraction</h3>

<p>Machine and OS dependend definitions.
This module implements host OS abstraction layer that helps make
agent code portable between Linux, Windows, VxWorks and potentially other OSes.</p>
<p>Files:</p>
<ul>
        <li>mdep.c</li>
        <li>mdep.h</li>
</ul>

<h3>Malloc Abstraction</h3>

<p>Provides local versions of malloc(), realloc() and free().</p>
<p>Files:</p>
<ul>
        <li>myalloc.c</li>
        <li>myalloc.h</li>
</ul>

<h3>Proxy</h3>

<p>Proxy service should allow tunneling of TCF messages to another target on behalf of a client.
This service intended to be used when a client has no direct access to a target.</p>
<p>Files:</p>
<ul>
        <li>proxy.c</li>
        <li>proxy.h</li>
</ul>

<h3>Test Application</h3>

<p>Test application is used by Diagnostics service to run various tests.</p>
<p>Files:</p>
<ul>
        <li>test.c</li>
        <li>test.h</li>
</ul>

<h3>Debug Logging</h3>

<p>The module implements logging and tracing that is mostly intended for debugging of the agent.</p>
<p>Files:</p>
<ul>
        <li>trace.c</li>
        <li>trace.h</li>
</ul>

<h1><a name='Architecture'>Architecture</a></h1>

<p><img SRC="TCF%20Architecture.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=647 HEIGHT=359 BORDER=0></p>

</body>
</html>

Back to the top