COMPILATION LISTING OF SEGMENT memo_timer_set_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: CGI Compiled on: 2000-04-17_1947.51_Mon_mdt Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 memo_timer_set_: proc (P_msp, P_alarm_entry); 12 13 /* * This entry sets up a timer for the next memo to go off, which will call P_alarm_entry 14* * 15* * June, 1979, W. Olin Sibert 16* */ 17 18 dcl (P_msp pointer, 19 P_alarm_entry entry ()) parameter; 20 21 dcl time fixed bin (35); 22 dcl idx fixed bin; 23 24 dcl large fixed bin (35) internal static init (0); 25 26 dcl memo_util_$to_gmt entry (fixed bin (35)) returns (fixed bin (71)); 27 dcl timer_manager_$alarm_call entry (fixed bin (71), bit (2) aligned, entry); 28 29 dcl ABSOLUTE_MICROSECONDS bit (2) aligned internal static options (constant) init ("00"b); 30 31 dcl (max, min, unspec) builtin; 32 33 /* */ 34 35 memo_segment_ptr = P_msp; 36 37 if large = 0 then /* initialize static variable, cause pl1 has no facility for */ 38 unspec (large) = "377777777777"b3; /* doing this sort of useful thing */ 39 40 time = large; /* look for earliest time */ 41 42 do idx = 1 to memo_segment.max_number_used; /* go through all entries that may be memos */ 43 if memo_entry (idx).taken ^= "0"b then /* if not taken then entry is free, and ignore it */ 44 if memo_entry (idx).flags.alarm then /* it must be an alarm entry */ 45 time = min (time, memo_entry (idx).time); /* check for earliest time */ 46 end; /* of loop through memos */ 47 48 if time < large then /* we found one.... */ 49 call timer_manager_$alarm_call (memo_util_$to_gmt (time), ABSOLUTE_MICROSECONDS, P_alarm_entry); 50 51 return; 52 /* BEGIN INCLUDE FILE ... memo_segment.incl.pl1 ... July, 1979 ... W. Olin Sibert */ 1 2 /* * This include file describes a memo segment. Presently, this structure is still 1 3* * compatible with "old" version 3 memo segments, although it uses more of the pad 1 4* * fields; hence, it is still identified as version 3. If the conversion to version 1 5* * 4 memo segments is ever done, this will have to be changed for version 4. 1 6* */ 1 7 1 8 dcl memo_segment_ptr pointer; 1 9 1 10 dcl MAX_NUMBER_MEMOS fixed bin internal static options (constant) init (5802); 1 11 /* max number of memos in a memo segment */ 1 12 1 13 dcl MEMO_SEGMENT_VERSION_3 fixed bin internal static options (constant) init (3); 1 14 1 15 dcl 1 memo_segment aligned based (memo_segment_ptr), /* current version of whole segment */ 1 16 2 header like memo_segment_header, 1 17 2 memo_entry (MAX_NUMBER_MEMOS) like memo_segment_entry; 1 18 1 19 dcl 1 memo_segment_header aligned based, /* header for memo segment */ 1 20 2 version fixed bin (35), /* presently 3 */ 1 21 2 max_number_used fixed bin (35); /* The highest entry known to be used */ 1 22 1 23 dcl 1 memo_segment_entry aligned based, /* the entry for a single memo */ 1 24 2 taken bit (36) aligned, /* Zero if this entry free */ 1 25 2 flags aligned, /* data about this memo */ 1 26 3 print bit (1) unaligned, /* normal type memo */ 1 27 3 alarm bit (1) unaligned, /* alarm type */ 1 28 3 execute bit (1) unaligned, /* execute type */ 1 29 3 repeatsw bit (1) unaligned, /* has repeat string */ 1 30 3 expires bit (1) unaligned, /* has expiration time */ 1 31 3 remains bit (1) unaligned, /* do not delete this memo when its alarm goes off */ 1 32 3 single bit (1) unaligned, /* delete this non-alarm memo after one printing or execution */ 1 33 3 per_process bit (1) unaligned, /* causes repeat to be done from time_now, not maturity */ 1 34 3 pad1 bit (28) unaligned, /* not used */ 1 35 2 exp_delta fixed bin (35), /* delta time before memo expires */ 1 36 2 time fixed bin (35), /* time this memo matures */ 1 37 2 data char (132) aligned, /* the memo message */ 1 38 2 repeat char (32) aligned; /* the repeat string */ 1 39 1 40 /* END INCLUDE FILE memo_segment.incl.pl1 */ 52 53 54 end; /* external procedure memo_timer_set_ */ SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 04/17/00 1947.5 memo_timer_set_.pl1 >udd>sm>ds>w>ml>memo_timer_set_.pl1 52 1 08/18/81 1610.4 memo_segment.incl.pl1 >ldd>incl>memo_segment.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. ABSOLUTE_MICROSECONDS 000001 constant bit(2) initial dcl 29 set ref 48* MAX_NUMBER_MEMOS internal static fixed bin(17,0) initial dcl 1-10 ref 1-15 P_alarm_entry parameter entry variable dcl 18 set ref 11 48* P_msp parameter pointer dcl 18 ref 11 35 alarm 3(01) based bit(1) array level 4 packed packed unaligned dcl 1-15 ref 43 flags 3 based structure array level 3 dcl 1-15 header based structure level 2 dcl 1-15 idx 000101 automatic fixed bin(17,0) dcl 22 set ref 42* 43 43 43* large 000010 internal static fixed bin(35,0) initial dcl 24 set ref 37 37* 40 48 max_number_used 1 based fixed bin(35,0) level 3 dcl 1-15 ref 42 memo_entry 2 based structure array level 2 dcl 1-15 memo_segment based structure level 1 dcl 1-15 memo_segment_entry based structure level 1 dcl 1-23 memo_segment_header based structure level 1 dcl 1-19 memo_segment_ptr 000102 automatic pointer dcl 1-8 set ref 35* 42 43 43 43 memo_util_$to_gmt 000012 constant entry external dcl 26 ref 48 48 min builtin function dcl 31 ref 43 taken 2 based bit(36) array level 3 dcl 1-15 ref 43 time 000100 automatic fixed bin(35,0) dcl 21 in procedure "memo_timer_set_" set ref 40* 43* 43 48 48* 48* time 5 based fixed bin(35,0) array level 3 in structure "memo_segment" dcl 1-15 in procedure "memo_timer_set_" ref 43 timer_manager_$alarm_call 000014 constant entry external dcl 27 ref 48 unspec builtin function dcl 31 set ref 37* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. MEMO_SEGMENT_VERSION_3 internal static fixed bin(17,0) initial dcl 1-13 max builtin function dcl 31 NAME DECLARED BY EXPLICIT CONTEXT. memo_timer_set_ 000011 constant entry external dcl 11 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 160 176 110 170 Length 360 110 16 145 47 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME memo_timer_set_ 86 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 large memo_timer_set_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME memo_timer_set_ 000100 time memo_timer_set_ 000101 idx memo_timer_set_ 000102 memo_segment_ptr memo_timer_set_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out return_mac ext_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. memo_util_$to_gmt timer_manager_$alarm_call NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000005 35 000016 37 000022 40 000026 42 000030 43 000037 46 000055 48 000057 51 000107 ----------------------------------------------------------- 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