Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'docs/TCF Linux Agent Prototype.html')
-rw-r--r--docs/TCF Linux Agent Prototype.html199
1 files changed, 199 insertions, 0 deletions
diff --git a/docs/TCF Linux Agent Prototype.html b/docs/TCF Linux Agent Prototype.html
new file mode 100644
index 000000000..50ec8e8fe
--- /dev/null
+++ b/docs/TCF Linux Agent Prototype.html
@@ -0,0 +1,199 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML>
+<HEAD>
+ <META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1251">
+ <TITLE>This is a brief description of the TCF Linux user-mode agent prototype implementation</TITLE>
+ <META NAME="GENERATOR" CONTENT="OpenOffice.org 2.2 (Win32)">
+ <META NAME="CREATED" CONTENT="20070830;12381303">
+ <META NAME="CHANGED" CONTENT="16010101;0">
+ <STYLE TYPE="text/css">
+ <!--
+ H1 { color: #000000 }
+ P { color: #000000 }
+ P.western { font-size: 13pt }
+ H2 { color: #000000 }
+ -->
+ </STYLE>
+</HEAD>
+<BODY LANG="en-US" TEXT="#000000" DIR="LTR">
+
+<P>This is a brief description of the TCF Linux
+user-mode agent prototype implementation. 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>
+
+<H1>Main Program</H1>
+
+<P>Main program parses command line options and initialized sub-systems</P>
+<P>Files:</P>
+<P>main.c</P>
+
+<H1>Target Communication Framework</H1>
+
+<H2>Command and Event Registration and Dispatch</H2>
+
+<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>
+<P>protocol.c</P>
+<P>protocol.h</P>
+
+<H2>Transport Layer</H2>
+
+<P>Implements input and output stream over TCP/IP
+transport and UDP based server side auto discovery.</P>
+<P>Files:</P>
+<P>channel.c</P>
+<P>channel.h</P>
+<P>tcf.h</P>
+
+<H2>Input and Output Stream Interface and Library</H2>
+
+<P>This module defines the input and output stream
+interface and support library functions.</P>
+<P>Files:</P>
+<P>streams.c</P>
+<P>streams.h</P>
+
+<H1>Services</H1>
+
+<H2>Breakpoint</H2>
+
+<P>The breakpoint services implements a global
+breakpoint list.</P>
+<P>Files:</P>
+<P>breakpoints.c</P>
+<P>breakpoints.h</P>
+
+<H2>Run Control</H2>
+
+<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 their context is 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>
+<P>runctrl.c</P>
+<P>runctrl.h</P>
+
+<H2>System Monitoring</H2>
+
+<P>This module provides system level monitoring
+information, similar to the UNIX top or Windows task manager.</P>
+<P>Files:</P>
+<P>sysmon.c</P>
+<P>sysmon.h</P>
+
+<H2>Agent Diagnostics</H2>
+
+<P>This service is used to do end-to-end self test
+from the host to the target.</P>
+<P>Files:</P>
+<P>diagnostics.c</P>
+<P>diagnostics.h</P>
+
+<H1>OS Context Handling</H1>
+
+<P>This module handles process/thread OS contexts and
+their state machine. All ptrace() handling is isolated to here.</P>
+<P>Files:</P>
+<P>context.c</P>
+<P>context.h</P>
+
+<H1>Agent Event Queue</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>
+<P>events.c</P>
+<P>events.h</P>
+
+<H1>Misc</H1>
+
+<H2>Command line interpreter</H2>
+
+<P>The module allows a user to interact with agent. Current implementation of command line interpreter is incomplete.</P>
+<P>Files:</P>
+<P>cmdline.c</P>
+<P>cmdline.h</P>
+
+<H2>Error message display</H2>
+
+<P>This module defines agent error codes in addition to system codes defined in errno.h</P>
+<P>Files:</P>
+<P>errors.c</P>
+<P>errors.h</P>
+
+<H2>Exception Handling</H2>
+
+<P>Exception handling. Functionality is similar to C++ try/catch.</P>
+<P>Files:</P>
+<P>exceptions.c</P>
+<P>exceptions.h</P>
+
+<H2>JSON Library</H2>
+
+<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>
+<P>json.c</P>
+<P>json.h</P>
+
+<H2>Double Linked List</H2>
+
+<P>Utilitity module to support double linked lists.</P>
+<P>Files:</P>
+<P>link.h</P>
+
+<H2>Host OS Abstraction</H2>
+
+<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>
+<P>mdep.c</P>
+<P>mdep.h</P>
+
+<H2>Malloc Abstraction</H2>
+
+<P>Provides local versions of malloc(), realloc() and free().</P>
+<P>Files:</P>
+<P>myalloc.c</P>
+<P>myalloc.h</P>
+
+<H2>Proxy</H2>
+
+<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>
+<P>proxy.c</P>
+<P>proxy.h</P>
+
+<H2>Test Application</H2>
+
+<P>Test application is used by Diagnostics service to run various tests.</P>
+<P>Files:</P>
+<P>test.c</P>
+<P>test.h</P>
+
+<H2>Debug Logging</H2>
+
+<P>The module implements logging and tracing that is mostly intended for debugging of the agent.</P>
+<P>Files:</P>
+<P>trace.c</P>
+<P>trace.h</P>
+
+<H1>Architecture</H1>
+
+<P><IMG SRC="TCF%20Architecture.png" NAME="graphics1" ALIGN=BOTTOM WIDTH=647 HEIGHT=359 BORDER=0></P>
+
+</BODY>
+</HTML>

Back to the top