  PROCEDURE {INLINE} dfp$record_transaction_data
    (    driver_queue_entry: dft$driver_queue_entry;
         cpu_queue_entry: dft$cpu_queue_entry;
     VAR transaction_data: dft$transaction_data);

    VAR
      actual: integer,
      p_command_buffer: dft$p_command_buffer,
      p_buffer_header: ^dft$buffer_header;

   { The initial value is set arbitrarily, since the osp$add_to_locked_variable
   { will then pick up the correct value.  This avoids doing a call to
   { read the variable.

    IF (cpu_queue_entry.transaction_state = dfc$server_received_request) OR
       (cpu_queue_entry.transaction_state = dfc$response_received) THEN
      osp$add_to_locked_variable (transaction_data.total_transaction_count,
          { Initial guess = } 227, 1, actual);
    IFEND;

    IF driver_queue_entry.flags.buffer_sent THEN
      osp$add_to_locked_variable (
            transaction_data.total_buffer_length_sent, { Initial guess = } 227,
            driver_queue_entry.send_buffer_descriptor.actual_length, actual);
    IFEND;
    IF driver_queue_entry.flags.data_sent THEN
      osp$add_to_locked_variable (
            transaction_data.total_data_pages_sent, { Initial guess = } 227,
            (driver_queue_entry.data_descriptor.actual_length DIV 8), actual);
    IFEND;

    { IF driver_queue_entry.flags.buffer_received THEN
    {   p_command_buffer := cpu_queue_entry.p_receive_buffer;
    {   RESET p_command_buffer;
    {   NEXT p_buffer_header IN p_command_buffer;
    {   osp$add_to_locked_variable
    { (transaction_data.total_buffer_length_received, transaction_data.
    {         total_buffer_length_received,
    { p_buffer_header^.buffer_length_sent, actual);
    { IFEND;

    IF driver_queue_entry.flags.data_received THEN
      osp$add_to_locked_variable (
            transaction_data.total_data_pages_received, { Initial guess = } 227,
            (driver_queue_entry.data_descriptor.actual_length DIV 8), actual);

    IFEND;
  PROCEND dfp$record_transaction_data;
?? PUSH (LISTEXT := ON) ??
*copyc osp$add_to_locked_variable
*copyc osp$add_to_locked_variable
*copyc dfd$driver_queue_types
*copyc dfd$request_package
*copyc dft$cpu_queue
*copyc dft$transaction_state
?? POP ??




