Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > a412ceb851151854794ced2a242192bb > files > 1396

howto-html-fr-20080722-1mdv2010.0.noarch.rpm

<html><head><META http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>8.&nbsp;Probl&egrave;mes et solutions</title><link href="style.css" rel="stylesheet" type="text/css"><meta content="DocBook XSL Stylesheets V1.69.1" name="generator"><link rel="start" href="index.html" title="
    
        Petit guide de programmation des ports 
        d'entr&eacute;es / sorties sous Linux
    
    "><link rel="up" href="index.html" title="
    
        Petit guide de programmation des ports 
        d'entr&eacute;es / sorties sous Linux
    
    "><link rel="prev" href="ar01s07.html" title="7.&nbsp;Conseils"><link rel="next" href="ar01s09.html" title="9.&nbsp;Code d'exemple"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table summary="Navigation header" width="100%"><tr><th align="center" colspan="3">8.&nbsp;Probl&egrave;mes et solutions</th></tr><tr><td align="left" width="20%"><a accesskey="p" href="ar01s07.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><th align="center" width="60%">&nbsp;</th><td align="right" width="20%">&nbsp;<a accesskey="n" href="ar01s09.html">Suivant</a></td></tr></table><hr></div><div class="sect1" lang="fr"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="N1049C"></a>8.&nbsp;Probl&egrave;mes et solutions</h2></div></div><div></div></div><p>
      <div class="variablelist"><dl><dt><span class="term">Q1.</span></dt><dd><p>
	      J'obtiens une erreur de segmentation lorsque j'essaye 
	      d'acc&eacute;der aux ports.
	    </p></dd><dt><span class="term">R1.</span></dt><dd><p>
	      Soit votre programme n'a pas les privil&egrave;ges de super 
	      utilisateur, soit l'appel &agrave; <code class="function">ioperm()</code> 
	      n'a pas r&eacute;ussi pour une raison ou une autre. V&eacute;rifiez la
	      valeur de retour de <code class="function">ioperm()</code>. 
	      V&eacute;rifiez &eacute;galement que vous acc&eacute;dez bien aux ports que 
	      vous avez activ&eacute;s pr&eacute;alablement avec 
	      <code class="function">ioperm()</code> (voir Q3). Si vous faites 
	      appel aux macros de temporisation 
	      (<code class="function">inb_p()</code>, 
	      <code class="function">outb_p()</code>, et c&aelig;tera), pensez 
	      aussi &agrave; utiliser <code class="function">ioperm()</code> pour 
	      obtenir l'acc&egrave;s au port <code class="literal">0x80</code>.
	    </p></dd><dt><span class="term">Q2.</span></dt><dd><p>
	      Je n'arrive &agrave; trouver nulle part la d&eacute;finition de 
	      <code class="function">in*()</code>, <code class="function">out*()</code>, 
	      de plus gcc se plaint de r&eacute;f&eacute;rences non-d&eacute;finies.
	    </p></dd><dt><span class="term">R2.</span></dt><dd><p>
	      Vous n'avez pas lanc&eacute; la compilation avec les drapeaux 
	      d'optimisation (<code class="literal">-O</code>), en 
	      cons&eacute;quence gcc n'a pas pu trouver les macros d&eacute;finies 
	      dans <code class="filename">asm/io.h</code>. 
	      Ou alors, vous n'avez pas inclus du tout la ligne 
	      <code class="literal">#include &lt;asm/io.h&gt;</code> dans 
	      votre code.
	    </p></dd><dt><span class="term">Q3.</span></dt><dd><p>
	      <code class="function">out*()</code> ne fait rien ou ne retourne 
	      que des valeurs bizarres.
	    </p></dd><dt><span class="term">R3.</span></dt><dd><p>
	      V&eacute;rifiez l'ordre des param&egrave;tres, ceux-ci devraient &ecirc;tre 
	      comme ce qui suit&nbsp;: 
	      <code class="function">outb(<em class="replaceable"><code>valeur</code></em>, , 
	      <em class="replaceable"><code>port</code></em>)</code> et non pas 
	      <code class="function">outportb(<em class="replaceable"><code>port</code></em>, , 
	      <em class="replaceable"><code>valeur</code></em>)</code> comme en 
	      MS-DOS.
	    </p></dd><dt><span class="term">Q4.</span></dt><dd><p>
	      Je souhaite contr&ocirc;ler un p&eacute;riph&eacute;rique standard, tel 
	      qu'un p&eacute;riph&eacute;rique RS-232, une imprimante parall&egrave;le, une 
	      manette de jeu,&nbsp;&hellip;
	    </p></dd><dt><span class="term">R4.</span></dt><dd><p>
	      Vous auriez plut&ocirc;t int&eacute;r&ecirc;t &agrave; utiliser les pilotes d&eacute;j&agrave; 
	      existants (dans le noyau Linux ou un serveur X ou 
	      ailleurs) pour ce faire. Ces pilotes sont g&eacute;n&eacute;ralement 
	      assez polyvalents. Ainsi ils arrivent m&ecirc;me en g&eacute;n&eacute;ral &agrave; 
	      faire fonctionner les p&eacute;riph&eacute;riques sortant l&eacute;g&egrave;rement des 
	      standards. Voyez la note d'information ci-dessus sur les 
	      ports standards pour de la documentation &agrave; leur sujet.
	    </p></dd></dl></div>
    </p></div><div class="navfooter"><hr><table summary="Navigation footer" width="100%"><tr><td align="left" width="40%"><a accesskey="p" href="ar01s07.html">Pr&eacute;c&eacute;dent</a>&nbsp;</td><td align="center" width="20%">&nbsp;</td><td align="right" width="40%">&nbsp;<a accesskey="n" href="ar01s09.html">Suivant</a></td></tr><tr><td valign="top" align="left" width="40%">7.&nbsp;Conseils&nbsp;</td><td align="center" width="20%"><a accesskey="h" href="index.html">Sommaire</a></td><td valign="top" align="right" width="40%">&nbsp;9.&nbsp;Code d'exemple</td></tr></table></div></body></html>