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

📄 signals.c

📁 这个是LINUX下的GDB调度工具的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
  if (hostsig == SIGLOST)    return TARGET_SIGNAL_LOST;#endif#if defined (SIGWAITING)  if (hostsig == SIGWAITING)    return TARGET_SIGNAL_WAITING;#endif#if defined (SIGCANCEL)  if (hostsig == SIGCANCEL)    return TARGET_SIGNAL_CANCEL;#endif#if defined (SIGLWP)  if (hostsig == SIGLWP)    return TARGET_SIGNAL_LWP;#endif#if defined (SIGDANGER)  if (hostsig == SIGDANGER)    return TARGET_SIGNAL_DANGER;#endif#if defined (SIGGRANT)  if (hostsig == SIGGRANT)    return TARGET_SIGNAL_GRANT;#endif#if defined (SIGRETRACT)  if (hostsig == SIGRETRACT)    return TARGET_SIGNAL_RETRACT;#endif#if defined (SIGMSG)  if (hostsig == SIGMSG)    return TARGET_SIGNAL_MSG;#endif#if defined (SIGSOUND)  if (hostsig == SIGSOUND)    return TARGET_SIGNAL_SOUND;#endif#if defined (SIGSAK)  if (hostsig == SIGSAK)    return TARGET_SIGNAL_SAK;#endif#if defined (SIGPRIO)  if (hostsig == SIGPRIO)    return TARGET_SIGNAL_PRIO;#endif  /* Mach exceptions.  Assumes that the values for EXC_ are positive! */#if defined (EXC_BAD_ACCESS) && defined (_NSIG)  if (hostsig == _NSIG + EXC_BAD_ACCESS)    return TARGET_EXC_BAD_ACCESS;#endif#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)  if (hostsig == _NSIG + EXC_BAD_INSTRUCTION)    return TARGET_EXC_BAD_INSTRUCTION;#endif#if defined (EXC_ARITHMETIC) && defined (_NSIG)  if (hostsig == _NSIG + EXC_ARITHMETIC)    return TARGET_EXC_ARITHMETIC;#endif#if defined (EXC_EMULATION) && defined (_NSIG)  if (hostsig == _NSIG + EXC_EMULATION)    return TARGET_EXC_EMULATION;#endif#if defined (EXC_SOFTWARE) && defined (_NSIG)  if (hostsig == _NSIG + EXC_SOFTWARE)    return TARGET_EXC_SOFTWARE;#endif#if defined (EXC_BREAKPOINT) && defined (_NSIG)  if (hostsig == _NSIG + EXC_BREAKPOINT)    return TARGET_EXC_BREAKPOINT;#endif#if defined (SIGINFO)  if (hostsig == SIGINFO)    return TARGET_SIGNAL_INFO;#endif#if defined (REALTIME_LO)  if (hostsig >= REALTIME_LO && hostsig < REALTIME_HI)    {      /* This block of TARGET_SIGNAL_REALTIME value is in order.  */      if (33 <= hostsig && hostsig <= 63)	return (enum target_signal)	  (hostsig - 33 + (int) TARGET_SIGNAL_REALTIME_33);      else if (hostsig == 32)	return TARGET_SIGNAL_REALTIME_32;      else if (64 <= hostsig && hostsig <= 127)	return (enum target_signal)	  (hostsig - 64 + (int) TARGET_SIGNAL_REALTIME_64);      else	error ("GDB bug: target.c (target_signal_from_host): unrecognized real-time signal");    }#endif  return TARGET_SIGNAL_UNKNOWN;}/* Convert a OURSIG (an enum target_signal) to the form used by the   target operating system (refered to as the ``host'') or zero if the   equivalent host signal is not available.  Set/clear OURSIG_OK   accordingly. */static intdo_target_signal_to_host (enum target_signal oursig,			  int *oursig_ok){  int retsig;  *oursig_ok = 1;  switch (oursig)    {    case TARGET_SIGNAL_0:      return 0;#if defined (SIGHUP)    case TARGET_SIGNAL_HUP:      return SIGHUP;#endif#if defined (SIGINT)    case TARGET_SIGNAL_INT:      return SIGINT;#endif#if defined (SIGQUIT)    case TARGET_SIGNAL_QUIT:      return SIGQUIT;#endif#if defined (SIGILL)    case TARGET_SIGNAL_ILL:      return SIGILL;#endif#if defined (SIGTRAP)    case TARGET_SIGNAL_TRAP:      return SIGTRAP;#endif#if defined (SIGABRT)    case TARGET_SIGNAL_ABRT:      return SIGABRT;#endif#if defined (SIGEMT)    case TARGET_SIGNAL_EMT:      return SIGEMT;#endif#if defined (SIGFPE)    case TARGET_SIGNAL_FPE:      return SIGFPE;#endif#if defined (SIGKILL)    case TARGET_SIGNAL_KILL:      return SIGKILL;#endif#if defined (SIGBUS)    case TARGET_SIGNAL_BUS:      return SIGBUS;#endif#if defined (SIGSEGV)    case TARGET_SIGNAL_SEGV:      return SIGSEGV;#endif#if defined (SIGSYS)    case TARGET_SIGNAL_SYS:      return SIGSYS;#endif#if defined (SIGPIPE)    case TARGET_SIGNAL_PIPE:      return SIGPIPE;#endif#if defined (SIGALRM)    case TARGET_SIGNAL_ALRM:      return SIGALRM;#endif#if defined (SIGTERM)    case TARGET_SIGNAL_TERM:      return SIGTERM;#endif#if defined (SIGUSR1)    case TARGET_SIGNAL_USR1:      return SIGUSR1;#endif#if defined (SIGUSR2)    case TARGET_SIGNAL_USR2:      return SIGUSR2;#endif#if defined (SIGCHLD) || defined (SIGCLD)    case TARGET_SIGNAL_CHLD:#if defined (SIGCHLD)      return SIGCHLD;#else      return SIGCLD;#endif#endif /* SIGCLD or SIGCHLD */#if defined (SIGPWR)    case TARGET_SIGNAL_PWR:      return SIGPWR;#endif#if defined (SIGWINCH)    case TARGET_SIGNAL_WINCH:      return SIGWINCH;#endif#if defined (SIGURG)    case TARGET_SIGNAL_URG:      return SIGURG;#endif#if defined (SIGIO)    case TARGET_SIGNAL_IO:      return SIGIO;#endif#if defined (SIGPOLL)    case TARGET_SIGNAL_POLL:      return SIGPOLL;#endif#if defined (SIGSTOP)    case TARGET_SIGNAL_STOP:      return SIGSTOP;#endif#if defined (SIGTSTP)    case TARGET_SIGNAL_TSTP:      return SIGTSTP;#endif#if defined (SIGCONT)    case TARGET_SIGNAL_CONT:      return SIGCONT;#endif#if defined (SIGTTIN)    case TARGET_SIGNAL_TTIN:      return SIGTTIN;#endif#if defined (SIGTTOU)    case TARGET_SIGNAL_TTOU:      return SIGTTOU;#endif#if defined (SIGVTALRM)    case TARGET_SIGNAL_VTALRM:      return SIGVTALRM;#endif#if defined (SIGPROF)    case TARGET_SIGNAL_PROF:      return SIGPROF;#endif#if defined (SIGXCPU)    case TARGET_SIGNAL_XCPU:      return SIGXCPU;#endif#if defined (SIGXFSZ)    case TARGET_SIGNAL_XFSZ:      return SIGXFSZ;#endif#if defined (SIGWIND)    case TARGET_SIGNAL_WIND:      return SIGWIND;#endif#if defined (SIGPHONE)    case TARGET_SIGNAL_PHONE:      return SIGPHONE;#endif#if defined (SIGLOST)    case TARGET_SIGNAL_LOST:      return SIGLOST;#endif#if defined (SIGWAITING)    case TARGET_SIGNAL_WAITING:      return SIGWAITING;#endif#if defined (SIGCANCEL)    case TARGET_SIGNAL_CANCEL:      return SIGCANCEL;#endif#if defined (SIGLWP)    case TARGET_SIGNAL_LWP:      return SIGLWP;#endif#if defined (SIGDANGER)    case TARGET_SIGNAL_DANGER:      return SIGDANGER;#endif#if defined (SIGGRANT)    case TARGET_SIGNAL_GRANT:      return SIGGRANT;#endif#if defined (SIGRETRACT)    case TARGET_SIGNAL_RETRACT:      return SIGRETRACT;#endif#if defined (SIGMSG)    case TARGET_SIGNAL_MSG:      return SIGMSG;#endif#if defined (SIGSOUND)    case TARGET_SIGNAL_SOUND:      return SIGSOUND;#endif#if defined (SIGSAK)    case TARGET_SIGNAL_SAK:      return SIGSAK;#endif#if defined (SIGPRIO)    case TARGET_SIGNAL_PRIO:      return SIGPRIO;#endif      /* Mach exceptions.  Assumes that the values for EXC_ are positive! */#if defined (EXC_BAD_ACCESS) && defined (_NSIG)    case TARGET_EXC_BAD_ACCESS:      return _NSIG + EXC_BAD_ACCESS;#endif#if defined (EXC_BAD_INSTRUCTION) && defined (_NSIG)    case TARGET_EXC_BAD_INSTRUCTION:      return _NSIG + EXC_BAD_INSTRUCTION;#endif#if defined (EXC_ARITHMETIC) && defined (_NSIG)    case TARGET_EXC_ARITHMETIC:      return _NSIG + EXC_ARITHMETIC;#endif#if defined (EXC_EMULATION) && defined (_NSIG)    case TARGET_EXC_EMULATION:      return _NSIG + EXC_EMULATION;#endif#if defined (EXC_SOFTWARE) && defined (_NSIG)    case TARGET_EXC_SOFTWARE:      return _NSIG + EXC_SOFTWARE;#endif#if defined (EXC_BREAKPOINT) && defined (_NSIG)    case TARGET_EXC_BREAKPOINT:      return _NSIG + EXC_BREAKPOINT;#endif#if defined (SIGINFO)    case TARGET_SIGNAL_INFO:      return SIGINFO;#endif    default:#if defined (REALTIME_LO)      retsig = 0;      if (oursig >= TARGET_SIGNAL_REALTIME_33	  && oursig <= TARGET_SIGNAL_REALTIME_63)	{	  /* This block of signals is continuous, and             TARGET_SIGNAL_REALTIME_33 is 33 by definition.  */	  retsig = (int) oursig - (int) TARGET_SIGNAL_REALTIME_33 + 33;	}      else if (oursig == TARGET_SIGNAL_REALTIME_32)	{	  /* TARGET_SIGNAL_REALTIME_32 isn't contiguous with             TARGET_SIGNAL_REALTIME_33.  It is 32 by definition.  */	  retsig = 32;	}      else if (oursig >= TARGET_SIGNAL_REALTIME_64	  && oursig <= TARGET_SIGNAL_REALTIME_127)	{	  /* This block of signals is continuous, and             TARGET_SIGNAL_REALTIME_64 is 64 by definition.  */	  retsig = (int) oursig - (int) TARGET_SIGNAL_REALTIME_64 + 64;	}      if (retsig >= REALTIME_LO && retsig < REALTIME_HI)	return retsig;#endif      *oursig_ok = 0;      return 0;    }}inttarget_signal_to_host_p (enum target_signal oursig){  int oursig_ok;  do_target_signal_to_host (oursig, &oursig_ok);  return oursig_ok;}inttarget_signal_to_host (enum target_signal oursig){  int oursig_ok;  int targ_signo = do_target_signal_to_host (oursig, &oursig_ok);  if (!oursig_ok)    {      /* The user might be trying to do "signal SIGSAK" where this system         doesn't have SIGSAK.  */      warning ("Signal %s does not exist on this system.\n",	       target_signal_to_name (oursig));      return 0;    }  else    return targ_signo;}/* In some circumstances we allow a command to specify a numeric   signal.  The idea is to keep these circumstances limited so that   users (and scripts) develop portable habits.  For comparison,   POSIX.2 `kill' requires that 1,2,3,6,9,14, and 15 work (and using a   numeric signal at all is obsolescent.  We are slightly more   lenient and allow 1-15 which should match host signal numbers on   most systems.  Use of symbolic signal names is strongly encouraged.  */enum target_signaltarget_signal_from_command (int num){  if (num >= 1 && num <= 15)    return (enum target_signal) num;  error ("Only signals 1-15 are valid as numeric signals.\n\Use \"info signals\" for a list of symbolic signals.");}#ifndef GDBSERVERextern initialize_file_ftype _initialize_signals; /* -Wmissing-prototype */void_initialize_signals (void){  if (strcmp (signals[TARGET_SIGNAL_LAST].string, "TARGET_SIGNAL_MAGIC") != 0)    internal_error (__FILE__, __LINE__, "failed internal consistency check");}#endif

⌨️ 快捷键说明

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