MODULE osm$heap_manager_helpers_23d;
?? RIGHT := 110 ??

{ PURPOSE:
{   This module exists solely to test the new heap manager and to interface to
{   osp$generate_heap_map_r1 for the mainframe wide heaps and directly to
{   osp$generate_heap_map for the task local heaps.

?? NEWTITLE := 'Global Declarations Referenced By This Module', EJECT ??
?? PUSH (LISTEXT := ON) ??
*copyc ose$undefined_condition
*copyc ost$halfword
*copyc ost$heap
*copyc ost$status
?? POP ??
*copyc osp$generate_heap_map
*copyc osp$generate_heap_map_r1
*copyc osp$generate_heap_map_r2
*copyc osp$set_status_condition
*copyc osv$task_private_heap
*copyc osv$task_shared_heap
?? OLDTITLE ??
?? NEWTITLE := '[xdcl, #gate] OSP$GENERATE_HEAP_MAP_R3', EJECT ??

  PROCEDURE [XDCL, #GATE] osp$generate_heap_map_r3
    (    heap_segment: ost$segment;
     VAR heap_map: ost$heap_map;
     VAR status: ost$status);

    VAR
      heap_p: ^HEAP ( * );

    status.normal := TRUE;
    heap_p := NIL;
    CASE heap_segment OF
    = osc$segnum_mainframe_wired, osc$segnum_mainframe_wired_cb,
          osc$segnum_mainframe_paged, osc$segnum_job_fixed_heap,
          osc$segnum_task_private_ring_11, 15 =

      osp$generate_heap_map_r1 (heap_segment, heap_map, status);
      RETURN; {----->

    = osc$segnum_job_pageable_heap =
      osp$generate_heap_map_r2 (heap_segment, heap_map, status);
      RETURN; {----->

    = osc$segnum_task_private_heap =
      heap_p := osv$task_private_heap;

    = osc$segnum_task_shared_heap =
      heap_p := osv$task_shared_heap;

    ELSE
      osp$set_status_condition (ose$undefined_condition, status);
      RETURN; {----->
    CASEND;

    IF heap_p <> NIL THEN
      osp$generate_heap_map (heap_p, heap_map);
    IFEND;

  PROCEND osp$generate_heap_map_r3;
?? OLDTITLE ??
MODEND osm$heap_manager_helpers_23d;
