  | 
		
HP OpenVMS System Analysis Tools Manual
 
 
 
SDA$REQMEM
 
        Reads dump or system memory and signals an error if inaccessible.
 
 
Format
 int sda$reqmem (VOID_PQ start, void *dest, int length,
 __optional_params);
  
 
Arguments
start
 
  
    | OpenVMS usage  | 
    address | 
   
  
    | type  | 
    quadword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Starting virtual address in dump or system.
dest
 
  
    | OpenVMS usage  | 
    address | 
   
  
    | type  | 
    varies | 
   
  
    | access  | 
    write only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Return buffer address.
length
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Length of transfer.
physical
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
0: <start> is a virtual address. This is the default.
 
1: <start> is a physical address.
 
 
Description
        This routine transfers an area from the memory in the dump file or the
        running system to the caller's return buffer. It performs the necessary
        address translation to locate the data in the dump file. SDA$REQMEM
        signals an error and aborts the current command if the data is
        inaccessible.
Related Routines
 
 
SDA$GETMEM and SDA$TRYMEM
  
 
Condition Values Returned
  
    | 
      SDA$_SUCCESS
     | 
    
      Successful completion.
     | 
   
 
 
Any failure is signaled as an error and the current command aborts.
  
Example
 
  
     | 
   
    
       
      
VOID_PQ address;
uint32 instruction;
...
sda$symbol_value ("EXE_STD$ALLOCATE_C", (uint64 *)&address);
sda$reqmem (address, &instruction, 4);
      
      
     | 
   
 
        This example reads the first instruction of the routine
        EXE_STD$ALLOCATE into the location INSTRUCTION.
  
 
SDA$SET_ADDRESS
 
        Stores a new address value as the current memory address (".").
 
 
Format
 void sda$set_address (VOID_PQ address);
  
 
Argument
address
 
  
    | OpenVMS usage  | 
    quadword_unsigned | 
   
  
    | type  | 
    quadword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Address value to store in current memory location.
 
 
Description
        The specified address becomes SDA's current memory address (the
        predefined SDA symbol ".").
 
 
Condition Values Returned
 
 
Example
 
  
     | 
   
    
       
      
sda$set_address ((VOID_PQ)0xFFFFFFFF80102030);
      
      
     | 
   
 
        This call sets SDA's current address to FFFFFFFF.80102030.
  
 
SDA$SET_CPU
 
Sets a new SDA CPU context.
 
 
Format
 int sda$set_cpu (int cpu_id);
  
 
Arguments
cpu_id
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
The desired CPU ID.
 
 
Description
This routine causes SDA to set the specified CPU as the currently
selected CPU.
 
 
Condition Values Returned
  
    | 
      SDA$_SUCCESS
     | 
    
      Successful completion.
     | 
   
 
 
  Any failure is signaled as an error and the current command aborts.
  
Example
 
  
     | 
   
    
       
      
int cpu_id = 2;
status = sda$set_cpu  (  cpu_id  );
      
      
     | 
   
 
In this example, SDA's current CPU context is set to the CPU whose
number is held in the variable CPU_ID.
  
 
SDA$SET_HEADING_ROUTINE
 
        Sets the current heading routine to be called after each page break.
 
 
Format
 void sda$set_heading_routine (void (*heading_rtn) ());
  
 
Argument
heading_rtn
 
  
    | OpenVMS usage  | 
    procedure | 
   
  
    | type  | 
    rocedure value | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Address of routine to be called after each new page.
 
 
Description
        When SDA begins a new page of output (either because SDA$NEW_PAGE was
        called, or because the current page is full), it outputs two types of
        headings. The first is the page title, and is set by calling the
        routine SDA$FORMAT_HEADING. This is the title that is included in the
        index page of a listing file when you issue a SET OUTPUT command. The
        second heading is typically for column headings, and as this can vary
        from display to display, you must write a routine for each separate
        heading. When you call SDA$SET_HEADING_ROUTINE to specify a
        user-written routine, the routine is called each time SDA begins a new
        page.
        To stop the routine from being invoked each time SDA begins a new page,
        call either SDA$FORMAT_HEADING to set a new page title, or
        SDA$SET_HEADING_ROUTINE and specify the routine address as NULL.
 
        If the column headings need to be output during a display (that is, in
        the middle of a page), and then be re-output each time SDA begins a new
        page, call the user-written routine directly the first time, then call
        SDA$SET_HEADING_ROUTINE to have it be called automatically thereafter.
  
 
Condition Values Returned
 
 
Example
 
  
     | 
   
    
       
      
void mbx$title (void)
  {
  sda$print ("Mailbox     UCB      ...");
  sda$print ("  Unit    Address    ...");
  sda$print ("------------------------");
  return;
  }
...
sda$set_heading_routine (mbx$title);
...
sda$set_heading_routine (NULL);
      
      
     | 
   
 
        This example sets the heading routine to the routine MBX$TITLE, and
        later clears it. The routine is called if any page breaks are generated
        by the intervening code.
  
 
SDA$SET_LINE_COUNT
 
        Sets the number of lines printed so far on the current page.
 
 
Format
 void sda$set_line_count (uint32 line_count);
  
 
Argument
line_count
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
The number of lines printed on current page.
 
 
Description
        The number of lines that have been printed so far on the current page
        is set to the given value.
 
 
Condition Values Returned
 
 
Example
 
        This call sets SDA's current line count on the current page of output
        to 5.
  
 
SDA$SET_PROCESS
 
Sets a new SDA process context.
 
 
Format
 int sda$set_process (const char *proc_name, int proc_index, int
 proc_addr);
  
 
Arguments
proc_name
 
  
    | OpenVMS usage  | 
    character_string | 
   
  
    | type  | 
    character string | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Address of the process name string (zero-terminated).
proc_index
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
The index of the desired process.
proc_addr
 
  
    | OpenVMS usage  | 
    address | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
The address of the PCB for the desired process.
 
 
Description
This routine causes SDA to set the specified process as the currently
selected process.
 
  Note 
The proc_name, proc_index, and proc_addr are mutually exclusive. 
     | 
   
 
 
 
Condition Values Returned
  
    | 
      SDA$_SUCCESS
     | 
    
      Successful completion.
     | 
   
 
 
Any failure is signaled as an error and the current command aborts.
  
Example
 
  
     | 
   
    
       
      
status = sda$set_process  (  "JOB_CONTROL",  0,  0);
      
      
     | 
   
 
In this example, SDA's current process context is set to the
JOB_CONTROL process.
  
 
SDA$SKIP_LINES
 
        This routine outputs a specified number of blank lines.
 
 
Format
 void sda$skip_lines (uint32 lines);
  
 
Argument
lines
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Number of lines to skip.
 
 
Description
        The specified number of blank lines are output.
 
 
Condition Values Returned
 
 
Example
 
        This call causes two blank lines to be output.
  
 
SDA$SYMBOL_VALUE
 
        Obtains the 64-bit value of a specified symbol.
 
 
Format
 int sda$symbol_value (char *symb_name, uint64 *symb_value);
  
 
Arguments
symb_name
 
  
    | OpenVMS usage  | 
    char_string | 
   
  
    | type  | 
    character string | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Zero-terminated string containing symbol name.
symb_value
 
  
    | OpenVMS usage  | 
    quadword_unsigned | 
   
  
    | type  | 
    quadword (unsigned) | 
   
  
    | access  | 
    write only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Address to receive symbol value.
 
 
Description
        A search through SDA's symbol table is made for the specified symbol.
        If found, its 64-bit value is returned.
 
 
Condition Values Returned
  
    | 
      SDA$_SUCCESS
     | 
    
      Symbol found.
     | 
   
  
    | 
      SDA$_BADSYM
     | 
    
      Symbol not found.
     | 
   
 
 
 
Example
 
  
     | 
   
    
       
      
int status;
VOID_PQ address;
...
status = sda$symbol_value ("EXE_STD$ALLOCATE_C", (uint64 *)&address);
      
      
     | 
   
 
        This call returns the start address of the prologue of routine
 
        EXE_STD$ALLOCATE to location ADDRESS.
  
 
SDA$SYMBOLIZE
 
        Converts a value to a symbol name and offset.
 
 
Format
 int sda$symbolize (uint64 value, char *symbol_buf, uint32 symbol_len);
  
 
Arguments
value
 
  
    | OpenVMS usage  | 
    quadword_unsigned | 
   
  
    | type  | 
    quadword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Value to be translated.
symbol_buf
 
  
    | OpenVMS usage  | 
    char_string | 
   
  
    | type  | 
    character string | 
   
  
    | access  | 
    write only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Address of buffer to which to return string.
symbol_len
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Maximum length of string buffer.
 
 
Description
        This routine accepts a value and returns a string that contains a
        symbol and offset corresponding to that value. First the value is
        checked in the symbol table. If no symbol can be found (either exact
        match or up to 0XFFF less than the specified value), the value is then
        checked to see if it falls within one of the loaded or activated images.
 
 
Condition Values Returned
  
    | 
      SS$_NORMAL
     | 
    
      Successful completion.
     | 
   
  
    | 
      SS$_BUFFEROVF
     | 
    
      Buffer too small, string truncated.
     | 
   
  
    | 
      SS$_NOTRAN
     | 
    
      No symbolization for this value (null string returned).
     | 
   
 
 
 
Example
 
  
     | 
   
    
       
      
VOID_PQ va = VOID_PQ(0xFFFFFFFF80102030);
char buffer [64]
status = sda$symbolize (va, buffer, sizeof(buffer));
sda$print ("FFFFFFFF.80102030 = \"!AZ\"", buffer);
      
      
     | 
   
 
        This example outputs the following:
  
  
     | 
   
    
       
      
FFFFFFFF.80102030 = "EXE$WRITE_PROCESS_C+00CD0"
      
      
     | 
   
 
  
 
SDA$TRYMEM
 
        Reads dump or system memory and returns the error status (without
        signaling) if inaccessible.
 
 
Format
 int sda$trymem (VOID_PQ start, void *dest, int length,
 __optional_params);
  
 
Arguments
start
 
  
    | OpenVMS usage  | 
    address | 
   
  
    | type  | 
    quadword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Starting virtual address in dump or system.
dest
 
  
    | OpenVMS usage  | 
    address | 
   
  
    | type  | 
    varies | 
   
  
    | access  | 
    write only | 
   
  
    | mechanism | 
    by reference | 
   
 
 
Return buffer address.
length
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
Length of transfer.
physical
 
  
    | OpenVMS usage  | 
    longword_unsigned | 
   
  
    | type  | 
    longword (unsigned) | 
   
  
    | access  | 
    read only | 
   
  
    | mechanism | 
    by value | 
   
 
 
0: <start> is a virtual address. This is the default.
 
1: <start> is a physical address.
 
 
Description
        This routine transfers an area from the memory in the dump file or the
        running system to the caller's return buffer. It performs the necessary
        address translation to locate the data in the dump file. SDA$TRYMEM
        does not signal any warning or errors. It returns the error status if
        the data is inaccessible.
Related Routines
 
 
SDA$GETMEM and SDA$REQMEM
  
 
Condition Values Returned
  
    | 
      SDA$_SUCCESS
     | 
    
      Successful completion.
     | 
   
  
    | 
      SDA$_NOREAD
     | 
    
      The data is inaccessible for some reason.
     | 
   
  
    | 
      SDA$_NOTINPHYS
     | 
    
      The data is inaccessible for some reason.
     | 
   
  
    | 
      Others
     | 
    
      The data is inaccessible for some reason.
     | 
   
 
 
 
Example
 
  
     | 
   
    
       
      
int status;
DDB *ddb;
...
status = sda$trymem (ddb->ddb$ps_link, ddb, DDB$K_LENGTH);
if ($VMS_STATUS_SUCCESS (status))
    sda$print ("Next DDB is successfully read from dump");
else
    sda$print ("Next DDB is inaccessible");
      
      
     | 
   
 
        This example attempts to read the next DDB in the DDB list from the
        dump.
  
  
  
		 |