COMPILATION LISTING OF SEGMENT linus_define_area Compiled by: Multics PL/I Compiler, Release 28b, of April 11, 1983 Compiled at: Honeywell LCPD Phoenix, System M Compiled on: 09/16/83 1745.8 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * * 4* * Copyright, (C) Honeywell Information Systems Inc., 1981 * 5* * * 6* * * 7* *********************************************************** */ 8 9 /* ****************************************************** 10* * * 11* * * 12* * Copyright (c) 1972 by Massachusetts Institute of * 13* * Technology and Honeywell Information Systems, Inc. * 14* * * 15* * * 16* ****************************************************** */ 17 18 linus_define_area: 19 procedure (defined_area_ptr, area_name, error_code); 20 21 /* DESCRIPTION: 22* 23* This is a general routine to encapsulate the call to define_area_ and the 24* initializing of the area_info structure needed for that call. Note that 25* the area defined by this call must be deleted by a call to release_area_ to 26* properly clean up any temp segments created. 27* 28* 29* 30* PARAMETERS: 31* 32* defined_area_ptr - - (input/output) pointer, points to the start of the 33* area to be defined by this call. Also the address pointed by 34* defined_area_ptr must be even(0 mod 2). If null, then it's value is 35* assigned, and a temp segment for the area is created. 36* 37* area_name - - (input) char(6), a name for the area, it will be used with 38* extensible areas to name added segments following the {unique_name}.MRDS 39* 40* error_code - - (output) fixed bin(35), 0 unless an error occured in the 41* call to define_area_ 42* 43* 44* 45* HISTORY: 46* 47* 80-02-01 Jim Gray : Originally written. 48* 49* 80-02-02 R. Lackey: Modified to add define_area entry name. 50* 51* 80-03-10 Rickie E. Brinegar: Modified to create areas with the first 52* component of linus (was formerly mrds_dsl_define_area). 53* 54* 81-07-07 Rickie E. Brinegar: Modified to call get_temp_segment_ if the 55* input pointer was null. This was done so that LINUS could properly free 56* temporary segments in the linus module's clean up handler. 57* 58**/ 59 1 1 /* BEGIN INCLUDE FILE area_info.incl.pl1 12/75 */ 1 2 1 3 dcl area_info_version_1 fixed bin static init (1) options (constant); 1 4 1 5 dcl area_infop ptr; 1 6 1 7 dcl 1 area_info aligned based (area_infop), 1 8 2 version fixed bin, /* version number for this structure is 1 */ 1 9 2 control aligned like area_control, /* control bits for the area */ 1 10 2 owner char (32) unal, /* creator of the area */ 1 11 2 n_components fixed bin, /* number of components in the area (returned only) */ 1 12 2 size fixed bin (18), /* size of the area in words */ 1 13 2 version_of_area fixed bin, /* version of area (returned only) */ 1 14 2 areap ptr, /* pointer to the area (first component on multisegment area) */ 1 15 2 allocated_blocks fixed bin, /* number of blocks allocated */ 1 16 2 free_blocks fixed bin, /* number of free blocks not in virgin */ 1 17 2 allocated_words fixed bin (30), /* number of words allocated in the area */ 1 18 2 free_words fixed bin (30); /* number of words free in area not in virgin */ 1 19 1 20 dcl 1 area_control aligned based, 1 21 2 extend bit (1) unal, /* says area is extensible */ 1 22 2 zero_on_alloc bit (1) unal, /* says block gets zerod at allocation time */ 1 23 2 zero_on_free bit (1) unal, /* says block gets zerod at free time */ 1 24 2 dont_free bit (1) unal, /* debugging aid, turns off free requests */ 1 25 2 no_freeing bit (1) unal, /* for allocation method without freeing */ 1 26 2 system bit (1) unal, /* says area is managed by system */ 1 27 2 pad bit (30) unal; 1 28 1 29 /* END INCLUDE FILE area_info.incl.pl1 */ 60 61 62 dcl addr builtin; 63 dcl area_name char (6); /* name to be given to area and extended segs */ 64 dcl define_area_ entry (ptr, fixed bin (35)); /* routine that defines an area */ 65 dcl defined_area_ptr ptr; /* points to area to be defined */ 66 dcl error_code fixed bin (35); /* error status encoding */ 67 dcl get_temp_segment_ entry (char (*), ptr, fixed bin (35)); 68 dcl 1 local_area_info like area_info; 69 dcl null builtin; 70 dcl rtrim builtin; 71 dcl sys_info$max_seg_size fixed bin (35) ext; 72 73 /* initialize the area_info, based on input parameters */ 74 75 if defined_area_ptr = null then 76 call get_temp_segment_ ("LINUS." || rtrim (area_name) || ".area", defined_area_ptr, error_code); 77 78 local_area_info.version = 1; 79 local_area_info.control.extend = "0"b; 80 local_area_info.control.zero_on_alloc = "0"b; 81 local_area_info.control.zero_on_free = "0"b; 82 local_area_info.control.dont_free = "0"b; 83 local_area_info.control.no_freeing = "1"b; 84 local_area_info.control.system = "0"b; 85 local_area_info.control.pad = "0"b; 86 local_area_info.owner = "LINUS." || rtrim (area_name); 87 local_area_info.n_components = 0; 88 local_area_info.size = sys_info$max_seg_size; 89 local_area_info.version_of_area = 1; 90 local_area_info.areap = defined_area_ptr; 91 local_area_info.allocated_blocks = 0; 92 local_area_info.free_blocks = 0; 93 local_area_info.allocated_words = 0; 94 local_area_info.free_words = 0; 95 96 /* now make the call to define the area according to the parameters */ 97 98 call define_area_ (addr (local_area_info), error_code); 99 100 return; 101 102 end; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/16/83 1739.3 linus_define_area.pl1 >spec>on>09/16/83-linus>linus_define_area.pl1 60 1 06/11/76 1043.4 area_info.incl.pl1 >ldd>include>area_info.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. addr builtin function dcl 62 ref 98 98 allocated_blocks 20 000100 automatic fixed bin(17,0) level 2 dcl 68 set ref 91* allocated_words 22 000100 automatic fixed bin(30,0) level 2 dcl 68 set ref 93* area_control based structure level 1 dcl 1-20 area_info based structure level 1 dcl 1-7 area_name parameter char(6) unaligned dcl 63 ref 18 75 86 areap 16 000100 automatic pointer level 2 dcl 68 set ref 90* control 1 000100 automatic structure level 2 dcl 68 define_area_ 000010 constant entry external dcl 64 ref 98 defined_area_ptr parameter pointer dcl 65 set ref 18 75 75* 90 dont_free 1(03) 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 82* error_code parameter fixed bin(35,0) dcl 66 set ref 18 75* 98* extend 1 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 79* free_blocks 21 000100 automatic fixed bin(17,0) level 2 dcl 68 set ref 92* free_words 23 000100 automatic fixed bin(30,0) level 2 dcl 68 set ref 94* get_temp_segment_ 000012 constant entry external dcl 67 ref 75 local_area_info 000100 automatic structure level 1 unaligned dcl 68 set ref 98 98 n_components 12 000100 automatic fixed bin(17,0) level 2 dcl 68 set ref 87* no_freeing 1(04) 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 83* null builtin function dcl 69 ref 75 owner 2 000100 automatic char(32) level 2 packed unaligned dcl 68 set ref 86* pad 1(06) 000100 automatic bit(30) level 3 packed unaligned dcl 68 set ref 85* rtrim builtin function dcl 70 ref 75 86 size 13 000100 automatic fixed bin(18,0) level 2 dcl 68 set ref 88* sys_info$max_seg_size 000014 external static fixed bin(35,0) dcl 71 ref 88 system 1(05) 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 84* version 000100 automatic fixed bin(17,0) level 2 dcl 68 set ref 78* version_of_area 14 000100 automatic fixed bin(17,0) level 2 dcl 68 set ref 89* zero_on_alloc 1(01) 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 80* zero_on_free 1(02) 000100 automatic bit(1) level 3 packed unaligned dcl 68 set ref 81* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. area_info_version_1 internal static fixed bin(17,0) initial dcl 1-3 area_infop automatic pointer dcl 1-5 NAME DECLARED BY EXPLICIT CONTEXT. linus_define_area 000016 constant entry external dcl 18 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 276 314 216 306 Length 502 216 16 152 57 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME linus_define_area 104 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME linus_define_area 000100 local_area_info linus_define_area THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs cat_realloc_cs call_ext_out_desc call_ext_out return shorten_stack ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. define_area_ get_temp_segment_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. sys_info$max_seg_size LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 18 000012 75 000023 78 000107 79 000112 80 000114 81 000116 82 000120 83 000122 84 000124 85 000126 86 000130 87 000160 88 000162 89 000165 90 000167 91 000172 92 000173 93 000174 94 000175 98 000176 100 000210 ----------------------------------------------------------- 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