COMPILATION LISTING OF SEGMENT release_outbuffer_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/07/87 1505.7 mst Fri Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1986 * 6* * * 7* *********************************************************** */ 8 9 10 /****^ HISTORY COMMENTS: 11* 1) change(86-12-03,Flegel), approve(86-12-03,MCR7580), 12* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 13* Created to place buffer freeing in one place. 14* END HISTORY COMMENTS */ 15 16 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 17 release_outbuffer_: 18 proc (p_mcb_ptr); 19 20 /* : PROGRAM FUNCTION 21* 22*Free the output buffer associated with the supplied mcb. 23**/ 24 25 /* : NOTES 26* 27*Buffer strucure is as follows: 28* 29* data -------------------> characters (output_buffer.buffer_length) 30* next_buffer 31* | 32* V 33* data -------------------> characters (output_buffer.buffer_length) 34* next_buffer 35* | 36* V 37* 38**/ 39 40 /* INPUT PARAMETERS */ 41 dcl p_mcb_ptr ptr; /* MCB */ 42 43 /* OUTPUT PARAMETERS */ 44 45 /* MISC VARIABLES */ 46 dcl temp_buff_ptr ptr; /* Miscellaneous ptr */ 47 dcl output_buffer_ptr ptr; /* Output buffer node */ 48 dcl output_buffer_length fixed bin; /* Length of outbufferdata */ 49 50 /* STRUCTURES */ 51 dcl output_buffer_data char (output_buffer_length) 52 based (output_buffer_ptr); /* Freed buffer */ 53 54 /* SYSTEM CALLS */ 55 56 /* SYSTEM CALL SUPPORT */ 57 58 /* EXTERNAL CALLS */ 59 60 /* EXTERNAL CALL SUPPORT */ 61 62 /* BUILTINS */ 63 dcl null builtin; 64 65 /* CONDITIONS */ 66 67 /* CONSTANTS */ 68 69 /* */ 70 /* INITIALIZATION */ 71 if p_mcb_ptr = null then 72 return; 73 74 /* MAIN */ 75 76 temp_buff_ptr = p_mcb_ptr -> mcb.outbuff_list_start; 77 p_mcb_ptr -> mcb.outbuff_list_start = null; 78 p_mcb_ptr -> mcb.outbuff_list_end = null; 79 do while (temp_buff_ptr ^= null); 80 output_buffer_ptr = temp_buff_ptr -> output_buffer.data; 81 output_buffer_length 82 = temp_buff_ptr -> output_buffer.buffer_length; 83 free output_buffer_data; 84 output_buffer_ptr = null; 85 86 output_buffer_ptr = temp_buff_ptr; 87 temp_buff_ptr = output_buffer_ptr -> output_buffer.next_buffer; 88 free output_buffer_ptr -> output_buffer; 89 output_buffer_ptr = null; 90 end; 91 92 93 /* INCLUDE FILES */ 1 1 /* BEGIN INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-05-17,Smith), approve(87-07-15,MCR7580), 1 5* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 6* Created to define the mcb (Mowse Control Block) 1 7* for information on capabilities. 1 8* 2) change(86-11-27,Flegel), approve(86-11-27,MCR7580), 1 9* audit(87-07-30,RBarstad), install(87-08-07,MR12.1-1075): 1 10* Approved. 1 11* END HISTORY COMMENTS */ 1 12 /* MOWSE control block */ 1 13 /* format: style4,indattr,ifthen,^indcomtxt,thendo,^indproc,^indblkcom,initcol1,declareind8,dclind4,struclvlind3,comcol55 */ 1 14 dcl 01 mcb based, 1 15 02 version char (8), 1 16 02 capability_name char (32), /* Name of capability */ 1 17 02 major_capability fixed bin (17), /* Capability number */ 1 18 02 inbuff_length fixed bin (17), /* Length of buffer */ 1 19 02 inbuff_position_index 1 20 fixed bin (17), /* Current position in inbuffer */ 1 21 02 inbuff_data_length 1 22 fixed bin (17), /* Amoiunt of data in inbuffer */ 1 23 02 outbuff_length fixed bin (17), /* Length of outbuffer */ 1 24 02 mbz1 bit (36) unal, 1 25 02 entry_var entry options (variable), /* Message processor entry point of capability */ 1 26 02 data_block_ptr ptr, /* Capability data */ 1 27 02 inbuff ptr, /* Message input buffer */ 1 28 02 outbuff_list_start 1 29 ptr, /* Pointer to outbuffer data */ 1 30 02 outbuff_list_end ptr, /* Last node in outbuffer data */ 1 31 02 iocb_ptr ptr, /* IOCB to mowse_io_ */ 1 32 02 mowse_info_ptr ptr; /* MOWSE information */ 1 33 /* Output buffer linked list node */ 1 34 dcl 01 output_buffer based, 1 35 02 destination_system 1 36 char, /* Destination of message */ 1 37 02 destination_major char, 1 38 02 destination_minor char, 1 39 02 buffer_position fixed bin, /* Position in buffer of message */ 1 40 02 buffer_length fixed bin, /* Length of buffer */ 1 41 02 next_buffer ptr, /* Next buffer of message */ 1 42 02 data ptr; /* Pointer to message */ 1 43 1 44 /* END INCLUDE FILE: mowse_mcb.incl.pl1 * * * * * * * * * * * * */ 94 95 96 /* : END */ 97 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/07/87 1454.7 release_outbuffer_.pl1 >special_ldd>install>MR12.1-1075>release_outbuffer_.pl1 94 1 08/07/87 1447.6 mowse_mcb.incl.pl1 >special_ldd>install>MR12.1-1075>mowse_mcb.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. buffer_length 2 based fixed bin(17,0) level 2 dcl 1-34 ref 81 data 6 based pointer level 2 dcl 1-34 ref 80 mcb based structure level 1 unaligned dcl 1-14 next_buffer 4 based pointer level 2 dcl 1-34 ref 87 null builtin function dcl 63 ref 71 77 78 79 84 89 outbuff_list_end 32 based pointer level 2 dcl 1-14 set ref 78* outbuff_list_start 30 based pointer level 2 dcl 1-14 set ref 76 77* output_buffer based structure level 1 unaligned dcl 1-34 ref 88 output_buffer_data based char unaligned dcl 51 ref 83 output_buffer_length 000104 automatic fixed bin(17,0) dcl 48 set ref 81* 83 83 output_buffer_ptr 000102 automatic pointer dcl 47 set ref 80* 83 84* 86* 87 88 89* p_mcb_ptr parameter pointer dcl 41 ref 17 71 76 77 78 temp_buff_ptr 000100 automatic pointer dcl 46 set ref 76* 79 80 81 86 87* NAME DECLARED BY EXPLICIT CONTEXT. release_outbuffer_ 000007 constant entry external dcl 17 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 114 124 65 124 Length 314 65 10 153 26 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME release_outbuffer_ 69 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME release_outbuffer_ 000100 temp_buff_ptr release_outbuffer_ 000102 output_buffer_ptr release_outbuffer_ 000104 output_buffer_length release_outbuffer_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return_mac ext_entry op_freen_ NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 17 000004 71 000014 76 000021 77 000025 78 000027 79 000032 80 000036 81 000041 83 000044 84 000050 86 000052 87 000054 88 000057 89 000061 90 000063 97 000064 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved