" *********************************************************** " * * " * Copyright, (C) Honeywell Bull Inc., 1987 * " * * " * Copyright, (C) Honeywell Information Systems Inc., 1982 * " * * " * Copyright (c) 1972 by Massachusetts Institute of * " * Technology and Honeywell Information Systems, Inc. * " * * " *********************************************************** " HISTORY COMMENTS: " 1) change(87-01-12,Lippard), approve(87-02-09,MCR7616), " audit(87-06-03,Farley), install(87-08-06,MR12.1-1063): " Added set_procs_required. " 2) change(87-08-07,Lippard), approve(87-02-09,PBF7616), " audit(87-08-11,Farley), install(87-08-18,MR12.1-1090): " Added get_procs_required. " END HISTORY COMMENTS " Added $get_segment_ptr_path 09/21/84 Steve Herbst " Renamed makeunknown, terminate to terminate_, 11/05/84 Keith Loepere. " Modified 1984-11-20 by E. Swenson to remove hcs_$sfblock. " Removed pd_page_faults, 01/08/85 Keith Loepere. " Modified 1985-02-21 by E. Swenson to add get_user_access_modes_seg " and get_ring_brackets_seg entries. " Modified 1985-03-04 by M. Weaver to remove rest_of_datmk_ and fs_get_call_name. " Modified 1985-03-29 by M. Pandolf to add get_access_(info info_seg). include gate_macros hardcore_gate_info hcs_ hgate acl_add,acl,aadd,5,bad_dir_trap hgate acl_add1,acl,a1add,6,bad_dir_trap hgate acl_delete,acl,adelete,5,bad_dir_trap hgate acl_list,acl,alist,6,bad_dir_trap hgate acl_replace,acl,areplace,5,bad_dir_trap hgate add_acl_entries,asd_,add_sentries,5,bad_dir_trap hgate add_dir_acl_entries,asd_,add_dentries,5,bad_dir_trap hgate add_dir_inacl_entries,asd_,add_identries,6,bad_dir_trap hgate add_inacl_entries,asd_,add_isentries,6,bad_dir_trap hgate append_branch,append,branch,4,bad_dir_trap hgate append_branchx,append,branchx,9,bad_dir_trap hgate append_link,append,link,4,bad_dir_trap hgate appendl,append,link,4,bad_dir_trap hgate assign_channel,hc_ipc,assign_channel,2 hgate assign_linkage,link_man,assign_linkage,3 fgate block,fast_hc_ipc,ipc_block,0 hgate change_bc,set,change_bc_path,6,bad_dir_trap hgate change_bc_seg,set,change_bc_ptr,5,bad_dir_trap hgate chname,chname,cfile,5,bad_dir_trap hgate chname_file,chname,cfile,5,bad_dir_trap hgate chname_seg,chname,cseg,4,bad_dir_trap hgate combine_linkage,link_man,combine_linkage,3 hgate create_branch_,append,create_branch_,4,bad_dir_trap hgate del_dir_tree,del_dir_tree,del_dir_tree,3,bad_dir_trap hgate delentry_file,delentry,dfile,3,bad_dir_trap hgate delentry_seg,delentry,dseg,2,bad_dir_trap hgate delete_acl_entries,asd_,del_sentries,5,bad_dir_trap hgate delete_channel,hc_ipc,delete_channel,2 hgate delete_dir_acl_entries,asd_,del_dentries,5,bad_dir_trap hgate delete_dir_inacl_entries,asd_,del_identries,6,bad_dir_trap hgate delete_inacl_entries,asd_,del_isentries,6,bad_dir_trap hgate dir_quota_read,quota,dqread,8,bad_dir_trap hgate dir_quota_move,quota,dqmove,4,bad_dir_trap hgate echo_negotiate_get_chars,tty_read,echo_negotiate_get_chars,9 fgate fblock,fast_hc_ipc,ipc_f_block,2 hgate flush_consecutive_pages,force_write,consecutive,2 hgate flush_pages,force_write,list,2 hgate force_write,force_write,force_write,3 hgate fs_get_access_modes,fs_get,access_modes,4 hgate fs_get_brackets,fs_get,brackets,4,bad_dir_trap hgate fs_get_dir_name,fs_get,dir_name,4 hgate fs_get_mode,fs_get,mode,3 hgate fs_get_path_name,fs_get,path_name,5 hgate fs_get_ref_name,fs_get,ref_name,4 hgate fs_get_seg_ptr,fs_get,seg_ptr,3 hgate fs_move_file,fs_move,ffile,6,bad_dir_trap hgate fs_move_seg,fs_move,fseg,4,bad_dir_trap hgate fs_search_get_wdir,fs_search,get_wdir,2 hgate fs_search_set_wdir,fs_search,set_wdir,2 hgate get_access_class,status_,get_access_class,4,bad_dir_trap hgate get_access_class_seg,status_,get_access_class_ptr,3,bad_dir_trap hgate get_access_info,status_,get_access_info,5,bad_dir_trap hgate get_access_info_seg,status_,get_access_info_seg,3,bad_dir_trap hgate get_alarm_timer,set_alarm_timer,get_alarm_timer,2 hgate get_author,status_,get_author,5,bad_dir_trap hgate get_authorization,proc_info,authorization,2 hgate get_bc_author,status_,get_bc_author,4,bad_dir_trap hgate get_dates,status_,get_dates,4,bad_dir_trap hgate get_dates_ptr,status_,get_dates_ptr,3,bad_dir_trap hgate get_defname_,get_defname_,get_defname_,6 hgate get_dir_ring_brackets,ringbr_,get_dir,4,bad_dir_trap hgate get_exponent_control,hc_exponent_control,exponent_control_get,3 hgate get_hex_exponent_control,hc_exponent_control,hex_exponent_control_get,3 hgate get_initial_ring,proc_info,get_initial_ring,1 hgate get_ipc_operands,tc_util,get_ipc_operands,2 fgate get_ips_mask,ips_,get_ips_mask,1 hgate get_link_target,fs_get,get_link_target,5 hgate get_lp,link_man,get_lp,2 hgate get_max_length,status_,get_max_length,4,bad_dir_trap hgate get_max_length_seg,status_,get_max_length_ptr,3,bad_dir_trap hgate get_page_trace,hc_page_trace,get_page_trace,1 hgate get_page_trace_signal,hc_page_trace,get_signal,2 hgate get_process_usage,get_process_usage,get_process_usage,2 hgate get_procs_required,set_procs_required,get_procs_required,3 hgate get_ring_brackets,ringbr_,get,4,bad_dir_trap hgate get_ring_brackets_seg,ringbr_,get_ring_brackets_seg,3,bad_dir_trap hgate get_safety_sw,status_,get_safety_sw,4,bad_dir_trap hgate get_safety_sw_seg,status_,get_safety_sw_ptr,3,bad_dir_trap hgate get_search_rules,fs_get,search_rules,1 hgate get_segment_ptr_path,initiate_,get_segment_ptr_path,5 hgate get_system_search_rules,initiate_search_rules,get_system_rules,2 hgate get_uid_file,status_,get_uid_file,4,bad_dir_trap hgate get_uid_seg,kst_info,get_uid,3 hgate get_user_access_modes,status_,get_user_access_modes,7,bad_dir_trap hgate get_user_access_modes_seg,status_,get_user_access_modes_seg,6,bad_dir_trap hgate get_user_effmode,status_,get_user_effmode,6,bad_dir_trap hgate get_user_raw_mode,status_,get_user_raw_mode,5,bad_dir_trap hgate get_volume_dump_switches,status_,get_volume_dump_switches,5,bad_dir_trap hgate grow_lot,link_man,grow_lot,1 hgate high_low_seg_count,kst_info,high_low_seg_count,2 hgate history_regs_get,history_reg_save,per_proc_get,1 hgate history_regs_set,history_reg_save,per_proc_set,1 hgate initiate,initiate,initiate,7,bad_dir_trap hgate initiate_count,initiate,initiate_count,7,bad_dir_trap hgate initiate_search_rules,initiate_search_rules,initiate_search_rules,2 fgate level_get,level,get,1 fgate level_set,level,set_gate,1 hgate link_force,link_snap,link_force,3 hgate list_acl,asd_,list_sall,7,bad_dir_trap hgate list_dir,star_,list_dir,7,bad_dir_trap hgate list_dir_fast,star_,list_dir_fast,7,bad_dir_trap hgate list_dir_acl,asd_,list_dall,7,bad_dir_trap hgate list_dir_inacl,asd_,list_idall,8,bad_dir_trap hgate list_inacl,asd_,list_isall,8,bad_dir_trap hgate list_inacl_all,list_inacl_all,list_inacl_all,5,bad_dir_trap hgate lv_attached,mountedp,mountedp,2 hgate make_entry,link_snap,make_entry,5 hgate make_ptr,link_snap,make_ptr,5 hgate make_seg,make_seg,make_seg,6,bad_dir_trap hgate makeunknown,terminate_,terminate_,3 fgate mask_ips,ips_,mask_ips,2 hgate pre_page_info,page,pre_page_info,4 hgate proc_info,proc_info,proc_info,4 hgate quota_get,quota,qget,8,bad_dir_trap hgate quota_read,quota,qread,8,bad_dir_trap hgate quota_move,quota,qmove,4,bad_dir_trap hgate read_events,fast_hc_ipc,read_events,2 hgate release_segment_numbers,kst_util,free_range,3 hgate replace_acl,asd_,replace_sall,6,bad_dir_trap hgate replace_dir_acl,asd_,replace_dall,6,bad_dir_trap hgate replace_dir_inacl,asd_,replace_idall,7,bad_dir_trap hgate replace_inacl,asd_,replace_isall,7,bad_dir_trap hgate reserve_segment_numbers,kst_util,get_range,3 fgate reset_ips_mask,ips_,reset_ips_mask,2 hgate reset_working_set,page,reset_working_set,0 hgate set_256K_switch,kst_util,set_256K_switch,3 hgate set_alarm,set_alarm_timer,set_alarm,2 hgate set_alarm_timer,set_alarm_timer,set_alarm_timer,3 fgate set_automatic_ips_mask,ips_,set_automatic_ips_mask,2 hgate set_bc,set,bc,4,bad_dir_trap hgate set_bc_seg,set,bc_seg,3,bad_dir_trap hgate set_copysw,set,copysw,4,bad_dir_trap hgate set_cpu_timer,pxss,set_cpu_timer,3 hgate set_damaged_sw,set,damaged_sw_path,4,bad_dir_trap hgate set_damaged_sw_seg,set,damaged_sw_ptr,3,bad_dir_trap hgate set_dir_ring_brackets,ringbr_,set_dir,4,bad_dir_trap hgate set_dnzp_sw,set,dnzp_sw_path,4,bad_dir_trap hgate set_dnzp_sw_seg,set,dnzp_sw_ptr,3,bad_dir_trap hgate set_entry_bound,set,entry_bound_path,4,bad_dir_trap hgate set_entry_bound_seg,set,entry_bound_ptr,3,bad_dir_trap hgate set_exponent_control,hc_exponent_control,exponent_control_set,4 hgate set_hex_exponent_control,hc_exponent_control,hex_exponent_control_set,4 hgate set_hexfp_control,hc_exponent_control,set_hexfp_control,3 fgate set_ips_mask,ips_,set_ips_mask,2 hgate set_max_length,set,max_length_path,4,bad_dir_trap hgate set_max_length_seg,set,max_length_ptr,3,bad_dir_trap hgate set_page_trace_signal,hc_page_trace,set_signal,6 hgate set_pl1_machine_mode,illegal_procedure,set_pl1_machine_mode,2 hgate set_procs_required,set_procs_required,set_procs_required,2 hgate set_ring_brackets,ringbr_,set,4,bad_dir_trap hgate set_safety_sw,set,safety_sw_path,4,bad_dir_trap hgate set_safety_sw_seg,set,safety_sw_ptr,3,bad_dir_trap fgate set_stack_ptr,set_stack_ptr,set_stack_ptr,1 hgate set_synchronized_sw,set,synchronized_sw,4 hgate set_timer,pxss,set_timer,2 hgate set_volume_dump_switches,set,volume_dump_switches,5,bad_dir_trap hgate star_,star_,star_,8,bad_dir_trap hgate star_dir_list_,star_,dir_list_,9,bad_dir_trap hgate star_list_,star_,list_,9,bad_dir_trap hgate status_,status_,status_,6,bad_dir_trap hgate status_for_backup,status_,status_for_backup,4,bad_dir_trap hgate status_long,status_,long,6,bad_dir_trap hgate status_minf,status_,minf,6,bad_dir_trap hgate status_mins,status_,mins,4,bad_dir_trap hgate stop_process,stop_process,stop_process,1 hgate terminate_file,terminate_,tefile,4 hgate terminate_name,terminate_,name,2 hgate terminate_noname,terminate_,noname,2 hgate terminate_seg,terminate_,teseg,3 hgate trace_marker,page,trace_marker,1 hgate truncate_file,truncate,trfile,4,bad_dir_trap hgate truncate_seg,truncate,trseg,3,bad_dir_trap hgate try_to_unlock_lock,try_to_unlock_lock,try_to_unlock_lock,2 hgate tty_abort,tty_abort,tty_abort,4 hgate tty_attach,tty_attach,tty_attach,5 hgate tty_detach,tty_detach,tty_detach,4 hgate tty_detach_new_proc,tty_detach,new_proc,4 hgate tty_get_line,tty_read,tty_get_line,8 hgate tty_event,tty_index,tty_event,4 hgate tty_get_name,tty_index,tty_get_name,4 hgate tty_index,tty_index,tty_index,4 hgate tty_order,tty_order,tty_order,5 hgate tty_read,tty_read,tty_read,7 hgate tty_read_with_mark,tty_read,tty_read_with_mark,6 hgate tty_read_echoed,tty_read,tty_read_echoed,9 hgate tty_state,tty_state,tty_state,3 hgate tty_write,tty_write,tty_write,7 hgate tty_write_set_mark,tty_write,tty_write_set_mark,5 hgate tty_write_whole_string,tty_write,tty_write_whole_string,6 fgate unmask_ips,ips_,unmask_ips,2 fgate usage_values,usage_values,usage_values,2 hgate validate_processid,tc_util,validate_processid,2 hgate wakeup,hc_ipc,ipc_wakeup,4 " " " " " " " " " " " " " " " " " " " " " " " " " " " " " The following code is in hcs_ for efficiency. " " " The following entries are implemented here: " cpu_time_and_paging_ " cpu_time_and_paging_op_ " virtual_cpu_time_ " virtual_cpu_time_op_ " total_cpu_time_ " " Modified 741214 by PG to be inhibited while doing calculations. " Modified: 80/07/16 by PCK to move the code for these entries " out of the transfer vector so that meter_gate does " not get confused and to make the system more secure " " " " " " " " " " " " " " " " " " " " " " " " " " " " " use transfer_vector segdef cpu_time_and_paging_ segdef get_usage_values cpu_time_and_paging_: get_usage_values: tra cpu_time_and_paging_.e use main zero 0,0 cpu_time_and_paging_.e: epplp .my_lp,* inhibit on <+><+><+><+><+> rccl sys_info$clock_,* read the clock sbaq pds$cpu_time convert to cpu time sbaq pds$virtual_delta convert to virtual CPU time inhibit off <-><-><-><-><-> staq ap|4,* return to caller lda pds$page_waits get the page faults for the process sta ap|2,* return to caller stz ap|6,* (paging device page faults) return to caller short_return " use transfer_vector segdef total_cpu_time_ total_cpu_time_: tra total_cpu_time_.e use main zero 0,0 total_cpu_time_.e: epplp .my_lp,* inhibit on <+><+><+><+><+> rccl sys_info$clock_,* read the clock sbaq pds$cpu_time convert to cpu time inhibit off <-><-><-><-><-> staq ap|2,* return to caller short_return " use transfer_vector segdef virtual_cpu_time_ virtual_cpu_time_: tra virtual_cpu_time_.e use main zero 0,0 virtual_cpu_time_.e: epplp .my_lp,* inhibit on <+><+><+><+><+> rccl sys_info$clock_,* read the clock sbaq pds$cpu_time convert to cpu time sbaq pds$virtual_delta convert to virtual CPU time inhibit off <-><-><-><-><-> staq ap|2,* return to caller short_return " " This operator is an internal interface for the convenience " of pl1_operators_. It returns the virtual cpu time of the calling " process in the AQ, with the indicators properly set. Note that " this operator does not follow normal system conventions for " argument passing. " " NOTE WELL: pl1_operators_ and compiled pl1 programs " depend on the fact that this operator modifies only PR4, PR7, " the AQ, and the indicators. If the register usage of this " operator must be changed, pl1_operators_ must also be changed " to save and restore the affected registers. " use transfer_vector segdef virtual_cpu_time_op_ virtual_cpu_time_op_: tra virtual_cpu_time_op_.e use main zero 0,0 virtual_cpu_time_op_.e: epplp .my_lp,* inhibit on <+><+><+><+><+><+><+><+><+><+><+><+><+> rccl sys_info$clock_,* read the calendar clock sbaq pds$cpu_time adjust to real cpu time sbaq pds$virtual_delta adjust to virtual cpu time inhibit off <-><-><-><-><-><-><-><-><-><-><-><-><-> rtcd sp|stack_frame.return_ptr return to user program " " This operator returns the virtual cpu time of the calling " process in the AQ. (The indicators are not guaranteed). " The number of page faults taken by the calling process " is returned in X0 and X1 (upper 18 bits and lower 18 bits " respectively). Note that this operator does not follow " normal system conventions for argument passing. " use transfer_vector segdef cpu_time_and_paging_op_ cpu_time_and_paging_op_: tra cpu_time_and_paging_op_.e use main zero 0,0 cpu_time_and_paging_op_.e: epplp .my_lp,* inhibit on <+><+><+><+><+><+><+><+><+><+><+><+><+> rccl sys_info$clock_,* read the calendar clock sbaq pds$cpu_time adjust to real cpu time sbaq pds$virtual_delta adjust to virtual cpu time ldx0 pds$page_waits get upper 18 bits of page faults lxl1 pds$page_waits get lower 18 bits of page faults inhibit off <-><-><-><-><-><-><-><-><-><-><-><-><-> rtcd sp|stack_frame.return_ptr bad_dir_handler end " " " ----------------------------------------------------------- " " " " 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 " "