<?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>ata_finalize_port_ops</title><meta name="generator" content="DocBook XSL Stylesheets V1.76.1" /><link rel="home" href="index.html" title="libATA Developer's Guide" /><link rel="up" href="libataInt.html" title="Chapter 5. libata Core Internals" /><link rel="prev" href="API-ata-port-alloc.html" title="ata_port_alloc" /><link rel="next" href="API-ata-port-detach.html" title="ata_port_detach" /></head><body><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center"><span>ata_finalize_port_ops</span></th></tr><tr><td width="20%" align="left"><a accesskey="p" href="API-ata-port-alloc.html">Prev</a> </td><th width="60%" align="center">Chapter 5. libata Core Internals</th><td width="20%" align="right"> <a accesskey="n" href="API-ata-port-detach.html">Next</a></td></tr></table><hr /></div><div class="refentry" title="ata_finalize_port_ops"><a id="API-ata-finalize-port-ops"></a><div class="titlepage"></div><div class="refnamediv"><h2>Name</h2><p>ata_finalize_port_ops — finalize ata_port_operations </p></div><div class="refsynopsisdiv" title="Synopsis"><h2>Synopsis</h2><div class="funcsynopsis"><table border="0" summary="Function synopsis" cellspacing="0" cellpadding="0" class="funcprototype-table"><tr><td><code class="funcdef">void <strong>fsfuncata_finalize_port_ops </strong>(</code></td><td>struct ata_port_operations * <var class="pdparam">ops</var><code>)</code>;</td></tr></table><div class="funcprototype-spacer"> </div></div></div><div class="refsect1" title="Arguments"><a id="id3089184"></a><h2>Arguments</h2><div class="variablelist"><dl><dt><span class="term"><em class="parameter"><code>ops</code></em></span></dt><dd><p> ata_port_operations to finalize </p></dd></dl></div></div><div class="refsect1" title="Description"><a id="id3089211"></a><h2>Description</h2><p> An ata_port_operations can inherit from another ops and that ops can again inherit from another. This can go on as many times as necessary as long as there is no loop in the inheritance chain. </p><p> Ops tables are finalized when the host is started. NULL or unspecified entries are inherited from the closet ancestor which has the method and the entry is populated with it. After finalization, the ops table directly points to all the methods and ->inherits is no longer necessary and cleared. </p><p> Using ATA_OP_NULL, inheriting ops can force a method to NULL. </p></div><div class="refsect1" title="LOCKING"><a id="id3089239"></a><h2>LOCKING</h2><p> None. </p></div></div><div class="navfooter"><hr /><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="API-ata-port-alloc.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="libataInt.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="API-ata-port-detach.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top"><span>ata_port_alloc</span> </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> <span>ata_port_detach</span></td></tr></table></div></body></html>