Bindings

Documentation / C# Edition / User Guide / Agent / Bindings

Bindings

This section describes the ARM language bindings supported by MyARM. It provides a more detailed description of the MyARM set of ARM features.

ARM 4.0 C# Binding

Currently no official ARM 4.0 C# binding exists from The Open Group. But the Eclipse project derived ARM 4.0 C# interfaces from the official ARM 4.0 Java binding. With version 1.2.0 MyARM supports this ARM 4.0 C# interface.

The MyARM implementation of the ARM 4.0 C# interfaces are completely written in C#. Only some of the datasinks will use the an external DLL using platform invoke. Currently the following datasinks are written entirely in C#:

All other datasinks are supported using our C implementation. Thus if you want 100% managed code you have to use the datasinks described above.

MyARM C# ARM 4.0 assembly

C# uses so-called assemblies as its library concept. Due to the fact that there is currently no official OpenGroup technical standard describing the language binding for C# MyARM provides two different assemblies:

  1. ARMInterface.dll -- Assembly which contains all interfaces of the ARM 4.0 C# binding.
  2. ARMImplementation.dll -- Assembly which contains the MyARM C# ARM 4.0 agent.

An application which wants to use ARM needs to load the correct implementation assembly. This can be done by the C# Assembly.Load() method or by specifying an external type with its assembly name and version and calling the Type.GetType() method. When the ARM implementation assembly was loaded successfully. The application needs to create the appropriate ARM factories as described in the creating ARM object appendix in the agent reference.

Response times

The ARM standard defines response times measured in nanoseconds. Not all systems today provide such a high granularity of time stamps. For the C# binding we use the Stopwatch class of the .NET framework to measure response times. This class supports high resolution timing if the underlying hardware supports high resolution timers. Therefore the granularity depends on the hardware used.

Overhead

An overview of the performance impact by using the MyARM ARM 4.0 C# Binding is documented in the appendix ARM 4.0 C# Binding agent overhead.