CAC 2017-12-3

multiple FNPs

tty_index listing:

      499 init_channel:
      500      entry (twx, a_argptr, a_data_base_ptr, ercode);
      501
      502           devx = twx;                                       /* move to internal */
      503           argptr = a_argptr;
      504           a_data_base_ptr = null;
      505           ercode = 0;
      506
      507           if ^ever_initialized
      508           then do;
      509                call tty_interrupt$set_static;               /* to copy error codes into wired internal static */
      510                ever_initialized = "1"b;                     /* so we don't do this again */
      511           end;
      512
      513           call tty_space_man$get_space (size (wtcb), wtcbp);
      514
      515           if wtcbp = null
      516           then do;                                          /* no room for it? */
      517                ercode = error_table_$notalloc;
      518                return;
      519           end;
      520
      521           on area go to tcb_not_done;
      522           on storage go to tcb_not_done;
      523           call tty_area_manager$allocate (size (tcb), tcbp);
      524           revert area;
      525           revert storage;
      526
      527           unspec (wtcb) = "0"b;                             /* start in known state */
      528           wtcb.tcb_ptr = tcbp;                              /* set the data base correctly */
      529           wtcb.devx = devx;
      530           unspec (tcb) = "0"b;                              /* start this in known state also */
      531           call init_tcb;                                    /* start filling in the variables */
      532           a_data_base_ptr = wtcbp;                          /* and the output arg */
      533           return;
      534
      535 tcb_not_done:
      536           ercode = error_table_$notalloc;                   /* we had a problem */
      537           return;

tracing tty_index$init_channel, line 0:
CPU TRACE:       499 init_channel:
CPU TRACE:       123 dcl  locked bit (1) init ("0"b);
CPU TRACE:       126 dcl  uproc_attach_required_for_setup bit (1) init ("1"b);
CPU TRACE:       127 dcl  uproc_required_for_setup bit (1) init ("1"b);
CPU TRACE:       502     devx = twx;                /* move to internal */
CPU TRACE:       503     argptr = a_argptr;
CPU TRACE:       504     a_data_base_ptr = null;
CPU TRACE:       505     ercode = 0;
CPU TRACE:       507     if ^ever_initialized
CPU TRACE:       509          call tty_interrupt$set_static;        /* to copy error codes into wired internal static */
CPU TRACE:       510          ever_initialized = "1"b;            /* so we don't do this again */
CPU TRACE:       513     call tty_space_man$get_space (size (wtcb), wtcbp);
CPU TRACE:       515     if wtcbp = null
CPU TRACE:       521     on area go to tcb_not_done;
CPU TRACE:       522     on storage go to tcb_not_done;
CPU TRACE:       523     call tty_area_manager$allocate (size (tcb), tcbp);
CPU TRACE:       524     revert area;
CPU TRACE:       525     revert storage;
CPU TRACE:       527     unspec (wtcb) = "0"b;            /* start in known state */
CPU TRACE:       528     wtcb.tcb_ptr = tcbp;            /* set the data base correctly */
CPU TRACE:       529     wtcb.devx = devx;
CPU TRACE:       530     unspec (tcb) = "0"b;            /* start this in known state also */

line 1:

CPU TRACE:       499 init_channel:
CPU TRACE:       123 dcl  locked bit (1) init ("0"b);
CPU TRACE:       126 dcl  uproc_attach_required_for_setup bit (1) init ("1"b);
CPU TRACE:       127 dcl  uproc_required_for_setup bit (1) init ("1"b);
CPU TRACE:       502     devx = twx;                /* move to internal */
CPU TRACE:       503     argptr = a_argptr;
CPU TRACE:       504     a_data_base_ptr = null;
CPU TRACE:       505     ercode = 0;
CPU TRACE:       507     if ^ever_initialized
CPU TRACE:       513     call tty_space_man$get_space (size (wtcb), wtcbp);
CPU TRACE:       515     if wtcbp = null
CPU TRACE:       521     on area go to tcb_not_done;
CPU TRACE:       522     on storage go to tcb_not_done;
CPU TRACE:       523     call tty_area_manager$allocate (size (tcb), tcbp);
CPU TRACE:       524     revert area;
CPU TRACE:       525     revert storage;
CPU TRACE:       527     unspec (wtcb) = "0"b;            /* start in known state */
CPU TRACE:       528     wtcb.tcb_ptr = tcbp;            /* set the data base correctly */
CPU TRACE:       529     wtcb.devx = devx;
CPU TRACE:       530     unspec (tcb) = "0"b;            /* start this in known state also */

Same sequence, except 'if ^ever_initiailized'

line 2:

CPU TRACE:       499 init_channel:
CPU TRACE:       123 dcl  locked bit (1) init ("0"b);
CPU TRACE:       126 dcl  uproc_attach_required_for_setup bit (1) init ("1"b);
CPU TRACE:       127 dcl  uproc_required_for_setup bit (1) init ("1"b);
CPU TRACE:       502     devx = twx;                /* move to internal */
CPU TRACE:       503     argptr = a_argptr;
CPU TRACE:       504     a_data_base_ptr = null;
CPU TRACE:       505     ercode = 0;
CPU TRACE:       507     if ^ever_initialized
CPU TRACE:       513     call tty_space_man$get_space (size (wtcb), wtcbp);
CPU TRACE:       515     if wtcbp = null
CPU TRACE:       517          ercode = error_table_$notalloc;
CPU TRACE:       518          return;
CPU TRACE:       147 ipc_wakeup:
CPU TRACE:       180     code = 0;                    /* reset returned code to zero */
CPU TRACE:       181     target_process = a_target_process;        /* copy args into stack */
CPU TRACE:       182     event_channel_name_fb71 = a_event_channel;    /* copy parameters */
CPU TRACE:       183     event_channel_message = a_event_channel_message;
CPU TRACE:       185     val_ring = level$get ();            /* save validation level */
CPU TRACE:       187     call tc_util$get_ipc_operands_priv (target_process, r_offset, r_factor, code);
CPU TRACE:       188     if code ^= 0
CPU TRACE:       195     call ipc_validate_$decode_event_channel_name (r_offset, r_factor, event_channel_name_fb71, ev_chn_flags,
CPU TRACE:       197     if code ^= 0
CPU TRACE:       205     same_process = (target_process = pds$process_id);

tty_space_man$get_space failed….

get_space:

      169 /* Entry to get space of arbitrary size */
      170
      171 get_space:
      172      entry (arg_size, arg_blockp);
      173
      174           perm = "0"b;
      175           go to get_space_join;
      176
      177 /* Entry to get permanent space of arbitrary size (used to allocate LCT); point
      178*   is to not count it against buffer pool for metering */
      179 get_perm_space:
      180      entry (arg_size, arg_blockp);
      181
      182           perm = "1"b;
      183 get_space_join:
      184           buffer_size = arg_size + mod (arg_size, 2);
      185           call setup;
      186           tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
      187
      188           blockp = space_getter (buffer_size);
      189           call clean_up;
      190           arg_blockp = blockp;
      191           tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
      192           if ^perm
      193           then call update_control (buffer_size);
      194           return;

line 0 call to get_space:

CPU TRACE:       171 get_space:
CPU TRACE:       174     perm = "0"b;
CPU TRACE:       175     go to get_space_join;
CPU TRACE:       183 get_space_join:
CPU TRACE:       185     call setup;
CPU TRACE:       467 setup:
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       471     lctp = tty_buf.lct_ptr;
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       473     enter_time = clock ();
CPU TRACE:       474     call lock;
CPU TRACE:       482 lock:
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       498     return;
CPU TRACE:       475     total_freed = 0;
CPU TRACE:       476     return;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       188     blockp = space_getter (buffer_size);
CPU TRACE:       331 space_getter:
CPU TRACE:       336 dcl  best_blockp ptr init (null);            /* Ptr to smallest free block large enough for request */
CPU TRACE:       337 dcl  best_block_size fixed bin init (0);        /* Size of that block */
CPU TRACE:       338 dcl  prev_best_blockp ptr init (null);            /* Block before best_blockp -> free_block */
CPU TRACE:       339 dcl  prev_blockp ptr init (null);            /* Block before current block during scan */
CPU TRACE:       343 dcl  nsteps fixed bin init (0);            /* Number of steps in free chain */
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       347          nsteps = nsteps + 1;
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       353          if free_block.size > n
CPU TRACE:       355         if (best_block_size = 0) | (free_block.size < best_block_size)
CPU TRACE:       357              best_blockp = free_blockp;    /* Remember this block */
CPU TRACE:       358              best_block_size = free_block.size;
CPU TRACE:       359              prev_best_blockp = prev_blockp;    /* Remember preceding block */
CPU TRACE:       362          prev_blockp = free_blockp;
CPU TRACE:       363     end;
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       365     if best_block_size = 0
CPU TRACE:       371     free_blockp = best_blockp;            /* Block to use */
CPU TRACE:       372     prev_blockp = prev_best_blockp;
CPU TRACE:       373     p = addrel (free_blockp, n);            /* Get pointer to new free block */
CPU TRACE:       374     next_rel = rel (p);
CPU TRACE:       375     p -> free_block.next = free_block.next;
CPU TRACE:       376     p -> free_block.size = free_block.size - n;
CPU TRACE:       377 fit_found:
CPU TRACE:       382     unspec (free_space) = "0"b;            /* Clear the buffer */
CPU TRACE:       383     tty_buf.bleft = tty_buf.bleft - n;        /* Total free space */
CPU TRACE:       384     if tty_buf.minimum_free_space = 0 | tty_buf.bleft < tty_buf.minimum_free_space
CPU TRACE:       386     tty_buf.total_alloc_steps = tty_buf.total_alloc_steps + nsteps;
CPU TRACE:       387     return (free_blockp);            /* Return the answer */
CPU TRACE:       189     call clean_up;
CPU TRACE:       511 clean_up:
CPU TRACE:       514     call unlock;
CPU TRACE:       500 unlock:
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       505     return;
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       516     return;
CPU TRACE:       190     arg_blockp = blockp;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       192     if ^perm
CPU TRACE:       554 update_control:
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       562      end update_control;
CPU TRACE:       194     return;

line 1 call to get_space:

CPU TRACE:       171 get_space:
CPU TRACE:       174     perm = "0"b;
CPU TRACE:       175     go to get_space_join;
CPU TRACE:       183 get_space_join:
CPU TRACE:       185     call setup;
CPU TRACE:       467 setup:
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       471     lctp = tty_buf.lct_ptr;
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       473     enter_time = clock ();
CPU TRACE:       474     call lock;
CPU TRACE:       482 lock:
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       498     return;
CPU TRACE:       475     total_freed = 0;
CPU TRACE:       476     return;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       188     blockp = space_getter (buffer_size);
CPU TRACE:       331 space_getter:
CPU TRACE:       336 dcl  best_blockp ptr init (null);            /* Ptr to smallest free block large enough for request */
CPU TRACE:       337 dcl  best_block_size fixed bin init (0);        /* Size of that block */
CPU TRACE:       338 dcl  prev_best_blockp ptr init (null);            /* Block before best_blockp -> free_block */
CPU TRACE:       339 dcl  prev_blockp ptr init (null);            /* Block before current block during scan */
CPU TRACE:       343 dcl  nsteps fixed bin init (0);            /* Number of steps in free chain */
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       347          nsteps = nsteps + 1;
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       353          if free_block.size > n
CPU TRACE:       355         if (best_block_size = 0) | (free_block.size < best_block_size)
CPU TRACE:       357              best_blockp = free_blockp;    /* Remember this block */
CPU TRACE:       358              best_block_size = free_block.size;
CPU TRACE:       359              prev_best_blockp = prev_blockp;    /* Remember preceding block */
CPU TRACE:       362          prev_blockp = free_blockp;
CPU TRACE:       363     end;
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       365     if best_block_size = 0
CPU TRACE:       371     free_blockp = best_blockp;            /* Block to use */
CPU TRACE:       372     prev_blockp = prev_best_blockp;
CPU TRACE:       373     p = addrel (free_blockp, n);            /* Get pointer to new free block */
CPU TRACE:       374     next_rel = rel (p);
CPU TRACE:       375     p -> free_block.next = free_block.next;
CPU TRACE:       376     p -> free_block.size = free_block.size - n;
CPU TRACE:       377 fit_found:
CPU TRACE:       382     unspec (free_space) = "0"b;            /* Clear the buffer */
CPU TRACE:       383     tty_buf.bleft = tty_buf.bleft - n;        /* Total free space */
CPU TRACE:       384     if tty_buf.minimum_free_space = 0 | tty_buf.bleft < tty_buf.minimum_free_space
CPU TRACE:       386     tty_buf.total_alloc_steps = tty_buf.total_alloc_steps + nsteps;
CPU TRACE:       387     return (free_blockp);            /* Return the answer */
CPU TRACE:       189     call clean_up;
CPU TRACE:       511 clean_up:
CPU TRACE:       514     call unlock;
CPU TRACE:       500 unlock:
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       505     return;
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       516     return;
CPU TRACE:       190     arg_blockp = blockp;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       192     if ^perm
CPU TRACE:       554 update_control:
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       562      end update_control;
CPU TRACE:       194     return;

line 2 call:

CPU TRACE:       171 get_space:
CPU TRACE:       174     perm = "0"b;
CPU TRACE:       175     go to get_space_join;
CPU TRACE:       183 get_space_join:
CPU TRACE:       185     call setup;
CPU TRACE:       467 setup:
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       471     lctp = tty_buf.lct_ptr;
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       473     enter_time = clock ();
CPU TRACE:       474     call lock;
CPU TRACE:       482 lock:
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       498     return;
CPU TRACE:       475     total_freed = 0;
CPU TRACE:       476     return;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       188     blockp = space_getter (buffer_size);
CPU TRACE:       331 space_getter:
CPU TRACE:       336 dcl  best_blockp ptr init (null);            /* Ptr to smallest free block large enough for request */
CPU TRACE:       337 dcl  best_block_size fixed bin init (0);        /* Size of that block */
CPU TRACE:       338 dcl  prev_best_blockp ptr init (null);            /* Block before best_blockp -> free_block */
CPU TRACE:       339 dcl  prev_blockp ptr init (null);            /* Block before current block during scan */
CPU TRACE:       343 dcl  nsteps fixed bin init (0);            /* Number of steps in free chain */
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       347          nsteps = nsteps + 1;
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       353          if free_block.size > n
CPU TRACE:       355         if (best_block_size = 0) | (free_block.size < best_block_size)
CPU TRACE:       357              best_blockp = free_blockp;    /* Remember this block */
CPU TRACE:       358              best_block_size = free_block.size;
CPU TRACE:       359              prev_best_blockp = prev_blockp;    /* Remember preceding block */
CPU TRACE:       362          prev_blockp = free_blockp;
CPU TRACE:       363     end;
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       365     if best_block_size = 0
CPU TRACE:       371     free_blockp = best_blockp;            /* Block to use */
CPU TRACE:       372     prev_blockp = prev_best_blockp;
CPU TRACE:       373     p = addrel (free_blockp, n);            /* Get pointer to new free block */
CPU TRACE:       374     next_rel = rel (p);
CPU TRACE:       375     p -> free_block.next = free_block.next;
CPU TRACE:       376     p -> free_block.size = free_block.size - n;
CPU TRACE:       377 fit_found:
CPU TRACE:       382     unspec (free_space) = "0"b;            /* Clear the buffer */
CPU TRACE:       383     tty_buf.bleft = tty_buf.bleft - n;        /* Total free space */
CPU TRACE:       384     if tty_buf.minimum_free_space = 0 | tty_buf.bleft < tty_buf.minimum_free_space
CPU TRACE:       386     tty_buf.total_alloc_steps = tty_buf.total_alloc_steps + nsteps;
CPU TRACE:       387     return (free_blockp);            /* Return the answer */
CPU TRACE:       189     call clean_up;
CPU TRACE:       511 clean_up:
CPU TRACE:       514     call unlock;
CPU TRACE:       500 unlock:
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       505     return;
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       516     return;
CPU TRACE:       190     arg_blockp = blockp;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       192     if ^perm
CPU TRACE:       554 update_control:
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       562      end update_control;
CPU TRACE:       194     return;

Strange; all the same path. Counting the number of calls, I see 33; possibly the first call was pre line 0. Select a call out of the middle…

CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       171 get_space:
CPU TRACE:       174     perm = "0"b;
CPU TRACE:       175     go to get_space_join;
CPU TRACE:       183 get_space_join:
CPU TRACE:       183 get_space_join:
CPU TRACE:       183 get_space_join:
CPU TRACE:       183 get_space_join:
CPU TRACE:       183 get_space_join:
CPU TRACE:       185     call setup;
CPU TRACE:       467 setup:
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       470     ttybp = addr (tty_buf$);
CPU TRACE:       471     lctp = tty_buf.lct_ptr;
CPU TRACE:       471     lctp = tty_buf.lct_ptr;
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       472     call pmut$wire_and_mask (wire_mask, wire_ptr);
CPU TRACE:       473     enter_time = clock ();
CPU TRACE:       473     enter_time = clock ();
CPU TRACE:       474     call lock;
CPU TRACE:       482 lock:
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       487     if tty_buf.slock = pds$processid
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       489     if ^stac (addr (tty_buf.slock), pds$processid)
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       497     tty_buf.space_lock_count = tty_buf.space_lock_count + 1;
CPU TRACE:       498     return;
CPU TRACE:       475     total_freed = 0;
CPU TRACE:       476     return;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       186     tty_buf.alloc_calls = tty_buf.alloc_calls + 1;
CPU TRACE:       188     blockp = space_getter (buffer_size);
CPU TRACE:       188     blockp = space_getter (buffer_size);
CPU TRACE:       331 space_getter:
CPU TRACE:       331 space_getter:
CPU TRACE:       336 dcl  best_blockp ptr init (null);            /* Ptr to smallest free block large enough for request */
CPU TRACE:       336 dcl  best_blockp ptr init (null);            /* Ptr to smallest free block large enough for request */
CPU TRACE:       337 dcl  best_block_size fixed bin init (0);        /* Size of that block */
CPU TRACE:       338 dcl  prev_best_blockp ptr init (null);            /* Block before best_blockp -> free_block */
CPU TRACE:       339 dcl  prev_blockp ptr init (null);            /* Block before current block during scan */
CPU TRACE:       343 dcl  nsteps fixed bin init (0);            /* Number of steps in free chain */
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       347          nsteps = nsteps + 1;
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       348          if free_block.size = n
CPU TRACE:       353          if free_block.size > n
CPU TRACE:       362          prev_blockp = free_blockp;
CPU TRACE:       363     end;
CPU TRACE:       363     end;
CPU TRACE:       363     end;
CPU TRACE:       363     end;
CPU TRACE:       363     end;
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.free) repeat (ptr (ttybp, free_block.next)) while (rel (free_blockp));
CPU TRACE:       365     if best_block_size = 0
CPU TRACE:       365     if best_block_size = 0
CPU TRACE:       367          tty_buf.alloc_failures = tty_buf.alloc_failures + 1;
CPU TRACE:       367          tty_buf.alloc_failures = tty_buf.alloc_failures + 1;
CPU TRACE:       367          tty_buf.alloc_failures = tty_buf.alloc_failures + 1;
CPU TRACE:       367          tty_buf.alloc_failures = tty_buf.alloc_failures + 1;
CPU TRACE:       367          tty_buf.alloc_failures = tty_buf.alloc_failures + 1;
CPU TRACE:       368          return (null);
CPU TRACE:       368          return (null);
CPU TRACE:       368          return (null);
CPU TRACE:       368          return (null);
CPU TRACE:       189     call clean_up;
CPU TRACE:       511 clean_up:
CPU TRACE:       514     call unlock;
CPU TRACE:       500 unlock:
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       503     if ^stacq (tty_buf.slock, "0"b, pds$processid)
CPU TRACE:       505     return;
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       515     call pmut$unwire_unmask (wire_mask, wire_ptr);
CPU TRACE:       516     return;
CPU TRACE:       190     arg_blockp = blockp;
CPU TRACE:       190     arg_blockp = blockp;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       191     tty_buf.alloc_time = tty_buf.alloc_time + clock () - enter_time;
CPU TRACE:       192     if ^perm
CPU TRACE:       192     if ^perm
CPU TRACE:       192     if ^perm
CPU TRACE:       192     if ^perm
CPU TRACE:       554 update_control:
CPU TRACE:       554 update_control:
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       559     tty_buf.current_control_space = tty_buf.current_control_space + n;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       560     tty_buf.cumulative_control_space = tty_buf.cumulative_control_space + tty_buf.current_control_space;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       561     tty_buf.control_space_updates = tty_buf.control_space_updates + 1;
CPU TRACE:       562      end update_control;
CPU TRACE:       194     return;

diff:

CPU TRACE:       353          if free_block.size > n         CPU TRACE:       353          if free_block.size > n                 
CPU TRACE:       355         if (best_block_size = 0)      <
CPU TRACE:       355         if (best_block_size = 0)      <
CPU TRACE:       357              best_blockp = free_      <
CPU TRACE:       358              best_block_size = f      <
CPU TRACE:       358              best_block_size = f      <
CPU TRACE:       359              prev_best_blockp =       <
CPU TRACE:       359              prev_best_blockp =       <
CPU TRACE:       362          prev_blockp = free_blockp;     CPU TRACE:       362          prev_blockp = free_blockp;             
CPU TRACE:       363     end;                    CPU TRACE:       363     end;                            
CPU TRACE:       363     end;                    CPU TRACE:       363     end;                            
CPU TRACE:       363     end;                    CPU TRACE:       363     end;                            
CPU TRACE:       363     end;                    CPU TRACE:       363     end;                            
CPU TRACE:       363     end;                    CPU TRACE:       363     end;                            
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.   CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.           
CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.   CPU TRACE:       345     do free_blockp = ptr (ttybp, tty_buf.           
CPU TRACE:       365     if best_block_size = 0          CPU TRACE:       365     if best_block_size = 0                  
CPU TRACE:       365     if best_block_size = 0          CPU TRACE:       365     if best_block_size = 0                  
CPU TRACE:       371     free_blockp = best_blockp;          |    CPU TRACE:       367          tty_buf.alloc_failures = tty_buf           
CPU TRACE:       371     free_blockp = best_blockp;          |    CPU TRACE:       367          tty_buf.alloc_failures = tty_buf           
CPU TRACE:       372     prev_blockp = prev_best_blockp;       |    CPU TRACE:       367          tty_buf.alloc_failures = tty_buf           
CPU TRACE:       372     prev_blockp = prev_best_blockp;       |    CPU TRACE:       367          tty_buf.alloc_failures = tty_buf           
CPU TRACE:       373     p = addrel (free_blockp, n);          |    CPU TRACE:       367          tty_buf.alloc_failures = tty_buf           
CPU TRACE:       373     p = addrel (free_blockp, n);          |    CPU TRACE:       368          return (null);                     
CPU TRACE:       373     p = addrel (free_blockp, n);          |    CPU TRACE:       368          return (null);                     
CPU TRACE:       373     p = addrel (free_blockp, n);          |    CPU TRACE:       368          return (null);                     
CPU TRACE:       373     p = addrel (free_blockp, n);          |    CPU TRACE:       368          return (null);
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License