?? RIGHT := 110 ??
MODULE dmm$avt_class_counts;
?? RIGHT := 110 ??

?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc dmt$error_condition_codes
?? POP ??
*copyc dmp$attach_device_file
*copyc dmp$close_file
*copyc dmp$detach_device_file
*copyc dmp$lock_avt_entry
*copyc dmp$open_label
*copyc dmp$unlock_avt_entry
*copyc mmp$write_modified_pages
*copyc osp$set_status_abnormal
*copyc pmp$delay
*copyc dmv$active_volume_table
*copyc dmv$system_class
?? OLDTITLE ??
?? NEWTITLE := 'UPDATE_LABEL', EJECT ??

  PROCEDURE update_label
    (    class: dmt$class;
         rvsn: rmt$recorded_vsn;
     VAR status: ost$status);

    VAR
      ignore: boolean,
      ost: ost$status,
      p_label: ^dmt$ms_volume_label,
      p_hdr: ^dmt$volume_label_header,
      p_body: ^dmt$ms_label_0_0,
      system_file_id: gft$system_file_identifier,
      user_supplied_name: ost$name;

    status.normal := TRUE;
    user_supplied_name := osc$null_name;
    user_supplied_name (1, 5) := 'LABEL';
    user_supplied_name (6, rmc$recorded_vsn_size) := rvsn;

    dmp$attach_device_file (rvsn, user_supplied_name, system_file_id, status);
    IF NOT status.normal THEN
      RETURN; {----->
    IFEND;

    dmp$open_label (system_file_id, osc$os_ring_1, osc$tsrv_ring, mmc$sar_modify, mmc$as_random, p_label,
          status);
    IF NOT status.normal THEN
      dmp$detach_device_file (system_file_id, ignore, ignore, ost);
      RETURN; {----->
    IFEND;

    RESET p_label;
    NEXT p_hdr IN p_label;
    NEXT p_body IN p_label;
    p_body^.class := class;

    mmp$write_modified_pages (p_hdr, #SIZE (p_hdr^), osc$wait, status);
    dmp$close_file (p_label, ost);
    dmp$detach_device_file (system_file_id, ignore, ignore, ost);

  PROCEND update_label;
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] DMP$ADD_CLASS_TO_VOLUME', EJECT ??

  PROCEDURE [XDCL, #GATE] dmp$add_class_to_volume
    (    avt_index: dmt$active_volume_table_index;
         class: dmt$class;
     VAR status: ost$status);

    dmp$lock_avt_entry (avt_index);

    update_label (class, dmv$active_volume_table.table_p^ [avt_index].mass_storage.recorded_vsn, status);
    IF status.normal THEN
      dmv$active_volume_table.table_p^ [avt_index].mass_storage.class := class;
    IFEND;

    dmp$unlock_avt_entry (avt_index);

  PROCEND dmp$add_class_to_volume;
?? OLDTITLE ??
MODEND dmm$avt_class_counts;
