前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >RTP之默认的SystemCall

RTP之默认的SystemCall

作者头像
Taishan3721
发布2020-09-23 14:31:57
9880
发布2020-09-23 14:31:57
举报
文章被收录于专栏:这里只有VxWorks

欢迎关注VxWorks567

用户模式与内核模式使用不同的指令集和MMU配置,因此在RTP中不能直接访问内核的资源,包括内核函数、内核数据,以及driver等。如果迫不得已,RTP中必须要使用内核的某些机制,怎么解决?可以在RTP中重写相应功能,或者通过System Call!

System Call对使用者是透明的,它的大致执行流程如下:RTP里调用System Call封装的API时,系统执行一个特定于体系结构的Trap操作,将CPU从用户模式更改为内核模式;完成Trap请求的操作后,内核从Trap返回,将CPU恢复到用户模式。因为这涉及到了内核的Trap,所以System Call的开销比完全在用户模式下执行的程序要高一些。

VxWorks系统默认已经提供数十个System Call,使用syscallShow()就可以看到

详情如下

RTP函数(参数数量)

对应的内核操作

_close(1)

_closeSc

_creat(2)

_creatSc

_edrErrorInject(6)

_edrErrorInjectSc

_exit(1)

_exitSc

_fdatasync(1)

_fdatasyncSc

_fsync(1)

_fsyncSc

_getcwd(2)

_getcwdSc

_ioctl(3)

_ioctlSc

_mctl(4)

_mctlSc

_msgQOpen(6)

_msgQOpenSc

_open(3)

_openSc

_pause(0)

_pauseSc

_read(3)

_readSc

_semExchange(3)

_semExchangeSc

_semGive(1)

_semGiveSc

_semOpen(6)

_semOpenSc

_semRTake(2)

_semRTakeSc

_semTake(2)

_semTakeSc

_semWTake(2)

_semWTakeSc

_sigaction(4)

_sigactionSc

_sigqueue(4)

_sigqueueSc

_sigreturn(0)

_sigreturnSc

_sigsuspend(1)

_sigsuspendSc

_sigtimedwait(3)

_sigtimedwaitSc

_taskOpen(1)

_taskOpenSc

_taskOpenWithGuard(1)

_taskOpenWithGuardSc

_taskSigqueue(4)

_taskSigqueueSc

_taskTcbCurrentGet(0)

_taskTcbCurrentGetSc

_timer_open(5)

_timer_openSc

_waitpid(3)

_waitpidSc

_write(3)

_writeSc

accept(3)

acceptSc

access(2)

accessSc

bind(3)

bindSc

chdir(1)

chdirSc

chmod(2)

chmodSc

clockCtl(4)

clockCtlSc

connect(3)

connectSc

dup(1)

dupSc

dup2(2)

dup2Sc

edrFlagsGet(0)

edrFlagsGetSc

eventCtl(4)

eventCtlSc

eventReceive(4)

eventReceiveSc

eventSend(2)

eventSendSc

fpathconf(2)

fpathconfSc

getpeername(3)

getpeernameSc

getpid(0)

getpidSc

getppid(0)

getppidSc

getprlimit(4)

getprlimitSc

getsockname(3)

getsocknameSc

getsockopt(5)

getsockoptSc

kill(2)

killSc

link(2)

linkSc

listen(2)

listenSc

mmap(8)

mmapSc

mprotect(3)

mprotectSc

msgQReceive(4)

msgQReceiveSc

msgQSend(5)

msgQSendSc

munmap(2)

munmapSc

objDelete(2)

objDeleteSc

objInfoGet(4)

objInfoGetSc

objUnlink(2)

objUnlinkSc

pathconf(2)

pathconfSc

pipe(1)

pipeSc

pipeDevCreate(3)

pipeDevCreateSc

pipeDevDelete(2)

pipeDevDeleteSc

recv(4)

recvSc

recvfrom(6)

recvfromSc

recvmsg(3)

recvmsgSc

remove(1)

removeSc

rename(2)

renameSc

rtpInfoGet(2)

rtpInfoGetSc

rtpSpawn(7)

rtpSpawnSc

rtpVarAdd(2)

rtpVarAddSc

select(5)

selectSc

semCtl(4)

semCtlSc

send(4)

sendSc

sendmsg(3)

sendmsgSc

sendto(6)

sendtoSc

setprlimit(4)

setprlimitSc

setsockopt(5)

setsockoptSc

shutdown(2)

shutdownSc

sigaltstack(2)

sigaltstackSc

sigpending(1)

sigpendingSc

sigprocmask(3)

sigprocmaskSc

socket(3)

socketSc

sysctl(6)

sysctlSc

taskCtl(4)

taskCtlSc

taskDelay(1)

taskDelaySc

taskKill(2)

taskKillSc

timerCtl(4)

timerCtlSc

unlink(1)

unlinkSc

改天再来看看如何添加自己的SystemCall

我是泰山 专注VX 0x10年

一起学习 共同进步

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

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

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

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

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