
{ Convert page streaming transfer size from bytes number of pages expressed as a power of 2

  PROCEDURE [INLINE] mmp$convert_ps_transfer_size (ps_transfer_size: integer;
        VAR ps_transfer_size_power: 0..15);
?? PUSH (LISTEXT := ON) ??

    VAR
      power: integer,
      ts: integer;

{ Calculate the lowest power of 2 that is greater than the number of pages required for the
{ page streaming transfer size.   Thus if the page  streaming transfer size = page size than it
{ will be converted to zero.  If ps_transfer_size = two pages it will be converted to 1,  if
{ ps_transfer_size = 4 pages it will be converted to 2, ...etc.

        ts := (ps_transfer_size + osv$page_size - 1)  DIV  osv$page_size;
        power := 0;
        WHILE ts > 1  DO
          power := power + 1;
          ts := (ts + 1)  DIV  2;
        WHILEND;
        IF power > UPPERVALUE (ps_transfer_size_power)  THEN
          ps_transfer_size_power := UPPERVALUE (ps_transfer_size_power);
        ELSE
          ps_transfer_size_power := power;
        IFEND;

  PROCEND mmp$convert_ps_transfer_size;
?? POP ??
