前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Signal之基本知识

Signal之基本知识

作者头像
Taishan3721
发布2020-06-23 16:22:10
1.3K0
发布2020-06-23 16:22:10
举报
文章被收录于专栏:这里只有VxWorks

Signal是一种处理异常或异步改变执行流程的机制,类似于软中断。与POSIX兼容,VxWorks也定义了63种Signal(0为NULL Signal)

代码语言:javascript
复制

#define SIGHUP     1 /* hangup */
#define SIGINT     2 /* interrupt */
#define SIGQUIT    3 /* quit */
#define SIGILL     4 /* illegal instruction (not reset when caught) */
#define SIGTRAP    5 /* trace trap (not reset when caught) */
#define SIGABRT    6 /* used by abort, replace SIGIOT in the future */
#define SIGEMT     7 /* EMT instruction */
#define SIGFPE     8 /* floating point exception */
#define SIGKILL    9 /* kill */
#define SIGBUS    10 /* bus error */
#define SIGSEGV   11 /* segmentation violation */
#define SIGFMT    12 /* STACK FORMAT ERROR (not posix) */
#define SIGPIPE   13 /* write on a pipe with no one to read it */
#define SIGALRM   14 /* alarm clock */
#define SIGTERM   15 /* software termination signal from kill */
#define SIGCNCL   16 /* pthreads cancellation signal */
#define SIGSTOP   17 /* sendable stop signal not from tty */
#define SIGTSTP   18 /* stop signal from tty */
#define SIGCONT   19 /* continue a stopped process */
#define SIGCHLD   20 /* to parent on child stop or exit */
#define SIGTTIN   21 /* to readers pgrp upon background tty read */
#define SIGTTOU   22 /* like TTIN for output if (tp->t_local&LTOSTOP) */

#define SIGRES1   23 /* reserved signal number (Not POSIX) */
#define SIGRES2   24 /* reserved signal number (Not POSIX) */
#define SIGRES3   25 /* reserved signal number (Not POSIX) */
#define SIGRES4   26 /* reserved signal number (Not POSIX) */
#define SIGRES5   27 /* reserved signal number (Not POSIX) */
#define SIGRES6   28 /* reserved signal number (Not POSIX) */
#define SIGRES7   29 /* reserved signal number (Not POSIX) */

#define SIGUSR1   30 /* user defined signal 1 */
#define SIGUSR2   31 /* user defined signal 2 */

#define SIGPOLL   32 /* pollable event */
#define SIGPROF   33 /* profiling timer expired */
#define SIGSYS    34 /* bad system call */
#define SIGURG    35 /* high bandwidth data is available at socket */
#define SIGVTALRM 36 /* virtual timer expired */
#define SIGXCPU   37 /* CPU time limit exceeded */
#define SIGXFSZ   38 /* file size time limit exceeded */

#define SIGEVTS   39 /* signal event thread send */
#define SIGEVTD   40 /* signal event thread delete */

#define SIGRTMIN  48 /* Realtime signal min */
#define SIGRTMAX  63 /* Realtime signal max */

#define _NSIGS    63

任务或ISR可以发送Signal到任务本身或其它任务;而对方可以根据Signal Mask选择接收还是忽略该Signal。如果要接收的话,需要注册Signal的处理函数

发送Signal时,使用的是发送者的上下文。而处理函数在处理接收到的Signal时,使用的是接收者的上下文。即使接收者阻塞或者挂起了,这个处理还是会执行的。

Signal的处理函数中可以调用的系统函数有这些

函数

bLib

All routines

errnoLib

errnoGet(), errnoSet()

eventLib

eventSend()

fppArchLib

fppSave(), fppRestore()

intLib

intContext(), intCount(), intVecSet(), intVecGet()

intArchLib

intLock(), intUnlock()

logLib

logMsg()

lstLib

All routines except lstFree()

mathALib

All routines, if fppSave()/fppRestore() are used

msgQLib

msgQSend()

rngLib

All routines except rngCreate() and rngDelete()

semLib

semGive() except mutual-exclusion semaphores, semFlush()

sigLib

kill()

taskLib

taskSuspend(), taskResume(), taskPrioritySet(), taskPriorityGet(), taskIdVerify(), taskIdDefault(), taskIsReady(), taskIsSuspended(), taskIsPended(), taskIsDelayed(), taskTcb()

tickLib

tickAnnounce(), tickSet(), tickGet()

tyLib

tyIRd(), tyITx()

vxLib

vxTas(), vxMemProbe()

wdLib

wdStart(), wdCancel()

spinLockLib

spinLockIsrTake() and spinLockIsrGive()

vxAtomicLib

All routines.

vxCpuLib

vxCpuIndexGet(), vxCpuIdGet(), vxCpuPhysIndexGet(), vxCpuIdToPhysIndex(), vxCpuPhysIndexToId(), vxCpuReservedGet(), CPU_LOGICAL_TO_PHYS(), and CPU_PHYS_TO_LOGICAL()

fioLib

vsprintf() and vsnprintf()

fioBaseLib

sprintf() and snprintf()

ansiString

All routines.

我是泰山,专注VX好多年!

一起学习,共同进步!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档