NAME
Perf::ARM - Perl extension wrapper for the ARM 2.0 implementation
SYNOPSIS
use
Perf::ARM;
my
(
$appl_id
,
$tran_handle
,
$tran_id
,
$rc
);
(
$appl_id
=Perf::ARM::arm_init(
"$0"
,
"*"
, 0,0,0)) ||
die
"arm_init() failed \n"
;
$tran_id
=Perf::ARM::arm_getid(
$appl_id
,
"simple_tran"
,
"detail_$$"
, 0,0,0);
$tran_handle
=Perf::ARM::arm_start(
$tran_id
, 0,0,0);
# do the unit of work to be measured
&do_my_work
(
@my_args
)
$rc
=Perf::ARM::arm_stop(
$tran_handle
, 0, 0,0,0);
$rc
=Perf::ARM::arm_end(
$appl_id
, 0,0,0);
DESCRIPTION
This serves as a simple wrapper around the ARM C routines:
arm_init(char *,char *,long ,char *,long ); [ returns long ]
arm_getid(long ,char *,char *,long ,char *,long ); [ returns long ]
arm_start(long ,long ,char *,long ); [ returns long ]
arm_update(long ,long ,char *,long ); [ returns long ]
arm_stop(long ,long ,long ,char *,long ); [ returns long ]
arm_end(long ,long ,char *,long ); [ returns long ]
Exported functions, with ARM defines
extern arm_int32_t arm_init(
char* appl_name,
char* appl_user_id,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
extern arm_int32_t arm_getid(
arm_int32_t appl_id,
char* tran_name,
char* tran_detail,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
extern arm_int32_t arm_start(
arm_int32_t tran_id,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
extern arm_int32_t arm_update(
arm_int32_t start_handle,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
extern arm_int32_t arm_stop(
arm_int32_t start_handle,
arm_int32_t tran_status,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
extern arm_int32_t arm_end(
arm_int32_t appl_id,
arm_int32_t flags,
char* data,
arm_int32_t data_size);
AUTHOR
bryan_backer@hp.com
BUGS, LIMITATIONS
The module's tests do not currently pass if the system has the no-operation (NULL) shared libraries, as they return zero for all calls.
On some HP-UX builds of perl with the usemymalloc build flag set to 'y', Perf::ARM dumps core. The cause of this problem is not fully understood. If the problem occurs, rebuild the perl with usemymalloc='n'. Running perl -V will show the usemymalloc setting for your perl.
TO DO
- create a useful subset of tests that work
with
the null libarm
from the ARM SDK, allowing
'make test'
to pass on those systems.
- integrate David Carter's Inline suggestions
- integrate David Carter's function name and null parameter
shortening suggestions
- build an object interface similar to the ARM 3.0 Java interface
described at http://regions.cmg.org/regions/cmgarmw/ARM30.html
SEE ALSO
ARM FAQ at http://www.cmg.org/regions/cmgarmw/armfaq.html
Glance docs at http://www.openview.hp.com/products/
CMG ARM Working Group info page at http://www.cmg.org/regions/cmgarmw/
HP-UX: /opt/perf/include/arm.h or /usr/include/arm.h