<?xml version="1.0" encoding="ANSI_X3.4-1968" standalone="no"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=ANSI_X3.4-1968" /><title>Chapter 4. Kernel Internals</title><meta name="generator" content="DocBook XSL Stylesheets V1.75.2" /><link rel="home" href="index.html" title="The utrace User Debugging Infrastructure" /><link rel="up" href="index.html" title="The utrace User Debugging Infrastructure" /><link rel="prev" href="re38.html" title="syscall_set_arguments" /><link rel="next" href="re39.html" title="tracehook_expect_breakpoints" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 4. Kernel Internals</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="re38.html">Prev</a> </td><th width="60%" align="center"> </th><td width="20%" align="right"> <a accesskey="n" href="re39.html">Next</a></td></tr></table><hr /></div><div class="chapter" title="Chapter 4. Kernel Internals"><div class="titlepage"><div><div><h2 class="title"><a id="internals"></a>Chapter 4. Kernel Internals</h2></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="ch04.html#tracehook">Core Calls In</a></span></dt><dt><span class="sect1"><a href="ch04s02.html">Architecture Calls Out</a></span></dt><dd><dl><dt><span class="sect2"><a href="ch04s02.html#arch-ptrace"><code class="filename"><asm/ptrace.h></code></a></span></dt><dt><span class="sect2"><a href="ch04s02.html#arch-syscall"><code class="filename"><asm/syscall.h></code></a></span></dt><dt><span class="sect2"><a href="ch04s02.html#arch-tracehook"><code class="filename"><linux/tracehook.h></code></a></span></dt></dl></dd></dl></div><p> This chapter covers the interface to the tracing infrastructure from the core of the kernel and the architecture-specific code. This is for maintainers of the kernel and arch code, and not relevant to using the tracing facilities described in preceding chapters. </p><div class="sect1" title="Core Calls In"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a id="tracehook"></a>Core Calls In</h2></div></div></div><div class="toc"><dl><dt><span class="refentrytitle"><a href="re39.html"><span>tracehook_expect_breakpoints</span></a></span><span class="refpurpose"> — guess if task memory might be touched </span></dt><dt><span class="refentrytitle"><a href="re40.html"><span>tracehook_report_syscall_entry</span></a></span><span class="refpurpose"> — task is about to attempt a system call </span></dt><dt><span class="refentrytitle"><a href="re41.html"><span>tracehook_report_syscall_exit</span></a></span><span class="refpurpose"> — task has just finished a system call </span></dt><dt><span class="refentrytitle"><a href="re42.html"><span>tracehook_unsafe_exec</span></a></span><span class="refpurpose"> — check for exec declared unsafe due to tracing </span></dt><dt><span class="refentrytitle"><a href="re43.html"><span>tracehook_tracer_task</span></a></span><span class="refpurpose"> — return the task that is tracing the given task </span></dt><dt><span class="refentrytitle"><a href="re44.html"><span>tracehook_report_exec</span></a></span><span class="refpurpose"> — a successful exec was completed </span></dt><dt><span class="refentrytitle"><a href="re45.html"><span>tracehook_report_exit</span></a></span><span class="refpurpose"> — task has begun to exit </span></dt><dt><span class="refentrytitle"><a href="re46.html"><span>tracehook_init_task</span></a></span><span class="refpurpose"> — task_struct has just been copied </span></dt><dt><span class="refentrytitle"><a href="re47.html"><span>tracehook_free_task</span></a></span><span class="refpurpose"> — task_struct is being freed </span></dt><dt><span class="refentrytitle"><a href="re48.html"><span>tracehook_prepare_clone</span></a></span><span class="refpurpose"> — prepare for new child to be cloned </span></dt><dt><span class="refentrytitle"><a href="re49.html"><span>tracehook_finish_clone</span></a></span><span class="refpurpose"> — new child created and being attached </span></dt><dt><span class="refentrytitle"><a href="re50.html"><span>tracehook_report_clone</span></a></span><span class="refpurpose"> — in parent, new child is about to start running </span></dt><dt><span class="refentrytitle"><a href="re51.html"><span>tracehook_report_clone_complete</span></a></span><span class="refpurpose"> — new child is running </span></dt><dt><span class="refentrytitle"><a href="re52.html"><span>tracehook_report_vfork_done</span></a></span><span class="refpurpose"> — vfork parent's child has exited or exec'd </span></dt><dt><span class="refentrytitle"><a href="re53.html"><span>tracehook_prepare_release_task</span></a></span><span class="refpurpose"> — task is being reaped, clean up tracing </span></dt><dt><span class="refentrytitle"><a href="re54.html"><span>tracehook_finish_release_task</span></a></span><span class="refpurpose"> — final tracing clean-up </span></dt><dt><span class="refentrytitle"><a href="re55.html"><span>tracehook_signal_handler</span></a></span><span class="refpurpose"> — signal handler setup is complete </span></dt><dt><span class="refentrytitle"><a href="re56.html"><span>tracehook_consider_ignored_signal</span></a></span><span class="refpurpose"> — suppress short-circuit of ignored signal </span></dt><dt><span class="refentrytitle"><a href="re57.html"><span>tracehook_consider_fatal_signal</span></a></span><span class="refpurpose"> — suppress special handling of fatal signal </span></dt><dt><span class="refentrytitle"><a href="re58.html"><span>tracehook_force_sigpending</span></a></span><span class="refpurpose"> — let tracing force signal_pending(current) on </span></dt><dt><span class="refentrytitle"><a href="re59.html"><span>tracehook_get_signal</span></a></span><span class="refpurpose"> — deliver synthetic signal to traced task </span></dt><dt><span class="refentrytitle"><a href="re60.html"><span>tracehook_notify_jctl</span></a></span><span class="refpurpose"> — report about job control stop/continue </span></dt><dt><span class="refentrytitle"><a href="re61.html"><span>tracehook_finish_jctl</span></a></span><span class="refpurpose"> — report about return from job control stop </span></dt><dt><span class="refentrytitle"><a href="re62.html"><span>tracehook_notify_death</span></a></span><span class="refpurpose"> — task is dead, ready to notify parent </span></dt><dt><span class="refentrytitle"><a href="re63.html"><span>tracehook_report_death</span></a></span><span class="refpurpose"> — task is dead and ready to be reaped </span></dt><dt><span class="refentrytitle"><a href="re64.html"><span>set_notify_resume</span></a></span><span class="refpurpose"> — cause <code class="function">tracehook_notify_resume</code> to be called </span></dt><dt><span class="refentrytitle"><a href="re65.html"><span>tracehook_notify_resume</span></a></span><span class="refpurpose"> — report when about to return to user mode </span></dt></dl></div><p> These calls are declared in <code class="filename"><linux/tracehook.h></code>. The core kernel calls these functions at various important places. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="re38.html">Prev</a> </td><td width="20%" align="center"> </td><td width="40%" align="right"> <a accesskey="n" href="re39.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>syscall_set_arguments</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>tracehook_expect_breakpoints</span></td></tr></table></div></body></html>