Kernel-call classes: _NTO_TRACE_KERCALLENTER, _NTO_TRACE_KERCALLEXIT, and _NTO_TRACE_KERCALLINT

QNX SDP8.0System Analysis Toolkit (SAT) User's GuideUser

These classes track kernel calls.

  • _NTO_TRACE_KERCALLENTER and _NTO_TRACE_KERCALLEXIT track the entrances to and exits from kernel calls.
  • _NTO_TRACE_KERCALLINT tracks interrupted kernel calls. When we exit the kernel, we check to see if the kernel call arguments are valid. If so, then we log an _NTO_TRACE_KERCALLEXIT event with the parameters. If not, then we log an _NTO_TRACE_KERCALLINT event with no parameters. If you get an EINTR return code from your kernel call, you'll also see an _NTO_TRACE_KERCALLINT event in the trace log.

_NTO_TRACE_KERCALL is a pseudo-class that comprises all these classes.

The traceprinter labels for these classes are KER_CALL, KER_EXIT, and INT_CALL, followed by an uppercase version of the kernel call; the IDE labels consist of the kernel call, followed by Enter, Exit, or INT.

Note:
The event type is ORed with _NTO_TRACE_KERCALL64 if the event information includes 64-bit data types. For the most part this happens when you're tracing a 64-bit process, but it's possible for a 32-bit process to call MsgDeliverEvent() with the 64-bit form of a struct sigevent (e.g., when a 64-bit client interacts with a 32-bit server). When you're doing a wide-mode trace, the kernel dumps the contents of the struct sigevent, so _NTO_TRACE_KERCALL64 would be ORed into the event type.

Most of the events in these classes correspond in a fairly obvious way to the kernel calls; some correspond to internal functions:

Event Kernel call
__KER_BAD
__KER_CACHE_CONTROL CacheControl()
__KER_CHANNEL_CREATE ChannelCreate()
__KER_CHANNEL_CTL ChannelCtl()
__KER_CHANNEL_DESTROY ChannelDestroy()
__KER_CLOCK_ADJUST ClockAdjust()
__KER_CLOCK_ID ClockId()
__KER_CLOCK_PERIOD ClockPeriod()
__KER_CLOCK_TIME ClockTime()
__KER_CONNECT_ATTACH ConnectAttach()
__KER_CONNECT_CLIENT_INFO ConnectClientInfo()
__KER_CONNECT_DETACH ConnectDetach()
__KER_CONNECT_FLAGS ConnectFlags()
__KER_CONNECT_SERVER_INFO ConnectServerInfo()
__KER_INTERRUPT_ATTACH InterruptAttachThread(), InterruptAttachEvent()
__KER_INTERRUPT_DETACH InterruptDetach()
__KER_INTERRUPT_QUERY InterruptQuery()
__KER_INTERRUPT_MASK InterruptMask()
__KER_INTERRUPT_UNMASK InterruptUnmask()
__KER_INTERRUPT_WAIT InterruptWait()
__KER_MSG_CURRENT MsgCurrent()
__KER_MSG_DELIVER_EVENT MsgDeliverEvent()
__KER_MSG_ERROR MsgError()
__KER_MSG_INFO MsgInfo()
__KER_MSG_PAUSE MsgPause()
__KER_MSG_QUEUE_CLOSE MsgQueueClose()
__KER_MSG_QUEUE_CTL MsgQueueCtl()
__KER_MSG_QUEUE_OPEN MsgQueueOpen()
__KER_MSG_QUEUE_RECEIVE MsgQueueReceive()
__KER_MSG_QUEUE_SEND MsgQueueSend()
__KER_MSG_READV MsgRead(), MsgReadv()
__KER_MSG_RECEIVEPULSEV MsgReceivePulse()
__KER_MSG_RECEIVEV MsgReceive(), MsgReceivev()
__KER_MSG_REGISTER_EVENT MsgRegisterEvent()
__KER_MSG_REPLYV MsgReply(), MsgReplyv()
__KER_MSG_SENDV MsgSend(), MsgSendv(), and MsgSendvs()
__KER_MSG_SENDVNC MsgSendnc(), MsgSendvnc(), and MsgSendvsnc()
__KER_MSG_SEND_PULSE MsgSendPulse()
__KER_MSG_SEND_PULSEPTR MsgSendPulsePtr()
__KER_MSG_VERIFY_EVENT MsgVerifyEvent()
__KER_MSG_WRITEV MsgWrite(), MsgWritev()
__KER_NOP None; forces a thread into the kernel so that scheduling can take place
__KER_SCHED_CTL SchedCtl()
__KER_SCHED_GET SchedGet()
__KER_SCHED_INFO SchedInfo()
__KER_SCHED_SET SchedSet()
__KER_SCHED_YIELD SchedYield()
__KER_SIGNAL_ACTION SignalAction()
__KER_SIGNAL_KILL SignalKill()
__KER_SIGNAL_KILL_SIGVAL SignalKillSigval()
__KER_SIGNAL_PROCMASK SignalProcmask()
__KER_SIGNAL_RETURN SignalReturn() (This function is for internal use only)
__KER_SIGNAL_SUSPEND SignalSuspend()
__KER_SIGNAL_WAITINFO SignalWaitInfo()
__KER_SYNC_BARRIER_WAIT SyncBarrierWait_r()
__KER_SYNC_CONDVAR_SIGNAL SyncCondvarSignal()
__KER_SYNC_CONDVAR_WAIT SyncCondvarWait()
__KER_SYNC_CREATE SyncTypeCreate()
__KER_SYNC_CTL SyncCtl()
__KER_SYNC_DESTROY SyncDestroy()
Note:
This event and kernel call are being deprecated in a future release. Use __KER_SYNC_TYPE_DESTROY and SyncTypeDestroy() instead.
__KER_SYNC_TYPE_DESTROY SyncTypeDestroy()
__KER_SYNC_MUTEX_LOCK SyncMutexLock()
__KER_SYNC_MUTEX_UNLOCK SyncMutexUnlock()
__KER_SYNC_RWLOCK SyncRWLock()
__KER_SYNC_SEM_POST SyncSemPost()
__KER_SYNC_SEM_WAIT SyncSemWait()
__KER_SYS_CPUPAGE_GET
__KER_SYS_CPUPAGE_SET
__KER_SYS_SRANDOM SysSrandom()
__KER_THREAD_CANCEL ThreadCancel()
__KER_THREAD_CREATE ThreadCreate()
__KER_THREAD_CTL ThreadCtl()
__KER_THREAD_DESTROY ThreadDestroy()
__KER_THREAD_DETACH ThreadDetach()
__KER_THREAD_JOIN ThreadJoin()
__KER_TIMER_ALARM TimerAlarm()
__KER_TIMER_CREATE TimerCreate()
__KER_TIMER_DELEGATE TimerDelegate()
__KER_TIMER_DESTROY TimerDestroy()
__KER_TIMER_INFO TimerInfo()
__KER_TIMER_SETTIME TimerSettime()
__KER_TIMER_TIMEOUT TimerTimeout()
__KER_TRACE_EVENT TraceEvent()
Page updated: