home *** CD-ROM | disk | FTP | other *** search
/ vsiftp.vmssoftware.com / VSIPUBLIC@vsiftp.vmssoftware.com.tar / FREEWARE / FREEWARE40.ZIP / callmon / src / callmon.h < prev    next >
C/C++ Source or Header  |  1996-08-06  |  2KB  |  84 lines

  1. /*  CALLMON - A Call Monitor for OpenVMS Alpha
  2.  *
  3.  *  File:     CALLMON.H
  4.  *  Author:   Thierry Lelegard
  5.  *  Version:  1.0
  6.  *  Date:     24-JUL-1996
  7.  *
  8.  *  Abstract: Public Interface of CALLMON
  9.  */
  10.  
  11.  
  12. #ifndef CALLMON_H_LOADED
  13. #define CALLMON_H_LOADED 1
  14.  
  15. #include <ints.h>
  16. #include "callmonmsg.h"
  17.  
  18. typedef enum {
  19.     CALLMON$C_FALSE = 0,
  20.     CALLMON$C_TRUE  = 1
  21. } callmon$boolean_t;
  22.  
  23. #pragma nostandard
  24. typedef struct {
  25.     uint32 post_processing;
  26.     uint32 call_it;
  27.     uint64 result_r0;
  28.     uint64 result_r1;
  29.     uint64 result_f0;
  30.     uint64 result_f1;
  31.     uint64 arg_count;
  32.     uint64 arg_list [];
  33. } callmon$arguments_t;
  34. #pragma standard
  35.  
  36. typedef void (*callmon$intercept_t) (
  37.     callmon$arguments_t* arguments,
  38.     uint32               caller_invo_handle,
  39.     char*                routine_name,
  40.     uint64               (*intercepted_routine)(),
  41.     uint64               (*jacket_routine)());
  42.  
  43. typedef enum {
  44.     CALLMON$C_ALL_ROUTINES         = 0,
  45.     CALLMON$C_INTERCEPTED_ONLY     = 1,
  46.     CALLMON$C_UNINTERCEPTABLE_ONLY = 2,
  47.     CALLMON$C_UNRELOCATABLE_ONLY   = 3
  48. } callmon$dump_routine_t;
  49.  
  50. typedef void (*callmon$disassemble_output_t) (
  51.     void* pc,
  52.     char* opcode,
  53.     char* operands,
  54.     void* user_data);
  55.  
  56. /*
  57.  *  CALLMON Routines
  58.  */
  59.  
  60. uint32 callmon$initialize (void);
  61.  
  62. uint32 callmon$intercept (
  63.     char*               routine_name,
  64.     callmon$intercept_t pre_routine,
  65.     callmon$intercept_t post_routine);
  66.  
  67. uint32 callmon$intercept_all (
  68.     char*               image_name,
  69.     callmon$intercept_t pre_routine,
  70.     callmon$intercept_t post_routine,
  71.     callmon$boolean_t   override);
  72.  
  73. uint32 callmon$dump_image_tree (void);
  74. uint32 callmon$dump_routine_tree (callmon$dump_routine_t rclass);
  75.  
  76. void callmon$disassemble (
  77.     void*                        address,
  78.     size_t                       size_in_bytes,
  79.     void*                        displayed_pc,
  80.     callmon$disassemble_output_t output_routine,
  81.     void*                        user_data);
  82.  
  83. #endif /* CALLMON_H_LOADED */
  84.