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: