![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Apex Archive Interface Packages Apex uses an archive to provide many of the runtime services that are used by the compiler. Interfaces to many of these routines are supplied through the V_I_* packages in rational.ss.
Note: Most of the services described in the listing of the rational.ss library are provided by a higher-level interface in the VADS Exec subsystem (rts_vads_exec.ss). It is possible to eliminate that extra layer of software by calling these services directly. One note of caution, however: using the VADS Exec services is protection from changes in future versions of Apex since Rational Software Corporation is committed to preserving the VADS Exec interfaces.
Interface packagesThe following list contains a brief description of each of these packages:
- V_I_Alloc interfaces to Apex memory allocation services (v_i_alloc.1.ada)
This package provides the interfaces to the heap memory allocators for the user space. Normally, it is not needed since using new and instantiating Unchecked_Deallocation work. However, you can bypass the default mechanisms and use these functions directly. This package provides the specification to write a new memory allocator against.
- V_I_Bits supplies Bit_And, Bit_Or, Bit_Xor, Bit_Neg, Bit_Sra, Bit_Srl, and Bit_Sll on integers, long_integers, and addresses (v_i_bits.1.ada).
The operations in this package can be performed using modular types and logical operations on them, features new in Ada 95 (Ada95 LRM 4.5.1(5)), with shifts performed by multiplication and division by powers of 2. These operations are built into the compiler rather than provided as an interface, so their use will generally result in more efficient code, in addition to being portable to other Ada 95 translators. These features are available in the Ada 83 dialect of Apex since they do not conflict with existing Ada 83 features.
- V_I_Callout interfaces to the program, task, and idle callout services (v_i_callout.1.ada).
- V_I_Csema is the low level interface to counting (nonbinary) semaphores (v_i_csema.1.ada).
- V_I_Except is the low level interface to the Ada exception services such as getting the ID, PC and string name of the current exception or installing a callout for raised exceptions (v_i_except.1.ada). It contains the interface to the exception services to:
- Get the ID and program counter (PC) of the current Ada exception
- Return the string name of an exception ID
- Install a callout to be called whenever an exception is raised
Package V_I_Except also contains the interface to the core dump services to:
- Produce a core file from anywhere in your program.
- Enable the generation of a core file for an unhandled Ada exception.
- Enable exception traceback registers to be saved for an unhandled core dump.
Ada 95 programs should use the standard Ada.Exceptions package to provide these services (Ada95 LRM 11.4.1).
- V_I_Intr interfaces to the interrupt services
- V_I_Mbox is the low level interface to the runtime mailbox services (v_i_mbox.1.ada).
- V_I_Mem is the low level interface to the runtime memory services (v_i_mem.1.ada).
- Fixed
- Flex
- Heap pools
- V_I_Mutex is the low level interface to the Abort_Safe mutex and condition variable services (v_i_mutex.1.ada).
Note: The V_I_Mutex package interfaces to the mutex and condition variable services that are Ada tasking Abort_Safe. After locking a mutex, the task is inhibited from being completed by an Ada abort until it unlocks the mutex. However, if the task is aborted while waiting at a condition variable (after an implicit mutex unlock), it is allowed to complete. The V_I_Mutex services also address the case where multiple Abort_Safe mutexes can be locked. A task is inhibited from being completed until all the mutexes are unlocked or it does a condition variable wait with only one mutex locked. There are services to init, destroy, lock, trylock, and unlock an Abort_Safe mutex. There are services to init, destroy, wait on, timed wait on, signal, and broadcast an Abort_Safe condition variable.
- V_I_Async interface to the subprograms called by the compiler to implement the semantics of Ada asynchronous select statements (v_i_async.1.ada).
- V_I_Prot interfaces to the subprograms called by the compiler to implement protected object semantics (v_i_prot.1.ada).
- V_I_Raise interfaces to the Apex exception support services (v_i_raise.1.ada).
- V_I_Requeue interfaces to the subprograms called by the compiler to implement the semantics of the Ada requeue statement. (v_i_requeue.1.ada)
- V_I_Sema is the low level interface to binary semaphores (v_i_sema.1.ada)
- V_I_Sig interfaces to the Apex interrupt entry signal services (v_i_sig.1.ada)
- V_I_Taskop interfaces to the tasking subprograms called by the compiler to implement the tasking semantics (v_i_taskop.1.ada)
- V_I_Tasks provides the low level interface to the Ada tasking extensions (v_i_tasks.1.ada).
- V_I_Time interfaces to the Apex time subprograms (v_i_time.1.ada).
- V_I_TimeOp interfaces to the Apex time operator subprograms (v_i_timeop.1.ada).
- V_I_Types supplies types used in the Runtime System. It includes the type definitions for Time_T, Alloc_T, Test_And_Set_T, and Floating_Point_Control_T (v_i_types.1.ada)
- V_Sema is the inline equivalent of V_I_Sema and contains an identical interface (v_sema.1.ada)
- V_Tas provides inline test and set capability (v_tas.1.ada, v_tas_b.1.ada).
Rational Software Corporation http://www.rational.com support@rational.com techpubs@rational.com Copyright © 1993-2002, Rational Software Corporation. All rights reserved. |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |