⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 signal.c

📁 spice中支持多层次元件模型仿真的可单独运行的插件源码
💻 C
字号:
/**********Copyright 1990 Regents of the University of California.  All rights reserved.Author: 1985 Wayne A. Christopher, U. C. Berkeley CAD Group**********//* * The signal routines for spice 3 and nutmeg. */#include "spice.h"#include "ifsim.h"#include "iferrmsg.h"#include "cpdefs.h"#include "ftedefs.h"#include "ftedev.h"#include <setjmp.h>#ifdef HAS_UNIX_SIGS#  include <signal.h>#endif#include "suffix.h"#ifdef HAS_UNIX_SIGS#  ifdef HAS_LONGJUMPextern jmp_buf jbuf;/* The (void) signal handlers... SIGINT is the only one that gets reset (by * cshpar) so it is global. They are ifdef BSD because of the sigmask * stuff in sigstop. We set the interrupt flag and return if ft_setflag * is true. */SIGNAL_TYPEft_sigintr(){    gr_clean();    (void) signal( SIGINT, (SIGNAL_FUNCTION) ft_sigintr );    if (ft_intrpt)        fprintf(cp_err, "Interrupt (ouch)\n");    else {        fprintf(cp_err, "Interrupt\n");        ft_intrpt = true;    }    if (ft_setflag)        return;/* To restore screen after an interrupt to a plot for instance */#    ifdef HAS_MFB    if(dispdev && !strcmp( dispdev->name, "MFB" ))	MFBHalt();#    endif    cp_interactive = true;    cp_resetcontrol();    longjmp(jbuf, 1);}/* ARGSUSED */SIGNAL_TYPEsigfloat(sig, code){    gr_clean();    fperror("Error", code);    rewind(cp_out);    (void) signal( SIGFPE, (SIGNAL_FUNCTION) sigfloat );    longjmp(jbuf, 1);}/* This should give a new prompt if cshpar is waiting for input.  */#    ifdef SIGTSTPSIGNAL_TYPEsigstop( ){    gr_clean();    cp_ccon(false);    (void) signal(SIGTSTP, SIG_DFL);    (void) kill(getpid(), SIGTSTP); /* This should stop us */    return;}SIGNAL_TYPEsigcont( ){    (void) signal(SIGTSTP, (SIGNAL_FUNCTION) sigstop);    if (cp_cwait)        longjmp(jbuf, 1);}#    endif/* Special (void) signal handlers. */SIGNAL_TYPEsigill(){    fprintf(cp_err, "\ninternal error -- illegal instruction\n");    fatal();}SIGNAL_TYPEsigbus(){    fprintf(cp_err, "\ninternal error -- bus error\n");    fatal();}SIGNAL_TYPEsigsegv(){    fprintf(cp_err, "\ninternal error -- segmentation violation\n");    fatal();}SIGNAL_TYPEsig_sys(){    fprintf(cp_err,         "\ninternal error -- bad argument to system call\n");    fatal();}#  endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -