

?? RIGHT := 110 ??
?? NEWTITLE := 'NOS/VE Operating System : manage psr statistics' ??
MODULE qcm$manage_psr_statistics;

*copyc osp$set_status_abnormal
*copyc osv$mainframe_wired_heap
*copyc qct$psr_statistics
*copyc ost$status

{ Global variable declarations

  VAR
    qcv$psrs_p: [XDCL, #GATE] ^qct$psr_statistics := NIL;



?? TITLE := 'qcp$initialize_psr_statistics', EJECT ??

  PROCEDURE [XDCL] qcp$initialize_psr_statistics;

    VAR
      item_count: qct$item_count,
      index: integer,
      psr_entry: ^qct$psr_statistics_entry;

{ This routine is called at deadstart time to initialize the psr statistics


    ALLOCATE qcv$psrs_p IN osv$mainframe_wired_heap^;

    qcv$psrs_p^.item_count := 1;

    FOR index := 1 TO qcc$max_psr_entries DO
      qcv$psrs_p^.psr_entries [index].psr_ident := qcc$null_psr;
    FOREND;


  PROCEND qcp$initialize_psr_statistics;




?? TITLE := 'qcp$update_psr_statistics', EJECT ??

  PROCEDURE [XDCL, #GATE] qcp$update_psr_statistics
    (    psr_identifier: qct$psr_ident;
     VAR status: ost$status);

    VAR
      item_count: qct$item_count,
      psr_entry: ^qct$psr_statistics_entry;

    status.normal := TRUE;
    item_count := qcv$psrs_p^.item_count;
    qcv$psrs_p^.psr_entries [item_count].psr_ident := psr_identifier;
    qcv$psrs_p^.item_count := qcv$psrs_p^.item_count + 1;

  PROCEND qcp$update_psr_statistics;


?? TITLE := 'qcp$fetch_psr_statistics', EJECT ??

  PROCEDURE [XDCL, #GATE] qcp$fetch_psr_statistics
    (VAR psr_statistics: qct$psr_statistics;
     VAR psr_count: qct$item_count;
     VAR status: ost$status);

    VAR
      item_count: qct$item_count,
      psr_entry: ^qct$psr_statistics_entry,
      i: qct$item_count;

    status.normal := TRUE;
    item_count := qcv$psrs_p^.item_count;

    FOR i := 1 TO item_count DO
     psr_statistics.psr_entries[i].psr_ident :=  qcv$psrs_p^.psr_entries [i].psr_ident;
     psr_statistics.psr_entries[i].feature_ident :=  qcv$psrs_p^.psr_entries [i].feature_ident;
     psr_count := psr_count + 1;
    FOREND

  PROCEND qcp$fetch_psr_statistics;

MODEND qcm$manage_psr_statistics;
