Tree @HEAD (Download .tar.gz)
- ..
- add_inter.c
- aio_shim.c
- anticipatory_freeze.c
- arlinkdbg.h
- ast.h
- auto_zlink.c
- auto_zlink.h
- backup_buffer_flush.c
- bin_load.c
- bit_op.h
- buildaux.csh
- buildaux_dse.csh
- buildaux_gde.csh
- buildaux_gtcm_gnp_server.csh
- buildaux_gtcm_pkdisp.csh
- buildaux_gtcm_play.csh
- buildaux_gtcm_server.csh
- buildaux_gtcm_shmclean.csh
- buildaux_gtmcrypt.csh
- buildaux_gtmsecshr.csh
- buildaux_lke.csh
- buildaux_mupip.csh
- buildbdp.csh
- buildbta.csh
- builddbg.csh
- buildpro.csh
- buildshr.csh
- buildwarn.awk
- buildwarn.csh
- callg.c
- callintogtmxfer.c
- callintogtmxfer.h
- ccp_cluster_lock_wake.c
- ccp_fid_msg.c
- ccp_sendmsg.c
- ccp_userwait.c
- ce_init.c
- ce_substitute.c
- cenable.c
- cenable.h
- ch_cond_core.c
- ch_overrun.c
- change_fhead_timer.c
- check_encrypt_support.sh
- check_utf8_support.csh
- ci_ret_code.c
- clear_cache_array.c
- clear_cache_array.h
- cli.c
- cli.h
- cli_disallow.c
- cli_disallow.h
- cli_lex.c
- cli_parse.c
- cli_parse.h
- cmidefsp.h
- cmistub.c
- cms_load.csh
- cms_load_pre_v42.csh
- comimage.csh
- comlist.csh
- comp_lits.c
- comque.csh
- condstk_expand.c
- configure.gtc
- continue_handler.c
- continue_handler.h
- continue_proc.c
- coverage_cc.sh
- crit_wake.c
- ctrap_set.c
- ctrlc_handler.c
- ctrlc_handler.h
- ctrlc_set.c
- custom_errors_sample.txt
- cvtprot.c
- cvttime.c
- daemon_crit.c
- db_ipcs_reset.c
- db_ipcs_reset.h
- db_read.h
- db_snapshot.h
- db_write.h
- db_write_eof_block.c
- db_write_eof_block.h
- dbfilop.c
- dbinit_ch.c
- dec_err.c
- decomment.m
- deferred_signal_handler.c
- deferred_signal_handler.h
- dircompare.m.txt
- disk_block_available.c
- disk_block_available.h
- dm_audit_log.c
- dm_audit_log.h
- dm_read.c
- do_semop.c
- do_semop.h
- do_shmat.c
- do_shmat.h
- do_verify.c
- do_xform.c
- dollarh.c
- dollarh.h
- dpgbldir_sysops.c
- dpgbldir_sysops.h
- dse.c
- dse_cmd.c
- dse_cmd_disallow.c
- dse_cmd_disallow.h
- dse_ctrlc_handler.c
- dse_help.c
- dse_open.c
- dse_puttime.c
- dse_remove.c
- dsk_read.c
- dsk_write_nocache.c
- eintr_wrapper_semop.h
- encrypt_sign_db_key.sh
- err_init.c
- error_return.c
- errorsp.h
- exi_ch.c
- extract_signal_info.c
- exttab_parse.c
- exttime.c
- f_char.c
- f_piece.c
- fake_enospc.c
- fake_enospc.h
- fgn_getinfo.c
- fgncalsp.h
- file_head_read.c
- file_head_write.c
- file_input.c
- file_input.h
- filestruct.h
- fix_pages.c
- forced_exit_err_display.c
- forced_exit_err_display.h
- fork_init.h
- ftok_sem_get_common.c
- ftok_sem_incrcnt.c
- ftok_sem_incrcnt.h
- ftok_sems.c
- ftok_sems.h
- gbldirnam.h
- gcall.h
- gdedefaults.gtc
- gdeget.m
- gdeput.m
- gdeverif.m
- gds_file_size.c
- gds_rundown.c
- gds_rundown_ch.c
- gds_rundown_err_cleanup.c
- gds_rundown_err_cleanup.h
- gdsfheadsp.h
- gdsfilext.c
- gdsfilext_nojnl.c
- gdsfilext_nojnl.h
- gen_gtm_threadgbl_deftypes.csh
- gen_keypair.sh
- gen_sym_hash.sh
- gen_sym_key.sh
- gen_ttt.csh
- gen_vms_ttt.csh
- gen_xfer_desc.cmake
- gen_xfer_desc.csh
- generate_help.csh
- generic_signal_handler.c
- generic_signal_handler.h
- gengtmdeftypes.csh
- genpat.c
- get_command_line.c
- get_full_path.c
- get_page_size.c
- get_src_line.c
- get_ztimeout.c
- getcaps.c
- getcaps.h
- geteditor.c
- geteditor.h
- getjobnum.c
- getmaxfds.c
- getmaxfds.h
- getstorage.c
- getzmode.c
- getzprocess.c
- go_load.c
- golevel.c
- goq_load.c
- gpgagent.tab.in
- grab_crit.c
- grab_crit_encr_cycle_sync.c
- grab_crit_immediate.c
- grab_latch.c
- grab_lock.c
- gse.mpt
- gt_ar.csh
- gt_as.csh
- gt_cc.csh
- gt_timer.h
- gt_timers.c
- gt_timers_add_safe_hndlrs.c
- gt_timers_add_safe_hndlrs.h
- gtcmstub.c
- gtcmtrstub.c
- gtm.c
- gtm.gtc
- gtm_aio.h
- gtm_asm_establish.c
- gtm_bintim.c
- gtm_c_stack_trace.c
- gtm_c_stack_trace_semop.c
- gtm_c_stack_trace_semop.h
- gtm_compare_dir.csh
- gtm_compile.c
- gtm_compile.h
- gtm_confstr.c
- gtm_conv.c
- gtm_conv.h
- gtm_conv_init.c
- gtm_cshrc.csh
- gtm_dbjnl_dupfd_check.c
- gtm_dbjnl_dupfd_check.h
- gtm_descript.h
- gtm_dump.c
- gtm_dump_core.c
- gtm_env.csh
- gtm_env_init_sp.c
- gtm_env_translate.c
- gtm_exit_handler.c
- gtm_exit_handler.h
- gtm_fd_trace.c
- gtm_file_remove.c
- gtm_file_stat.c
- gtm_filter_command.c
- gtm_filter_command.h
- gtm_fork_n_core.c
- gtm_ftok.c
- gtm_getmsg.c
- gtm_getpwuid.c
- gtm_icu.c
- gtm_icu.h
- gtm_icu_api.h
- gtm_image_exit.c
- gtm_init_env.c
- gtm_ipc.h
- gtm_is_main_thread.c
- gtm_isanlp.c
- gtm_isanlp.h
- gtm_logicals.h
- gtm_main.c
- gtm_main.h
- gtm_multi_proc.c
- gtm_multi_proc.h
- gtm_multi_thread.c
- gtm_multi_thread.h
- gtm_permissions.c
- gtm_permissions.h
- gtm_pipe.c
- gtm_pipe.h
- gtm_poll.h
- gtm_post_startup_check_init.c
- gtm_post_startup_check_init.h
- gtm_pthread.h
- gtm_pthread_init_key.c
- gtm_pthread_init_key.h
- gtm_putmsg.c
- gtm_putmsg_list.c
- gtm_rel_quant.h
- gtm_rename.c
- gtm_repl_multi_inst.h
- gtm_sem.h
- gtm_semaphore.h
- gtm_semutils.c
- gtm_semutils.h
- gtm_signal.h
- gtm_startup.c
- gtm_startup.h
- gtm_startup_chk.c
- gtm_startup_chk.h
- gtm_statvfs.h
- gtm_stdio.c
- gtm_stdio.h
- gtm_syslog.h
- gtm_system.c
- gtm_term.h
- gtm_termios.h
- gtm_test_install.csh
- gtm_test_install.txt
- gtm_text_alloc.c
- gtm_threadgbl_asm_access.txt
- gtm_threadgbl_deftypes_asm.si
- gtm_times.h
- gtm_tls.c
- gtm_tls.h
- gtm_tls_funclist.h
- gtm_tls_impl.c
- gtm_tls_impl.h
- gtm_tls_interface.h
- gtm_tls_loadlibrary.c
- gtm_tparm.c
- gtm_tparm.h
- gtm_tputs.c
- gtm_tputs.h
- gtm_trigger.c
- gtm_trigger.h
- gtm_trigger_trc.h
- gtm_ulimit.h
- gtm_unique_file_util.c
- gtm_unlink_all.c
- gtm_unlink_all.h
- gtm_utf8.c
- gtm_utf8.h
- gtm_version_dirname.csh
- gtm_version_dirname.sed
- gtm_wake.c
- gtm_zlib.c
- gtm_zlib.h
- gtmbase.gtc
- gtmci.c
- gtmci.h
- gtmci_ch.c
- gtmci_isv.c
- gtmci_signals.c
- gtmci_signals.h
- gtmcrypt.h
- gtmcrypt_dbk_ref.c
- gtmcrypt_dbk_ref.h
- gtmcrypt_entry.c
- gtmcrypt_funclist.h
- gtmcrypt_interface.h
- gtmcrypt_pk_ref.c
- gtmcrypt_pk_ref.h
- gtmcrypt_ref.c
- gtmcrypt_ref.h
- gtmcrypt_sym_ref.c
- gtmcrypt_sym_ref.h
- gtmcrypt_util.c
- gtmcrypt_util.h
- gtmcshrc.gtc
- gtmdbgflags.h
- gtmdef.csh
- gtmdefinedtypestodb.m
- gtmexcludetypelist.txt
- gtmexe_symbols.exp
- gtmgblstat.c
- gtmgblstat.h
- gtmgblstat.xc
- gtmhelp.m
- gtmhlpld.m
- gtminstall.sh
- gtmio.h
- gtmio_ch.c
- gtmlink.c
- gtmlink.h
- gtmpcat_sh.txt
- gtmprofile.gtc
- gtmprofile_preV54000.gtc
- gtmrecv.c
- gtmrecv.h
- gtmrecv_end.c
- gtmrecv_fetchresync.c
- gtmrecv_poll_actions.c
- gtmrecv_process.c
- gtmrecv_shutdown.c
- gtmrecv_stopfilter.c
- gtmsecshr.c
- gtmsecshr.h
- gtmsecshr_sock_cleanup.c
- gtmsecshr_sock_init.c
- gtmsecshr_wrapper.c
- gtmshr_symbols.exp
- gtmsiginfo.h
- gtmsource.c
- gtmsource.h
- gtmsource_changelog.c
- gtmsource_checkforbacklog.c
- gtmsource_checkhealth.c
- gtmsource_end.c
- gtmsource_flush_fh.c
- gtmsource_freeze.c
- gtmsource_get_opt.c
- gtmsource_heartbeat.c
- gtmsource_inline.h
- gtmsource_jnl_release_timer.c
- gtmsource_jnlpool.c
- gtmsource_losttncomplete.c
- gtmsource_mode_change.c
- gtmsource_needrestart.c
- gtmsource_onln_rlbk_clnup.c
- gtmsource_process.c
- gtmsource_process_ops.c
- gtmsource_readfiles.c
- gtmsource_readpool.c
- gtmsource_rootprimary_init.c
- gtmsource_seqno_init.c
- gtmsource_showbacklog.c
- gtmsource_shutdown.c
- gtmsource_srv_latch.c
- gtmsource_srv_latch.h
- gtmsource_statslog.c
- gtmsource_stopfilter.c
- gtmsrc.csh
- gtmstart.gtc
- gtmstop.gtc
- gtmthreadgblasm.m
- gtmxc_types.h
- gv_trig_cmd_table.h
- gv_trigger.c
- gv_trigger.h
- gv_trigger_protos.h
- gvcmx_canremlk_stub.c
- gvcmx_reqremlk_stub.c
- gvcmx_resremlk_stub.c
- gvcmx_susremlk_stub.c
- gvcmy_open.h
- gvcmz_bunch_stub.c
- gvcmz_error_stub.c
- gvcmz_neterr_stub.c
- gvcmz_zflush_stub.c
- gvcst_init_sysops.c
- gvcst_spr_data.c
- gvcst_spr_kill.c
- gvcst_spr_order.c
- gvcst_spr_query.c
- gvcst_spr_queryget.c
- gvcst_spr_zprevious.c
- gvusr.c
- hex2utf.mpt
- hugetlbfs_overrides.c
- hugetlbfs_overrides.h
- import_and_sign_key.sh
- incr_link.c
- incr_link.h
- init_gtm.c
- install_debug_symbols_sh.txt
- install_gtmpcat_sh.txt
- interlock.h
- invocation_mode.h
- io_get_fgn_driver.c
- io_init_name.c
- io_is_rm.c
- io_is_sn.c
- io_open_try.c
- io_type.c
- iob.h
- iob_close.c
- iob_flush.c
- iob_open_rd.c
- iob_open_wt.c
- iob_read.c
- iob_write.c
- ioff_open.c
- iopi_iocontrol.c
- iopi_open.c
- iorm_close.c
- iorm_flush.c
- iorm_get.c
- iorm_open.c
- iorm_rdone.c
- iorm_read.c
- iorm_readfl.c
- iorm_use.c
- iorm_write.c
- iorm_wteol.c
- iormdef.h
- iosize.h
- iosocket_pass_local.c
- iosocket_tls.c
- iosp.h
- iott_close.c
- iott_edit.c
- iott_edit.h
- iott_flush.c
- iott_flush_time.h
- iott_iocontrol.c
- iott_open.c
- iott_rdone.c
- iott_read.c
- iott_readfl.c
- iott_use.c
- iott_write.c
- iottdef.h
- iottdefsp.h
- ious_iocontrol.c
- ious_open.c
- ious_rdone.c
- ious_read.c
- ious_readfl.c
- ious_write.c
- ious_wtone.c
- ipcrmid.c
- ipcrmid.h
- is_file_identical.c
- is_fstype_nfs.c
- is_fstype_nfs.h
- is_icu_symbol_rename.csh
- is_proc_alive.c
- is_raw_dev.c
- is_raw_dev.h
- jnl_file_close_timer.c
- jnl_file_close_timer.h
- jnl_file_extend.c
- jnl_file_open.c
- jnl_fsync.c
- jnl_output_sp.c
- jnl_prc_vector.c
- jnlext_merge_sort_prepare.c
- jnlext_write.c
- jnlpool_init.c
- jnlsp.h
- jobchild_init.c
- jobchild_init.h
- joberr.h
- jobexam_signal_handler.c
- jobexam_signal_handler.h
- jobsp.h
- kitstart.csh
- laberror.c
- lib_list_ar.sed
- lib_list_lint.sed
- libdse.list
- liblke.list
- libmupip.list
- libstub.list
- lintgtm.csh
- lintimage.csh
- linuxi686_badd.txt
- list_file.c
- lke.c
- lke_cmd.c
- lke_cmd_disallow.c
- lke_cmd_disallow.h
- lke_ctrlc_handler.c
- lke_fileio.c
- lke_fileio.h
- lke_getansw.c
- lke_help.c
- load.h
- lockdefs.h
- lowerc_cp.sh
- lref_parse.c
- m_zrupdate.c
- m_ztrigger.c
- make_cimode.c
- make_dmode.c
- make_mode.c
- make_mode.h
- Makefile.mk
- map_sym.c
- maskpass.c
- mdefsa.h
- mdefsp.h
- mem_access.c
- memprot.c
- memprot.h
- mkutf8dir.csh
- mmrhash.c
- mmrhash.h
- msg.h
- mu_all_version_standalone.c
- mu_all_version_standalone.h
- mu_cre_file.c
- mu_cre_structs.c
- mu_cre_structs.h
- mu_decrypt.c
- mu_decrypt.h
- mu_extract.c
- mu_getkey.c
- mu_getkey.h
- mu_getlst.c
- mu_gvis.c
- mu_int_ch.c
- mu_op_open.c
- mu_op_open.h
- mu_outofband_setup.c
- mu_replpool_grab_sem.c
- mu_replpool_release_sem.c
- mu_rndwn_all.c
- mu_rndwn_all.h
- mu_rndwn_file.c
- mu_rndwn_file.h
- mu_rndwn_repl_instance.c
- mu_rndwn_repl_instance.h
- mu_rndwn_replpool.c
- mu_rndwn_replpool.h
- mu_rndwn_rlnkctl.c
- mu_rndwn_rlnkctl.h
- mu_signal_process.c
- mu_size_arsample.c
- mu_size_impsample.c
- mu_size_scan.c
- mu_swap_root.c
- mu_term_setup.c
- mu_term_setup.h
- mu_trig_trgfile.c
- mu_trig_trgfile.h
- mu_truncate.c
- mu_truncate.h
- mu_upgrd_sig_init.h
- mubexpfilnam.c
- mubfilcpy.c
- mubgetfil.c
- mubinccpy.c
- mucblkini.c
- mumps.cmake
- mumps_clitab.c
- mup_bak_sys.c
- mupip.c
- mupip_cmd.c
- mupip_cmd_disallow.c
- mupip_cmd_disallow.h
- mupip_crypt.c
- mupip_crypt.h
- mupip_ctrl.c
- mupip_ctrl.h
- mupip_cvtgbl.c
- mupip_cvtpgm.c
- mupip_dump_fhead.c
- mupip_dump_fhead.h
- mupip_endiancvt.c
- mupip_endiancvt.h
- mupip_exit.c
- mupip_exit_handler.c
- mupip_ftok.c
- mupip_ftok.h
- mupip_hash.c
- mupip_hash.h
- mupip_help.c
- mupip_load_reg_list.c
- mupip_load_reg_list.h
- mupip_load_triggerfile.h
- mupip_quit.c
- mupip_rctldump.c
- mupip_rctldump.h
- mupip_reorg_encrypt.c
- mupip_reorg_encrypt.h
- mupip_restore.c
- mupip_rundown.c
- mupip_sems.c
- mupip_sems.h
- mupip_set_file.c
- mupip_set_jnlfile.c
- mupip_size.c
- mupip_size.h
- mupip_trigger.c
- mupip_trigger.h
- mupip_upgrade_standalone.c
- mupip_upgrade_standalone.h
- muprecsp.h
- mur_cre_file_extfmt.c
- mur_read_file_sp.c
- murgetlst.c
- mutex.c
- mutex_sock_cleanup.c
- mutex_sock_init.c
- mutex_wake_proc.c
- mutexsp.h
- obj_code.c
- obj_file.c
- obj_filesp.h
- obj_fileu.c
- offset.awk
- offset.csh
- ojchildioclean.c
- ojchildioset.c
- ojchildparms.c
- ojchkfs.c
- ojparams.c
- ojstartchild.c
- op_currhd.c
- op_fgnlookup.c
- op_fnextract.c
- op_fnextract.h
- op_fnfgncal.c
- op_fngetdvi.c
- op_fngetjpi.c
- op_fngetlki.c
- op_fngetsyi.c
- op_fnp1.c
- op_fnpiece.c
- op_fnpopulation.c
- op_fnrandom.c
- op_fnzcall.c
- op_fnzconvert.c
- op_fnzfile.c
- op_fnzlkid.c
- op_fnzparse.c
- op_fnzpeek.c
- op_fnzpid.c
- op_fnzpriv.c
- op_fnzsearch.c
- op_fnzsetprv.c
- op_fnzsyslog.c
- op_fnztrnlnm.c
- op_job.c
- op_setextract.c
- op_setp1.c
- op_setpiece.c
- op_zattach.c
- op_zedit.c
- op_zhelp_xfr.c
- op_zhorolog.c
- op_zlink.c
- op_zmess.c
- op_zrupdate.c
- op_ztrigger.c
- op_zut.c
- outc.c
- parse_file.c
- parse_file.h
- peekbyname.mpt
- pinentry-gtm.sh
- pinentry.m
- pipeint_stats.c
- pipeint_stats.h
- probecrit_rec.h
- proc_wait_stat.c
- proc_wait_stat.h
- process_reorg_encrypt_restart.c
- process_reorg_encrypt_restart.h
- put_cdidx.c
- random.c
- random.h
- rc.h
- rc_cpt.h
- rc_cpt_ops.c
- recover_truncate.c
- recover_truncate.h
- recvpool_init.c
- reg_cmcheck.c
- rel_crit.c
- rel_latch.c
- rel_lock.c
- rel_quant.c
- relinkctl.c
- relinkctl.h
- remove_rms.c
- repl_inst_create.c
- repl_inst_dump.c
- repl_inst_dump.h
- repl_inst_edit.c
- repl_inst_ftok_counter_halted.c
- repl_inst_ftok_counter_halted.h
- repl_instance.c
- repl_instance.h
- repl_ipc_cleanup.c
- repl_log.c
- repl_log_init.c
- repl_logfileinfo_get.c
- repl_msg.h
- repl_sem.c
- repl_sem.h
- repl_sem_sp.h
- repl_sp.h
- resetterm.c
- rmv_mul_slsh.c
- rmv_mul_slsh.h
- rtnhdr.h
- rtnobj.c
- rtnobj.h
- rts_error.c
- runall.csh
- runall_cc_many.csh
- runall_cc_one.csh
- same_device_check.c
- scantypedefs.m
- secshr_client.c
- secshr_client.h
- send_msg.c
- set_jnl_file_close.c
- set_library_path.csh
- set_num_additional_processors.c
- set_zstatus.c
- setactive.csh
- setterm.c
- sgtm_putmsg.c
- show_install_config.sh
- sig_init.c
- sig_init.h
- simple_timeout_timer.c
- sleep.c
- sleep.h
- source_file.c
- ss_anal_shdw_file.c
- ss_context_mgr.c
- ss_get_block.c
- ss_initiate.c
- ss_lock_facility.c
- ss_lock_facility.h
- ss_read_block.c
- ss_release.c
- ss_shdw_mgr.c
- ss_write_block.c
- std_dev_outbndset.c
- stop_image.c
- stop_image_ch.c
- str_match.c
- str_match.h
- stripmine.awk
- suspend.c
- suspsigs_handler.c
- suspsigs_handler.h
- t_recycled2free.c
- t_recycled2free.h
- tab_probecrit_rec.h
- term_setup.c
- timersp.h
- trans_log_name.c
- trigger.h
- trigger_cmd.c
- trigger_compare.c
- trigger_compare_protos.h
- trigger_delete.c
- trigger_delete_protos.h
- trigger_fill_xecute_buffer.c
- trigger_fill_xecute_buffer.h
- trigger_gbl_fill_xecute_buffer.c
- trigger_gbl_fill_xecute_buffer.h
- trigger_incr_cycle.c
- trigger_incr_cycle.h
- trigger_locate_andor_load.c
- trigger_parse.c
- trigger_parse_protos.h
- trigger_read_andor_locate.h
- trigger_scan_string.c
- trigger_scan_string.h
- trigger_select.c
- trigger_select_protos.h
- trigger_source_read_andor_verify.c
- trigger_subs_def.h
- trigger_tpwrap_ch.c
- trigger_trgfile.c
- trigger_trgfile_protos.h
- trigger_update.c
- trigger_update_protos.h
- trigger_upgrade.c
- trigger_upgrade_protos.h
- trigger_user_name.c
- trigger_user_name.h
- trmdef.h
- ttt.txt
- upd_log_init.c
- urx_remove.c
- utf2hex.mpt
- utfcgr.c
- utfcgr.h
- utfcgr_trc.h
- util_exit_handler.c
- util_help.c
- util_help.h
- util_in_open.c
- util_input.c
- util_out_print_gtmio.c
- util_out_print_vaparm.h
- util_output.c
- util_output_cm.c
- util_spawn.c
- v15_filestruct.h
- versions.csh
- wait_for_disk_space.c
- wait_for_disk_space.h
- warn_db_sz.c
- warn_db_sz.h
- wcs_clean_dbsync.c
- wcs_clean_dbsync.h
- wcs_clean_dbsync_timer.c
- wcs_flu.c
- wcs_get_space.c
- wcs_write_in_progress_wait.c
- wcs_write_in_progress_wait.h
- wcs_wt.h
- wcs_wt_restart.c
- wcs_wterror.c
- wcs_wtfini.c
- wcs_wtfini_nocrit.c
- wcs_wtstart.c
- wcs_wtstart_fini.c
- xtrgtmtypes.awk
- ygblstat.mpt
- zbreaksp.h
- zcall_package.c
- zcall_package.h
- zhist.c
- zl_cmd_qlf.c
- zlmov_lnames.c
- zro_gettok.c
- zro_load.c
- zro_search.c
- zro_shlibs.c
- zro_shlibs.h
- zroutinessp.h
- zshow_devices.c
- zshow_rctldump.c
- zshow_zcalls.c
- ztimeout_routines.c
- ztimeout_routines.h
error_return.c @HEAD — raw · history · blame
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 | /**************************************************************** * * * Copyright 2010, 2011 Fidelity Information Services, Inc * * * * This source code contains the intellectual property * * of its copyright holder(s), and is made available * * under a license. If you do not know the terms of * * the license, please stop and do not read further. * * * ****************************************************************/ #include "mdef.h" #include "gtm_stdlib.h" #include "gtm_stdio.h" #include "error.h" #include "error_trap.h" #include "dollar_zlevel.h" #include <rtnhdr.h> #include "stack_frame.h" #include "golevel.h" #include "io.h" #include "send_msg.h" #define BASE_FRAME(fp) ((fp->type & SFT_DM) || (fp->flags & SFF_CI)) GBLREF stack_frame *frame_pointer; GBLREF unsigned short proc_act_type; GBLREF dollar_ecode_type dollar_ecode; /* structure containing $ECODE related information */ GBLREF int mumps_status; GBLREF stack_frame *error_frame; GBLREF io_desc *gtm_err_dev; GBLREF mval dollar_zstatus; error_def(ERR_JIUNHNDINT); error_def(ERR_REPEATERROR); void error_return(void) { int parent_level, unwcnt; stack_frame *curframe, *cur_counted_frame, *parent_counted_frame; boolean_t rethrow_needed = FALSE, dev_act_err, transcendental, zintrframe; DBGEHND((stderr, "error_return: Entered\n")); assert((frame_pointer->flags & SFF_ETRAP_ERR) || (error_frame == frame_pointer)); unwcnt = 0; /* Determine counted frame at the current $zlevel */ for (curframe = frame_pointer; (NULL != curframe) && !(curframe->type & SFT_COUNT) && !BASE_FRAME(curframe); curframe = curframe->old_frame_pointer) unwcnt++; /* (don't need to worry about trigger frames here as they are counted and stop the loop) */ DBGEHND((stderr, "error_return: cur_counted_frame found with unwind count %d\n", unwcnt)); cur_counted_frame = curframe; NULLIFY_ERROR_FRAME; /* reset error_frame */ dev_act_err = ((NULL != cur_counted_frame) && (cur_counted_frame->flags & SFF_ETRAP_ERR) && (cur_counted_frame->flags & SFF_DEV_ACT_ERR)); zintrframe = (SFT_ZINTR & curframe->type); if (dev_act_err || (0 != dollar_ecode.index)) rethrow_needed = TRUE; /* If the top level error is a device exception error, we do not want to unwind upto the parent frame but instead * rethrow the error at the current level and use $ztrap/$etrap exception handling. In case even that fails, * we will come again to error_return at which point, we unwind to the parent frame. */ if (!dev_act_err && NULL != curframe) { /* We need to unwind this frame to either rethrow error or MUM_TSTART. If this lands us on a trigger frame, * whether that is ok or not depends on whether we will end up rethrowing the error or doing a MUM_TSTART. If we * are rethrowing the error, we must not land on a trigger frame but must unroll it too. In the MUM_TSTART case, * we are resuming at that point via a simulated QUIT so this is ok. */ do { curframe = curframe->old_frame_pointer; unwcnt++; # ifdef GTM_TRIGGER if (rethrow_needed && (SFT_TRIGR & curframe->type)) { /* With a rethrow, we cannot use a trigger base-frame - back up one frame prior to the frame */ curframe = *(stack_frame **)(curframe + 1); unwcnt++; } # endif transcendental = ((SFT_ZTRAP & curframe->type) || (SFT_DEV_ACT & curframe->type)); } while (transcendental && (NULL != curframe)); } /* Check a couple of conditions that could turn off rethrow_needed: * * 1. If we ended up on a callin frame which needs to just return to the C caller (error handling abandonded but the error * code is returned to the caller). * 2. If we ended up on a direct mode frame - errors just get printed here. * 3. If we are unwinding a ZINTERRUPT frame (error handling abandoned - send message to operator log). */ if (rethrow_needed && BASE_FRAME(curframe)) { /* If the computed frame is a base frame for call-ins, we cannot do rethrow and must use MUM_TSTART to return to * the call-in invocation code (gtm_ci()). */ rethrow_needed = FALSE; DBGEHND((stderr, "error_return: rethrow_needed set to FALSE due to call-in base frame")); } if (rethrow_needed && zintrframe) { /* If we are unwinding a ZINTERRUPT frame, error processing stops here but send a message to the operator log * to notify users of the un-handled error. */ rethrow_needed = FALSE; DBGEHND((stderr, "error_return: rethrow_needed set to FALSE due to unwinding errant zinterrupt frame")); send_msg(VARLSTCNT(3) ERR_JIUNHNDINT, 2, dollar_zstatus.str.len, dollar_zstatus.str.addr); } parent_counted_frame = curframe; /* Not parent frame for device errors -- still at error counted frame */ /* Exit if we are at the bottom of the stack */ parent_level = dollar_zlevel() - 1; if ((NULL == parent_counted_frame) || (1 > parent_level)) { EXIT(dollar_ecode.error_last_ecode); } assert(0 < parent_level); DBGEHND((stderr, "error_return: unwcnt: %d rethrow_needed: %d dev_act_err: %d\n", unwcnt, rethrow_needed, dev_act_err)); GOFRAMES(unwcnt, FALSE, FALSE); assert(parent_counted_frame == frame_pointer); assert(!proc_act_type); if (rethrow_needed) { rts_error(VARLSTCNT(1) ERR_REPEATERROR); assert(FALSE); /* the previous rts_error() should not return */ } /* zero the error device just to be safe */ assert(NULL == gtm_err_dev); gtm_err_dev = NULL; if (!zintrframe) { if (parent_counted_frame->flags & SFF_CI) /* Unhandled error in call-in: return to gtm_ci */ mumps_status = dollar_ecode.error_last_ecode; MUM_TSTART; } return; /* Continue in caller (likely getframe macro) */ } |