
{ This procedure will link a page into either the free queue or the
{ flawed queue.  The page is currently unlinked with a queue id of
{ mmc$pq_free.  Mmv$reassignable_page_frames.soon must be decremented
{ for this page.  The page was released while it still had I/O active
{ or this is an image page about to be committed.

  PROCEDURE [INLINE] mmp$link_page_frame_to_queue (pfti: mmt$page_frame_index;
        pfte_p: ^mmt$page_frame_table_entry);

*copyc mmv$pages_to_dump_p

    VAR
      queue_id: mmt$page_frame_queue_id;


    IF pfte_p^.flawed THEN
      pfte_p^.queue_id := mmc$pq_flawed;
      queue_id := mmc$pq_flawed;
    ELSE
      queue_id := mmc$pq_free;
      mmv$pages_to_dump_p^ [pfti] := FALSE;
    IFEND;

    pfte_p^.link.fwd := mmv$gpql [queue_id].pqle.link.fwd;
    IF mmv$gpql [queue_id].pqle.link.fwd = 0 THEN
      mmv$gpql [queue_id].pqle.link.bkw := pfti;
    ELSE
      mmv$pft_p^[mmv$gpql [queue_id].pqle.link.fwd].link.bkw := pfti;
    IFEND;
    mmv$gpql [queue_id].pqle.link.fwd := pfti;
    mmv$gpql [queue_id].pqle.count := mmv$gpql [queue_id].pqle.count + 1;
    mmv$reassignable_page_frames.soon := mmv$reassignable_page_frames.soon - 1;

    IF NOT pfte_p^.flawed THEN
      mmv$reassignable_page_frames.now := mmv$reassignable_page_frames.now + 1;
      jmp$check_scheduler_memory_wait;
    IFEND;

  PROCEND mmp$link_page_frame_to_queue;
