<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.:: Jorge Pereira ::. &#187; Linux</title>
	<atom:link href="http://blog.jorgepereira.com.br/category/linux/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.jorgepereira.com.br</link>
	<description>"UNIX is basically a simple operating system, but you have to be a genius to understand the simplicity."</description>
	<lastBuildDate>Thu, 01 Jul 2010 04:16:27 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>- Depuração: Parte 1</title>
		<link>http://blog.jorgepereira.com.br/2010/07/01/depuracao-parte-1/</link>
		<comments>http://blog.jorgepereira.com.br/2010/07/01/depuracao-parte-1/#comments</comments>
		<pubDate>Thu, 01 Jul 2010 03:06:46 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Debug]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[linux depuração]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=952</guid>
		<description><![CDATA[Seja Elegante Talvez possa ser algo que passe despercebido por vários desenvolvedores, porém dúvido quem nunca tenha se deparado com mensagens de &#8220;log&#8221; vagas ou sem nenhum nexo ou bem pior, como mensagens idênticas replicadas por várias partes do código! A algum tempo atrás estava trabalhando em um projeto em que um respectivo desenvolvedor da [...]]]></description>
			<content:encoded><![CDATA[<blockquote>
<h2>Seja Elegante</h2>
</blockquote>
<p>Talvez possa ser algo que passe despercebido por vários desenvolvedores, porém dúvido quem nunca tenha se deparado com mensagens de &#8220;log&#8221; vagas ou sem nenhum nexo ou bem pior, como mensagens idênticas replicadas por várias partes do código!  <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_eek.gif' alt=':shock:' class='wp-smiley' /><br />
A algum tempo atrás estava trabalhando em um projeto em que <em>um respectivo desenvolvedor</em> da equipe possuia o costume de espalhar ou replicar centenas de printf() pelo código com mensagens tipo!</p>
<p>printf(&#8220;!!! FULANO &#8211; Aqui!!!&#8221;);</p>
<p>ou</p>
<p>printf(&#8220;!!! FULANO &#8211; Arquivo.cpp:  Aqui!!!\n&#8221;);</p>
<p>Precisa falar que isto e pessímo? Certo que e preciso um bom senso com o uso de mensagens de depuração pois dependendo ao invés de ajudar podem só atrapalhar. principalmente quando você necessita ter controle sobre tais mensagens, como por exemplo obter a localização da mensagem através do nome da função, arquivo e linha.</p>
<p><div class="note"><div class="notewarning">Lembrando que dependendo da situação e contexto eu sou a favor de utilizar o pragma no compilador ativando o &#8220;<em><a href="http://en.wikipedia.org/wiki/Directive_(programming)" target="_blank">poison</a></em>&#8221; desativando dentre várias funções o printf (), evitando de ter espalhada pelo sistema! Futuramente um post sobre o <em>poison</em>. </div></div></p>
<p>O pré-processador do GCC oferece (*) várias macros, as que irei utilizar em questão são:</p>
<ul>
<li>__FILE__ : Substituída pelo nome do arquivo.</li>
<li>__PRETTY_FUNCTION__ : Substituídas pelo nome nome da função.</li>
<li>__LINE__ : Substituída pelo número da linha de código.</li>
</ul>
<p>(*) <a href="http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html" target="_blank">Mais detalhes sobre as macros do GCC.</a></p>
<p><a href="http://gcc.gnu.org/onlinedocs/cpp/Standard-Predefined-Macros.html" target="_blank"></a>A utilização dessas macros irá facilitar a localização das mensagens de depuração, Abaixo um simples exemplo demonstrado em <a href="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2010/06/debug1.c">debug1.c</a>.</p>
<pre class="brush:csharp">/**
 * By Jorge Pereira &lt;jpereiran@gmail.com&gt;
 * Date: Tue Jun 29 02:51:44 BRT 2010
 */

#include &lt;stdio.h&gt;
#include &lt;unistd.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

// Macro condicional
#ifdef DEBUG
#	warning "Debug is enabled"
#	define TRACE_DEBUG(fmt, ...) \
	fprintf(stderr, " ** DEBUG: %s:%d %s(): "fmt"\n", \
	__FILE__, __LINE__, __PRETTY_FUNCTION__, ##__VA_ARGS__)
#else
#	warning "Debug is disabled"
#	define TRACE_DEBUG(fmt, ...)
#endif

#define MAX_STRING 5 /* tamanho maximo de uma string */

// Função simples de exemplo...
void
show_name (const char* name,
		   size_t len)
{
	size_t offset = len;

	// Verificação qualquer...
	if (len &gt; MAX_STRING)
	{
		// Abaixo mensagem de depuração, perceba que ela será ativada apenas
                // quando em tempo de compilação você ativar a macro "<strong>DEBUG</strong>"
		TRACE_DEBUG ("Ooops! Tamanho da string(%d) e excedeu o limite(%d)...",
			len, MAX_STRING);
		offset = MAX_STRING;
	}

	// Manipulação qualquer...
	write (STDOUT_FILENO, name, offset);
	write (STDOUT_FILENO, "\n", 1);
}

int
main (int argc, char* argv[])
{
	if (argc &lt; 2)
	{
		printf ("Usage: %s &lt;string&gt;\n", argv[0]);
		exit (1);
	}

	show_name (argv[1], strlen (argv[1]));

	return 0;
}</pre>
<p>Com este exemplo básico em mãos, vamos compilar e executar.</p>
<pre>[jpereira@miracleworld Codes]$ gcc -Wall -o debug1 debug1.c
debug1.c:18:3: warning: #warning "Debug is disabled"
[jpereira@miracleworld Codes]$ ./debug1 "Jorge"
Jorge
[jpereira@miracleworld Codes]$ ./debug1 "Jorge Pereira"
Jorge
[jpereira@miracleworld Codes]$</pre>
<p>Imagine que seu sistema possui inúmeros arquivos e você precisa em determinados pontos obter o máximo de informação sobre as mensagens de depuração, talvez seja interessante ter além de uma mensagem objetiva obter juntamente o nome da função, arquivo e linha de onde foi invocada tal mensagem.</p>
<pre>[jpereira@miracleworld Codes]$ gcc -Wall -DDEBUG -o debug1 debug1.c
debug1.c:13:3: warning: #warning "Debug is enabled"
[jpereira@miracleworld Codes]$ ./debug1 "Jorge"
Jorge
[jpereira@miracleworld Codes]$ ./debug1 "Jorge Pereira"
 ** DEBUG: <strong>debug1.c:36 show_name()</strong>: Ooops! Tamanho da string(13) e excedeu o limite(5)...
Jorge
[jpereira@miracleworld Codes]$</pre>
<p><div class="note"><div class="notetip"> Agora veja situação que você está trabalhando em um sistema com várias checagens complexas de cenários <em>&#8220;nada convencionais&#8221;</em> em que você não tem certeza se vai acontecer sempre ou não.<br />
Sem falar que torna-se um atrativo a possibilidade de você poder ativar/desativar o simples mecanismo, como por exemplo poder criar macros para depuração de componentes específicos (ex.: relacionadas a sockets, I/O, sgdb, &#8230;), isto poderá facilitar a identificação e remoção de bugs.</div></div></p>
<p><div class="note"><div class="noteclassic">Lembrando que este e o primeiro post entre vários que pretendo publicar relacionados a sugestões e técnicas de depuração. Fique de olho na segunda parte desta <em>saga</em> em que irei explicar uma mais dinâmica do mesmo assunto abordado neste post associando ao uso de variáveis de ambiente.<br />
Dúvidas e Sugestões, são sempre bem vindas! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />  </div></div></p>
<p>Autor: Jorge Pereira</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2010/07/01/depuracao-parte-1/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>- Adicionado ao Kernel o suporte nativo as teclas especiais do notebook &#8220;Sony Vaio VPC-EB15FB&#8221;</title>
		<link>http://blog.jorgepereira.com.br/2010/06/27/adicionado-ao-kernel-o-suporte-nativo-as-teclas-especiais-do-notebook-sony-vaio-vpc-eb15fb/</link>
		<comments>http://blog.jorgepereira.com.br/2010/06/27/adicionado-ao-kernel-o-suporte-nativo-as-teclas-especiais-do-notebook-sony-vaio-vpc-eb15fb/#comments</comments>
		<pubDate>Sun, 27 Jun 2010 07:02:49 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[linux kernel sony]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=901</guid>
		<description><![CDATA[Sempre tive preferência pelos produtos produzidos pela Sony, em especial os notebooks. O meu antigo VGN-FS750 começou a apresentar alguns problemas após eu ter dado um tombo nele, desde então nunca mais foi o mesmo. Porém no mês passado resolvi comprar um novo notebook que fosse preferencialmente da Sony, e após várias buscas cheguei ao modelo [...]]]></description>
			<content:encoded><![CDATA[<p>Sempre tive preferência pelos produtos produzidos pela Sony, em especial os notebooks. O meu antigo VGN-FS750 começou a apresentar alguns problemas após eu ter dado um tombo nele, desde então nunca mais foi o mesmo. <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_rolleyes.gif' alt=':roll:' class='wp-smiley' /> </p>
<p>Porém no mês passado resolvi comprar um novo notebook que fosse preferencialmente da Sony, e após várias buscas cheguei ao modelo <a href="http://www.sonystyle.com.br/br/site/catalog/ProductDisplay.jsp?parentCatId=cat3890002&amp;category=informatica&amp;tabNum=1&amp;from=1&amp;id=VPCEB15FB/BI&amp;page=searchResult" target="_blank">VPC-EB15FB</a>. Então fui ao shopping e comprei diretamente na loja da SonyStyle o brinquedinho abaixo.</p>
<p style="text-align: center;"><img class="size-full wp-image-1074 aligncenter" title="Novo  Notebook, Sony VPC-EB15FB" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2010/06/DSC_8288-lower.jpg" alt="" width="640" height="429" /></p>
<p style="text-align: left;">Assim que cheguei em casa fiz o download do <em>Ubuntu 9.10</em> e instalei, após o primeiro boot que iniciei a configuração e recuperação dos meus backups do notebook antigo percebi que algumas teclas de atalhos não funcionaram, estranho né? Abaixo imagem das teclas na qual estou me referindo.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-1080" title="Novo  Notebook, Sony VPC-EB15FB" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2010/06/DSC_8278-lower.jpg" alt="" width="640" height="429" /></p>
<p style="text-align: left;">Obviamente que não fiquei de braços cruzados, fiz checkout diretamente pelo GIT do Kernel o modulo &#8220;<a href="http://git.kernel.org/?p=linux/kernel/git/mjg59/platform-drivers-x86.git;a=summary" target="_blank">platform-drivers-x86</a>&#8221; e após alguns ajustes já estava adicionado o suporte das novas teclas da <a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10551&amp;storeId=10151&amp;langId=-1&amp;categoryId=8198552921644699998&amp;N=4294953240" target="_blank">série </a><strong><a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10551&amp;storeId=10151&amp;langId=-1&amp;categoryId=8198552921644699998&amp;N=4294953240" target="_blank">EB</a></strong><a href="http://www.sonystyle.com/webapp/wcs/stores/servlet/CategoryDisplay?catalogId=10551&amp;storeId=10151&amp;langId=-1&amp;categoryId=8198552921644699998&amp;N=4294953240" target="_blank"> de notebooks da Sony</a> ao Kernel do Linux.</p>
<p style="text-align: left;"><div class="note"><div class="noteclassic">Resumindo, suporte adicionado seguido de patch gerado e submetido ao Kernel. Agora e aguardar a próxima versão do Kernel para termos por padrão o suporte a tais teclas! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: left;"><a href="http://blog.jorgepereira.com.br/jorge/patchs/0001-sony-laptop-Adding-support-for-new-keys-ASSIST-WEB-a.patch" target="_blank">Patch gerado a partir do Kernel ﻿﻿2.6.35-rc3</a></p>
<p style="text-align: left;"><a href="http://blog.jorgepereira.com.br/jorge/patchs/0001-sony-laptop-Adding-support-for-new-keys-ASSIST-WEB-a.patch" target="_blank"></a></div></div></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2010/06/27/adicionado-ao-kernel-o-suporte-nativo-as-teclas-especiais-do-notebook-sony-vaio-vpc-eb15fb/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>- Introdução aos Linux Device Drivers (ILDD)</title>
		<link>http://blog.jorgepereira.com.br/2010/06/21/introducao-aos-linux-device-drivers-ildd/</link>
		<comments>http://blog.jorgepereira.com.br/2010/06/21/introducao-aos-linux-device-drivers-ildd/#comments</comments>
		<pubDate>Mon, 21 Jun 2010 20:10:00 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Hacking]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[drivers kernel linux]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=1031</guid>
		<description><![CDATA[Olá, Caso você tenha necessidade ou curiosidade em relação a Device Drivers no Linux, este com certeza será um bom material para iniciar-se na &#8220;brincadeira&#8221;. Introdução aos Linux Device Drivers (ILDD) é um curso que tem por objectivo apresentar os princípios básicos do desenvolvimento de device drivers no Linux kernel. Pretende-se com este curso, que [...]]]></description>
			<content:encoded><![CDATA[<p>Olá,</p>
<p>Caso você tenha necessidade ou curiosidade em relação a <em>Device Drivers</em> no Linux, este com certeza será um bom material para iniciar-se na &#8220;brincadeira&#8221;.</p>
<p style="text-align: center;"><img class="size-full wp-image-1043 aligncenter" title="Linux Device Driver" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2010/06/device_driver.jpg" alt="" width="241" height="241" /></p>
<blockquote><p><em>Introdução aos Linux Device Drivers (ILDD) é um curso que tem por objectivo apresentar os princípios básicos do desenvolvimento de </em><a href="http://en.wikipedia.org/wiki/Device_driver" target="_blank"><em>device drivers</em></a><em> no </em><a href="http://en.wikipedia.org/wiki/Linux" target="_blank"><em>Linux</em></a><em> </em><a href="http://www.kernel.org" target="_blank"><em>kernel</em></a><em>. Pretende-se com este curso, que o leitor tenha contacto com várias ferramentas e sub-sistemas existentes no </em><a href="http://www.kernel.org" target="_blank"><em>kernel</em></a><em>, adquirindo assim as bases que lhe irão permitir desenvolver o suporte para a grande maioria dos dispositivos. Alguns dos temas introduzidos são: estrutura básica de um device driver, comunicação com o userspace, memória dinâmica, eventos assíncronos, primitivas de sincronização e comunicação com o hardware.</em></p>
<p><em>Este curso aborda o tema de uma perspectiva pedagógica, através da sistematização dos conceitos em conjunto com uma forte componente prática, na qual se convida o leitor à implementação gradual de um </em><a href="http://en.wikipedia.org/wiki/Device_driver" target="_blank"><em>device driver</em></a><em> que dará suporte a um dispositivo especificamente concebido para o efeito. O leitor poderá ainda consultar a literatura de referência, de onde se destacam os excelentes títulos: </em><a href="http://lwn.net/Kernel/LDD3" target="_blank"><em>Linux Device Drivers</em></a><em>, </em><a href="http://www.oreilly.com/catalog/linuxkernel" target="_blank"><em>Understanding the Linux Kernel</em></a><em> e </em><a href="http://www.kroah.com/lkn" target="_blank"><em>Linux Kernel in a Nutshell</em></a><em>.</em></p>
<p><em>O autor, com a ajuda dos seus revisores, investiu mais de um ano de trabalho na elaboração e preparação deste curso, no sentido de oferecer à comunidade, não só um manual de aprendizagem abrangente, mas também uma importante referência futura. Caso encontre alguns erros ou tenha sugestões que visam melhorar ou complementar este trabalho, não hesite em </em><a href="http://www.adassumpcao.net/contacts"><em>contactar</em></a><em> o autor.</em></p></blockquote>
<p><a href="http://www.adassumpcao.net/introducao-aos-linux-device-drivers" target="_blank">Download aqui</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2010/06/21/introducao-aos-linux-device-drivers-ildd/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>- Linux + HP/Ipaq Bluetooth Foldable Keyboard</title>
		<link>http://blog.jorgepereira.com.br/2009/05/05/linux-keyboard-hpipaq-bluetooth-foldable-keyboard/</link>
		<comments>http://blog.jorgepereira.com.br/2009/05/05/linux-keyboard-hpipaq-bluetooth-foldable-keyboard/#comments</comments>
		<pubDate>Tue, 05 May 2009 05:24:27 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[N800/N810]]></category>
		<category><![CDATA[bluetooth]]></category>
		<category><![CDATA[kbdd]]></category>
		<category><![CDATA[keyboard]]></category>
		<category><![CDATA[maemo]]></category>
		<category><![CDATA[n800]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=761</guid>
		<description><![CDATA[Recentemente adquiri um teclado &#8220;HP/Ipaq Bluqetooth Folding Keyboard&#8221; conforme imagem abaixo. Fiz várias pesquisas sobre o teclado e seu funcionamento nos Nokia Internet tablets N8xx e assim como outros inúmeros teclados do gênero ele possui um esquema de mapas diferente sendo incompatível com os esquemas de HID convencionais, foi durante a pesquisa que cheguei a [...]]]></description>
			<content:encoded><![CDATA[<p>Recentemente adquiri um teclado &#8220;HP/Ipaq Bluqetooth Folding Keyboard&#8221; conforme imagem abaixo.</p>
<p><img class="aligncenter size-full wp-image-765" title="kbd-01" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/05/kbd-01.jpg" alt="kbd-01" width="400" height="300" /></p>
<p><img class="aligncenter size-full wp-image-766" title="kbd-02" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/05/kbd-02.jpg" alt="kbd-02" width="400" height="300" /></p>
<p>Fiz várias pesquisas sobre o teclado e seu funcionamento nos <em>Nokia Internet tablets N8xx</em> e assim como outros inúmeros teclados do gênero ele possui um esquema de mapas diferente sendo incompatível com os esquemas de HID convencionais, foi durante a pesquisa que cheguei a um serviço chamado &#8220;<a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank">kbdd</a>&#8220;.</p>
<p>O <a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank"><em>kbdd</em></a> e um <em>daemon</em> que funciona na camada de usuário &#8220;user-space&#8221;, sendo responsável pela comunicação atráves da interface serial (<em>over irda/bluetooth/&#8230;</em>) do teclado fazendo o intermedio para a camada de input do kernel utilizando o modulo uinput nativo no Kernel, e assim encaminhando as teclas para o S.O.</p>
<p>Ele foi feito direcionado para plataformas móveis como maemo, openmoko, gpe, entre outros. Pois caso você tenha algum teclado do tipo e o esquema de <em>maps</em> dele seja suportado conforme lista descrita no site do <a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank"><em>kbdd</em></a>, basta seguir os passos a seguir!</p>
<p>1) Baixe o código a partir do CVS e compile.</p>
<pre><strong>[jpereira@jiraya ~]$</strong> mkdir -p ~/tmp/kbdd
<strong>[jpereira@jiraya ~]$</strong> cd ~/tmp/kbdd/
<strong>[jpereira@jiraya kbdd]$</strong> export CVSROOT=":pserver:anoncvs@anoncvs.handhelds.org:/cvs"
<strong>[jpereira@jiraya kbdd]$</strong> cvs login
Logging in to :pserver:anoncvs@anoncvs.handhelds.org:2401/cvs
CVS password: anoncvs
<strong>[jpereira@jiraya kbdd]$</strong> cvs co apps/kbdd
<strong>[jpereira@jiraya kbdd]$</strong> cd apps/kbdd/
<strong>[jpereira@jiraya kbdd]$</strong> make</pre>
<p>2) Ative o esquema de &#8220;discovery&#8221; do teclado, e no Linux inicie a busca pelo dispositivo em seguida atache o endereço MAC do seu teclado bluetooth a uma porta serial e em seguida inicialize o serviço. (Quando pedir a senha do bluetooth, utilize a senha padrão dele &#8220;0000&#8243;)</p>
<pre><strong>[jpereira@jiraya kbdd]$</strong> sudo hcitool scan
Scanning ...
00:0A:3A:06:09:B0       BT-FoldableKB
<strong>[jpereira@jiraya kbdd]$</strong> sudo rfcomm bind 0 00:0A:3A:06:09:B0
<strong>[jpereira@jiraya kbdd]$ </strong>sudo modprobe uinput
<strong>[jpereira@jiraya kbdd]$</strong> ./kbdd -p /dev/rfcomm0 -t btfoldable &amp;</pre>
<p>OBS: Fiz diversas alterações no <a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank"><em>kbdd</em></a>, inclusive adicionei a possibilidade de iniciar o <a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank"><em>kbdd</em></a> como <em>daemon</em>, adicionei flag de compilação para o N770, entre outras coisas. Caso queira utilizar a versão alterada basta aplicar este <a href="http://blog.jorgepereira.com.br/wp-content/dist/patchs/kbdd-jorgepereira.patch">patch</a>. Inclusive conversei  com um dos autores por e-mail que retornou positivamente as melhorias feitas no <a href="http://www.handhelds.org/moin/moin.cgi/kbdd" target="_blank"><em>kbdd</em></a>, creio que logo mais já vai estar disponível no cvs do projeto tais alterações! Assim que eu receber meu N800 e tiver com tempinho livre vou trabalhar nele para melhorar outras coisas, inclusive a possibilidade de uso do D-bus na comunicação com a parte de <em>input</em> das teclas!</p>
<p>Abaixo segue os passos para caso queira experimentar a versão alterada! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<pre><strong>[jpereira@jiraya ~]$</strong> mkdir -p ~/tmp/kbdd
<strong>[jpereira@jiraya ~]$</strong> cd ~/tmp/kbdd/
<strong>[jpereira@jiraya kbdd]$</strong> export CVSROOT=":pserver:anoncvs@anoncvs.handhelds.org:/cvs"
<strong>[jpereira@jiraya kbdd]$</strong> cvs login
Logging in to :pserver:anoncvs@anoncvs.handhelds.org:2401/cvs
CVS password: anoncvs
<strong>[jpereira@jiraya kbdd]$</strong> cvs co apps/kbdd
<strong>[jpereira@jiraya kbdd]$</strong> cd apps/kbdd/
<strong>[jpereira@jiraya kbdd]$</strong> wget http://blog.jorgepereira.com.br/wp-content/dist/patchs/kbdd-jorgepereira.patch
<strong>[jpereira@jiraya kbdd]$</strong> patch -p0 &lt; kbdd-jorgepereira.patch
<strong>[jpereira@jiraya kbdd]$</strong> make HAVE_FORK=1
<strong>[jpereira@jiraya kbdd]$</strong> ./kbdd -p /dev/rfcomm0 -t btfoldable -b</pre>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/05/05/linux-keyboard-hpipaq-bluetooth-foldable-keyboard/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>- Alagoas Digital 2009 &#8211; Resenha</title>
		<link>http://blog.jorgepereira.com.br/2009/04/24/alagoas-digital-2009-resenha/</link>
		<comments>http://blog.jorgepereira.com.br/2009/04/24/alagoas-digital-2009-resenha/#comments</comments>
		<pubDate>Fri, 24 Apr 2009 03:43:31 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[Palestras]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=742</guid>
		<description><![CDATA[Conforme o post sobre o Alagoas Digital, e depois de praticamente três semanas, aqui estou eu falando sobre como foi o evento! Mesmo sendo um evento voltado mais para o público corporativo conseguiu ser de grande qualidade o espaço reservado para assuntos voltados ao Software Livre, uma estrutura muito legal com salas confortáveis e equipamentos [...]]]></description>
			<content:encoded><![CDATA[<p>Conforme o <a href="http://blog.jorgepereira.com.br/2009/03/04/alagoas-digital-2009/" target="_blank"><em>post</em></a> sobre o <a href="http://www.alagoasdigital.com.br/" target="_blank"><em>Alagoas Digital</em></a>, e depois de praticamente três semanas, aqui estou eu falando sobre como foi o evento!</p>
<p>Mesmo sendo um evento voltado mais para o público corporativo conseguiu ser de grande qualidade o espaço reservado para assuntos voltados ao <em>Software Livre</em>, uma estrutura muito legal com salas confortáveis e equipamentos de primeira linha em todos auditórios, resumindo! o evento foi muito legal!</p>
<p>Sem falar que por ter sido convidado fiquei praticamente uma semana de férias em alagoas no hotel <em>Ponta Verde</em> que foi custeado pela organização do evento, tive a oportunidade de rever meu grande brother <a href="http://www.bani.com.br/" target="_blank">Jonh Wendell</a> que me deu grande suporte para me situar pela cidade, pois até então nunca havia ido a Maceió! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-744" title="Que vidinha mais ou menos..." src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/04/dsc00014.jpg" alt="Que vidinha mais ou menos..." width="533" height="400" /></p>
<p style="text-align: center;">Vista do elevador panorâmico do hotel, que vidinha +/-! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-745" title="Eu, Karlisson e Jonh" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/04/dsc00015.jpg" alt="Eu, Karlisson e Jonh" width="533" height="400" /></p>
<p style="text-align: center;">Eu, Karlisson e o Jonh durante abertura do evento no auditório!</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-746" title="Eu, Cárlisson, Jonh e Karlisson" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/04/dsc00017.jpg" alt="Eu, Cárlisson, Jonh e Karlisson" width="533" height="400" /></p>
<p style="text-align: center;">Rodizio de carnes básico!</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-747" title="Eu e Jonh na frente do auditorio!" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/04/dsc00074.jpg" alt="Eu e Jonh na frente do auditorio!" width="533" height="711" /></p>
<p style="text-align: center;">Inovação Acadêmica e Projetos de Software Livre</p>
<p>Conforme foi me passado que o evento seria algo mais corporativo, procurei abordar os principais pontos relacionados sobre <a href="http://blog.jorgepereira.com.br/wp-content/uploads/2009/04/linux-em-sistemas-moveis-e-embarcados_jorgepereira.pdf" target="_blank"><em>O Linux em Sistemas Móveis e Embarcados</em></a>, link para o slide <a href="http://blog.jorgepereira.com.br/wp-content/uploads/2009/04/linux-em-sistemas-moveis-e-embarcados_jorgepereira.pdf" target="_blank">aqui</a>.</p>
<p>Resumindo, a cidade e bem tranquila com praias bem legais&#8230; vários barzinhos entre eles o tão falado <a href="http://www.maikaimaceio.com.br/" target="_blank"><em>Maikai</em></a>! Conheci o cara das tirinhas do <a href="http://www.nerdson.com/" target="_blank">nerdson.com</a>, grande <a href="http://www.nerdson.com/" target="_blank">Karlisson</a>&#8230; além de ter conhecido uma outra grande figura o famoso <a href="http://bardo.castelodotempo.com/" target="_blank"><em>Cárlisson</em></a>, cara responsável por criar diversos repentes bem legais!</p>
<p>Parabenizar a todos envolvidos no evento e espero ser convidado novamente para a próxima edição em 2010! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/04/24/alagoas-digital-2009-resenha/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>- Nostalgia, como o tempo passa!</title>
		<link>http://blog.jorgepereira.com.br/2009/03/28/nostalgia-como-o-tempo-passa/</link>
		<comments>http://blog.jorgepereira.com.br/2009/03/28/nostalgia-como-o-tempo-passa/#comments</comments>
		<pubDate>Sat, 28 Mar 2009 23:30:20 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[nostlaugia]]></category>
		<category><![CDATA[revistas]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=725</guid>
		<description><![CDATA[Desde quando tive meu primeiro contato com o Linux entre 96 e 97 em que utilizava o Slackware 3.0 como primeira distribuição Linux seguida do RedHat, Mandrake, Conectiva e ficando até os dias de hoje somente entre Debian conseqüentemente  migrando para o Ubuntu. Fui armazenando e chegando a conclusão que minha casa virou um cemitério [...]]]></description>
			<content:encoded><![CDATA[<p>Desde quando tive meu primeiro contato com o Linux entre 96 e 97 em que utilizava o Slackware 3.0 como primeira distribuição Linux seguida do RedHat, Mandrake, Conectiva e ficando até os dias de hoje somente entre Debian conseqüentemente  migrando para o Ubuntu. Fui armazenando e chegando a conclusão que minha casa virou um cemitério de CD&#8217;s de distribuições antigas, organizando minha bagunça a alguns dias atrás re-encontrei um porta cd repleto com aproximadamente 200 cd&#8217;s contendo distribuições Linux, pois naquela época só existia conexão discada e era uma tarefa nada agradável fazer download de uma ISO contendo em média 650Mb ~ 700Mb.</p>
<p>Entre a coleção de velharia eu encontrei a &#8220;Revista do Linux&#8221; (Edição 1° &#8211; 1999) guardadinha sem nenhum amasso acompanhada de mais diversas edições, assim como tantas outras edições &#8220;PC Master&#8221;. Essas revistas eram a agrande salvação pois sempre acompanhava uma distribuições diferente a cada edição!</p>
<blockquote>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-729" title="Revista do Linux - Edição 01" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/03/revistadolinux-1.jpg" alt="Revista do Linux - Edição 01" width="300" height="400" /> 1999 &#8211; Edição 1°  da <em>&#8220;Revista do Linux&#8221;</em></p>
</blockquote>
<blockquote>
<p style="text-align: center;"><img class="size-full wp-image-727 aligncenter" title="Primeira edição da &quot;Linux Actual&quot;" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/03/linux-actual.jpg" alt="Primeira edição da &quot;Linux Actual&quot;" width="300" height="400" />1998 &#8211; Edição 1° da revista Portuguesa <em>&#8220;Linux Actual&#8221;</em>.</p>
</blockquote>
<blockquote>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-728" title="Old Distros..." src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/03/old-distros.jpg" alt="Old Distros..." width="300" height="400" />Mídias do <em>Fedora Core 1, RedHat 6.0/6.2, Ubuntu 4.10 (Primeira versão) e o Debian 2.rc2</em></p>
</blockquote>
<blockquote>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-726" title="Conectiva 5.0" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/03/conectiva50.jpg" alt="Conectiva 5.0" width="400" height="300" />Mídia original do<em> &#8220;Conectiva Linux 5.0&#8243;</em></p>
</blockquote>
<blockquote>
<p style="text-align: left;">Lembro que no inicio de tudo quando resolvi aprender sobre Linux foi necessário muitas madrugadas&#8230; muita ralação para aprender sobre particionamento, utilização do fips, problemas com gerenciamento de memória, lembro que fiquei por volta de dois meses somente usando o terminal pois não existia driver para minha placa de video sis650, sem esquecer das várias brigas com o modem hsp56 pctel para tentar entrar na internet, etc&#8230;etc&#8230; depois de tudo isso chego a conclusão que estou ficando velho ou tempo que passou muito rápido?</p>
<p style="text-align: left;">Abraços! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
</blockquote>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/03/28/nostalgia-como-o-tempo-passa/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>- GNOME 2.26 Lançado!</title>
		<link>http://blog.jorgepereira.com.br/2009/03/19/gnome-226-lancado/</link>
		<comments>http://blog.jorgepereira.com.br/2009/03/19/gnome-226-lancado/#comments</comments>
		<pubDate>Thu, 19 Mar 2009 22:32:13 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[GTK]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[GNOME]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=661</guid>
		<description><![CDATA[Mais uma versão direto do forno!]]></description>
			<content:encoded><![CDATA[<p><a href="http://library.gnome.org/misc/release-notes/2.26/" target="_blank"><img class="aligncenter" src="http://blog.krix.com.br/wp-content/uploads/imagens_posts/logos/GNOME_2.26.png" alt="" width="500" height="167" /></a>Mais uma versão direto do forno! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/03/19/gnome-226-lancado/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>- Bossa conference 2009 &#8211; Eu vou!</title>
		<link>http://blog.jorgepereira.com.br/2009/02/28/bossa-conference-2009-eu-vou/</link>
		<comments>http://blog.jorgepereira.com.br/2009/02/28/bossa-conference-2009-eu-vou/#comments</comments>
		<pubDate>Sat, 28 Feb 2009 06:20:59 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Eventos]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[bossaconference]]></category>
		<category><![CDATA[indt]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=612</guid>
		<description><![CDATA[Pois bem, Complementando o post que fiz falando sobre o evento em  Setembro do ano passado, aqui estou eu novamente! Escrevendo mais uma vez sobre o BossaConference. Pois estando a menos de duas semanas de um dos melhores eventos da atualidade relacionado a assuntos do mundo OpenSource, mais uma vez indo prestigiar o evento através [...]]]></description>
			<content:encoded><![CDATA[<p>Pois bem,</p>
<p>Complementando o post que fiz falando sobre o evento em  <em><a href="http://blog.jorgepereira.com.br/2008/09/30/bossa-conference-2009/" target="_blank">Setembro do ano passado</a></em>, aqui estou eu novamente! Escrevendo mais uma vez sobre o <em>BossaConference.</em> Pois estando a menos de duas semanas de um dos melhores eventos da atualidade relacionado a assuntos do mundo <em>OpenSource</em>, mais uma vez indo prestigiar o evento através da <a href="http://www.cesar.org.br" target="_blank">empresa que trabalho</a> juntamente com um companheiro de trabalho chamado Fábio Urquiza, estaremos lá logo mais!! Interessante que nesta edição irá ter inicio no dia 08/03, dia do meu aniversário! bem que poderia ter ganho a inscrição VIP por ser aniversariante! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://www.bossaconference.org/" target="_blank"><img class="aligncenter" src="http://blog.jorgepereira.com.br/wp-content/uploads/2008/10/bossa2009.png" border="0" alt="" /></a></p>
<p>Detalhe que a algum tempo atrás estava conversando sobre o evento com o <em><a href="http://blog.kov.eti.br/" target="_blank">Gustavo Noronha (kov)</a></em> e ele havia ficado de se organizar para vir para o evento. Quando foi a algumas semanas atrás ele disse que viria, combinamos para ficar no mesmo hotel, e como estarei partindo no próximo dia 07/03 combinei de ir buscar ele no Aeroporto e de lá partir para <em><a href="http://pt.wikipedia.org/wiki/Praia_do_Porto_de_Galinhas" target="_blank">Porto de Galinhas</a></em>(local do evento). Como durante esses dias Recife e demais regiões tem recebido fortes pancadas de chuvas, espero que ao menos no sábado tenhamos um dia com muito sol para aproveitar a praia comendo peixe frito com algumas Skols bem gelada! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Para aqueles que forem, nos vemos lá! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p>OBS: Caso você queira ir para o evento com um desconto na faixa pagando apenas R$150, entre em contato RAPIDAMENTE com um amigo chamado Jesus &lt;jesus.palencia@openbossa.org&gt;, ele irá lhe ajudar! (Não e zueira, o nome dele realmente e Jesus! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' />  )</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/02/28/bossa-conference-2009-eu-vou/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>- Diferenças entre Glibc x uClibc</title>
		<link>http://blog.jorgepereira.com.br/2009/01/26/diferencas-entre-glibc-x-uclibc/</link>
		<comments>http://blog.jorgepereira.com.br/2009/01/26/diferencas-entre-glibc-x-uclibc/#comments</comments>
		<pubDate>Mon, 26 Jan 2009 10:01:12 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[glibc]]></category>
		<category><![CDATA[uclib]]></category>
		<category><![CDATA[uclinux]]></category>
		<category><![CDATA[wrt54g]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=92</guid>
		<description><![CDATA[Esses dias estava conversando com um amigo sobre um projeto simples utilizando uClinux / uClibc em um dispositivo WRT54g, quando também falamos sobre algumas peculiaridades em relação ao uso da Glibc e uClibc. Para aqueles que nunca tiveram lido sobre o assunto e tem curiosidade, uma dica seria o texto abaixo, pois irá ter uma [...]]]></description>
			<content:encoded><![CDATA[<p>Esses dias estava conversando com um amigo sobre um projeto simples utilizando <a href="http://www.uclinux.org" target="_blank"><em>uClinux</em></a> / <a href="http://www.uclibc.org/" target="_blank"><em>uClibc</em></a> em um dispositivo <em><a href="http://en.wikipedia.org/wiki/Linksys_WRT54G_series" target="_blank">WRT54g</a></em>, quando também falamos sobre algumas peculiaridades em relação ao uso da <a href="http://pt.wikipedia.org/wiki/GNU_C_Library" target="_blank"><em>Glibc</em></a> e <a href="http://www.uclibc.org/" target="_blank"><em>uClibc.</em></a> Para aqueles que nunca tiveram lido sobre o assunto e tem curiosidade, uma dica seria o texto abaixo, pois irá ter uma idéia sobre as principais diferenças entre as duas bibliotecas.  <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_biggrin.gif' alt=':grin:' class='wp-smiley' /> </p>
<p style="text-align: center;"><a href="http://www.uclibc.org/downloads/Glibc_vs_uClibc_Differences.txt" target="_blank">Glibc x uClibc<br />
</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/01/26/diferencas-entre-glibc-x-uclibc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>- Checando processos com a libproc</title>
		<link>http://blog.jorgepereira.com.br/2009/01/13/checando-processos-com-a-libproc/</link>
		<comments>http://blog.jorgepereira.com.br/2009/01/13/checando-processos-com-a-libproc/#comments</comments>
		<pubDate>Tue, 13 Jan 2009 17:18:44 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[Add new tag]]></category>
		<category><![CDATA[c/c++]]></category>
		<category><![CDATA[procps]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=421</guid>
		<description><![CDATA[Creio que quase todas as pessoas que utilizam Linux tiveram a necessidade de utilizar algum dos comandos kill, killall, ps, pgrep,&#8230; entre tantos outros programas que fazem parte do pacote procps[1]. Justamente a minha necessidade foi diferente, estava precisando em algum momento verificar se um determinado executável estava em execução na lista de processos, foi [...]]]></description>
			<content:encoded><![CDATA[<p>Creio que quase todas as pessoas que utilizam Linux tiveram a necessidade de utilizar algum dos comandos <em>kill, killall, ps, pgrep</em>,&#8230; entre tantos outros programas que fazem parte do pacote procps[1].</p>
<p>Justamente a minha necessidade foi diferente, estava precisando em algum momento verificar se um determinado executável estava em execução na lista de processos, foi desta forma que baixei o código fonte do pacote procps e fui da uma olhada para entender sua API que por sinal não existe nenhuma documentação! isto mesmo, existe apenas o pacote <em>procps</em> e o <em>procps-devel</em> que possui os headers utilizado para a acessar os métodos existentes na <em>libproc</em> (geralmente em /lib/libproc.so) conforme abaixo.</p>
<p><strong>[jpereira@jiraya codes]$</strong> ls -1 /usr/include/procps/<br />
alloc.h<br />
devname.h<br />
escape.h<br />
procps.h<br />
pwcache.h<br />
readproc.h<br />
sig.h<br />
slab.h<br />
sysinfo.h<br />
version.h<br />
wchan.h<br />
whattime.h<br />
<strong>[jpereira@jiraya codes]$</strong></p>
<p>Desta forma segue um simples código de exemplo utilizado para verificar se o programa especifico passado como parâmetro está em execução.</p>
<pre class="brush:csharp">/**
 * Autor: Jorge Pereira &lt;jpereiran@gmail.com&gt;
 * Data:  Ter Jan 13 14:29:29 BRST 2009
 * Desc:  Simples aplicacao utilizada para verificar se existe um
 * processo em execucao utilizando a procps (libproc)
 *
 * Build: gcc -o checkps checkps.c -lproc
 **/
#include &lt;string.h&gt;
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;stddef.h&gt;
#include &lt;stdbool.h&gt;

#include &lt;readproc.h&gt;

bool check_process(const char *proc)
{
	int32_t flags = 0;
	PROCTAB *ptp  = NULL;
	bool 	 st   = false;
	proc_t task;

	memset(&amp;task, 0, sizeof (task));

	if (!proc || strlen(proc) &lt; 1)
		return false;

	flags = PROC_FILLCOM | PROC_FILLSTATUS;

	if ((ptp = openproc (flags)) == NULL)
		return false;

	while(!st &amp;&amp; readproc(ptp, &amp;task))
	{
        const char *cmd = (task.cmdline != NULL) ? task.cmdline[0] : task.cmd;

		st = !strncmp(proc, cmd, strlen(proc));
		memset (&amp;task, 0, sizeof (task));
	}

	closeproc (ptp);

    return st;
}

int main (int argc, char *argv[])
{
    if (argc &lt; 2)
    {
        printf ("Usage: %s &lt;nome do processo&gt;\n", argv[0]);
        exit(EXIT_SUCCESS);
    }

    printf("O Programa (%s) %sesta em execucao\n", argv[1], check_process(argv[1]) ? "" : "nao ");

    return EXIT_SUCCESS;
}</pre>
<p>Baixando este código de exemplo, compilando e fazendo uma checagem se existe o processo &#8220;dbus-launch&#8221; em execução! <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
<p><strong>[jpereira@jiraya tmp]$</strong><strong> </strong>wget http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2009/01/checkps.c<strong><br />
</strong><strong>[jpereira@jiraya tmp]$</strong><strong> </strong>gcc -o checkps checkps.c -lproc<strong><br />
</strong><strong>[jpereira@jiraya tmp]$</strong> ./checkps dbus-launch<strong><br />
</strong>O Programa (<em>dbus-launch</em>) está em execução<strong><br />
</strong><strong>[jpereira@jiraya tmp]$</strong><strong> </strong>./checkps dbus-lanche<strong><br />
</strong>O Programa (<em>dbus-lanche</em>) não está em execução<strong><br />
</strong><strong>[jpereira@jiraya tmp]$</strong><strong><br />
</strong></p>
<ul>
<li><a href="http://procps.sourceforge.net/" target="_blank">Mais informações sobre o procps</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/01/13/checando-processos-com-a-libproc/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>- Depurando bibliotecas dinamicas no Linux</title>
		<link>http://blog.jorgepereira.com.br/2009/01/07/depurando-bibliotecas-dinamicas-no-linux/</link>
		<comments>http://blog.jorgepereira.com.br/2009/01/07/depurando-bibliotecas-dinamicas-no-linux/#comments</comments>
		<pubDate>Wed, 07 Jan 2009 14:24:56 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[depuração]]></category>
		<category><![CDATA[ld]]></category>
		<category><![CDATA[linker]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=412</guid>
		<description><![CDATA[Durante desenvolvimento do projeto que faço parte aqui na empresa, tive necessidade de fazer uma depuração de todas as funções chamadas externamente a partir de bibliotecas dinâmicas. Então para aqueles que não conhecem tal recurso existente na glibc, abaixo um exemplo utilizando o comando ls como alvo da depuração. 1) Devemos utilizar a variável de [...]]]></description>
			<content:encoded><![CDATA[<p>Durante desenvolvimento do projeto que faço parte aqui na empresa, tive necessidade de fazer uma depuração de todas as funções chamadas externamente a partir de bibliotecas dinâmicas. Então para aqueles que não conhecem tal recurso existente na <em>glibc</em>, abaixo um exemplo utilizando o comando <strong><em>ls</em></strong> como alvo da depuração.</p>
<p>1) Devemos utilizar a variável de ambiente <strong><em>LD_DEBUG</em></strong>, primeiramente iremos utilizar passando o parâmetro <strong><em>help</em></strong> para em seguida utilizar de acordo com a necessidade!</p>
<pre><strong>[root@jiraya ~]#</strong> export LD_DEBUG=help
<strong>[root@jiraya ~]#</strong> ls
Valid options for the LD_DEBUG environment variable are:

libs        display library search paths
reloc       display relocation processing
files       display progress for input file
symbols     display symbol table processing
bindings    display information about symbol binding
versions    display version dependencies
all         all previous options combined
statistics  display relocation statistics
unused      determined unused DSOs
help        display this help message and exit

To direct the debugging output into a file instead of standard output
a filename can be specified using the LD_DEBUG_OUTPUT environment variable.
<strong>[root@localhost ~]# </strong>export LD_DEBUG=libs
<strong>[root@localhost ~]#</strong> ls
5957:     find library=librt.so.1 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/i686/librt.so.1
5957:
5957:     find library=libacl.so.1 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/libacl.so.1
5957:
5957:     find library=libc.so.6 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/i686/libc.so.6
5957:
5957:     find library=libpthread.so.0 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/i686/libpthread.so.0
5957:
5957:     find library=libattr.so.1 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/libattr.so.1
5957:
5957:
5957:     calling init: /lib/i686/libpthread.so.0
5957:
5957:
5957:     calling init: /lib/i686/libc.so.6
5957:
5957:
5957:     calling init: /lib/libattr.so.1
5957:
5957:
5957:     calling init: /lib/libacl.so.1
5957:
5957:
5957:     calling init: /lib/i686/librt.so.1
5957:
5957:
5957:     initialize program: ls
5957:
5957:
5957:     transferring control: ls
5957:
5957:     find library=libnss_files.so.2 [0]; searching
5957:      search cache=/etc/ld.so.cache
5957:       trying file=/lib/libnss_files.so.2
5957:
5957:
5957:     calling init: /lib/libnss_files.so.2
5957:
bin  get  hdparm.sh  he  he.c  seeker  src  tmp
<strong>[root@localhost ~]#</strong></pre>
<p>2) Caso queira enviar a saída da depuração para um arquivo, basta utilizar a variável de ambiente LD_DEBUG_OUTPUT, abaixo um exemplo de uma depuração completa com o modo <em><strong>all</strong></em> seguido de toda saída sendo enviada para o arquivo <strong><em>ls-debug-calls.log</em></strong></p>
<p><strong>[root@jiraya ~]#</strong> export LD_DEBUG_OUTPUT=ls-debug-calls.log<br />
<strong>[root@jiraya ~]#</strong> export LD_DEBUG=all<br />
<strong>[root@jiraya ~]#</strong> ls</p>
<p>3) Para desativar, basta simplesmente remover a variável de ambiente <strong><em>LD_DEBUG</em></strong> e se for o caso também a <strong><em>LD_DEBUG_OUTPUT</em></strong></p>
<p><strong>[root@jiraya ~]#</strong> unset LD_DEBUG<br />
<strong>[root@jiraya ~]#</strong> unset LD_DEBUG_OUTPUT<br />
<strong>[root@jiraya ~]#</strong> ls</p>
<p>Mais informações podem ser encontradas em <a href="http://tldp.org/HOWTO/Program-Library-HOWTO/" target="_blank"><em><strong>Program-Library-HOWTO</strong></em></a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2009/01/07/depurando-bibliotecas-dinamicas-no-linux/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>- Mandamentos do desenvolvedor UNIX</title>
		<link>http://blog.jorgepereira.com.br/2008/09/13/mandamentos-do-desenvolvedor-unix/</link>
		<comments>http://blog.jorgepereira.com.br/2008/09/13/mandamentos-do-desenvolvedor-unix/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 23:35:22 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[C/C++]]></category>
		<category><![CDATA[Linux]]></category>
		<category><![CDATA[unix]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=91</guid>
		<description><![CDATA[Ao decorrer deste POST você irá perceber que não tem os famosos dez mandamentos, e sim alguns passos! Porém a idéia e citar algumas obras para que os interessados sobre o assunto tenham como uma referência em seus estudos, uma citação seria Henry Spencer Coding Style [1]. Sem nenhuma sombra de dúvida, um dos guidelines [...]]]></description>
			<content:encoded><![CDATA[<p>Ao decorrer deste POST você irá perceber que não tem os famosos dez mandamentos, e sim alguns passos! Porém a idéia e citar algumas obras para que os interessados sobre o assunto tenham como uma referência em seus estudos, uma citação seria <em>Henry Spencer Coding Style</em> [1]. Sem nenhuma sombra de dúvida, um dos guidelines mais famoso de C e seu nome original é <em>&#8220;The Ten Commandments for C Programmers&#8221;</em>. Uma referência respeitada é &#8220;Annotated Edition&#8221; do próprio Spencer.</p>
<p>Alguns clássicos da cultura, história e literatura de C seria o famoso [2]. Assim como um outros mais genéricos [3][4] que inclui alguns clássicos do C++ e do OOP.</p>
<p>Porém o POST e específico sobre desenvolvimento Unix, a principio podemos começar por <a href="http://pt.wikipedia.org/wiki/Filosofia_Unix" target="_blank">Filosofia Unix</a> e lembrando que nos dias de hoje sempre estamos trabalhando com softwares e suas diversas licenças, sendo muito interessante e indispensável o conhecimento sobre as principais licenças[5] de softwares!</p>
<p>[1] <a href="http://www.quut.com/c/ten-commandments.html" target="_blank">The Ten Commandments for C Programmers</a><br />
[2] <a href="http://www.quut.com/c/" target="_blank">Programming in C</a><a href="http://www.quut.com/c/" target="_blank"></a><br />
[3] <a href="http://www.mycplus.com/Programming-Tutorials-Index.asp" target="_blank">http://www.mycplus.com/Programming-Tutorials-Index.asp</a><br />
[4] <a href="http://www.di-mgt.com.au/cprog.html" target="_blank">http://www.di-mgt.com.au/cprog.html</a><br />
[5] <a href="http://blog.jorgepereira.com.br/2006/10/15/entendendo-o-softwarelivre/" target="_blank">http://blog.jorgepereira.com.br/2006/10/15/entendendo-o-softwarelivre/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2008/09/13/mandamentos-do-desenvolvedor-unix/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>- Debugando com o GDB</title>
		<link>http://blog.jorgepereira.com.br/2008/06/05/debugando-com-o-gdb/</link>
		<comments>http://blog.jorgepereira.com.br/2008/06/05/debugando-com-o-gdb/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 13:40:12 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Debug]]></category>
		<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/?p=76</guid>
		<description><![CDATA[Bem, Acredito que todos que trabalham com desenvolvimento utilizando o Linux, já precisaram depurar algum trecho de código, e todos sabem que para quem não tem muito costume ele não e muito &#8220;amigável&#8221;. então segue abaixo link com tutorial e alguns arquivos de configuração contendo atalhos entre outras funções que com certeza irá ajudar muito [...]]]></description>
			<content:encoded><![CDATA[<p>Bem,</p>
<p>Acredito que todos que trabalham com desenvolvimento utilizando o Linux, já precisaram depurar algum trecho de código, e todos sabem que para quem não tem muito costume ele não e muito &#8220;amigável&#8221;. então segue abaixo  link com tutorial e alguns arquivos de configuração contendo atalhos entre outras funções que com certeza irá ajudar muito na hora de depurar.</p>
<p style="text-align: center;"><img class="aligncenter size-full wp-image-338" src="http://blog.jorgepereira.com.br/jorge/wp-content/uploads/2008/10/goboom-bug.png" alt="" width="200" height="200" /></p>
<p>Abaixo segue alguns exemplos de configuração do GDB, lembrando que deverá ser salvo em <strong>~/.gdbinit</strong>, caso queira ter como configuração padrão. do contrário basta utilizar o gdb passando o parâmetro <strong>-command</strong>,</p>
<p>Ex: gdb -command=<strong>gdbinit.txt</strong></p>
<ul>
<li><a href="http://www.kernsh.org/repo/gdbinit.txt" target="_blank">http://www.kernsh.org/repo/gdbinit.txt</a></li>
<li><a href="http://tinderbox.x86.dev.gentoo.org/misc/dot.gdbinit" target="_blank">http://tinderbox.x86.dev.gentoo.org/misc/dot.gdbinit</a></li>
<li><a href="http://dotfiles.org/%7Emkfs/.gdbinit" target="_blank">http://dotfiles.org/~mkfs/.gdbinit</a></li>
</ul>
<p>Excelentes tutoriais sobre GDB</p>
<ul>
<li><a href="http://www.linuxtopia.org/online_books/redhat_linux_debugging_with_gdb/" target="_blank">http://www.linuxtopia.org/online_books/redhat_linux_debugging_with_gdb/</a></li>
<li><a href="http://www.dirac.org/linux/gdb/" target="_blank">http://www.dirac.org/linux/gdb/</a></li>
<li><a href="http://www.arl.wustl.edu/~fredk/Courses/Docs/gdb.pdf" target="_blank">http://www.arl.wustl.edu/~fredk/Courses/Docs/gdb.pdf</a></li>
<li><a href="http://www.arl.wustl.edu/~fredk/Courses/Docs/gdb_refcard.pdf" target="_blank">http://www.arl.wustl.edu/~fredk/Courses/Docs/gdb_refcard.pdf</a></li>
<li><a href="http://www.arl.wustl.edu/~fredk/Courses/Docs/gdbint.pdf">http://www.arl.wustl.edu/~fredk/Courses/Docs/gdbint.pdf</a></li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2008/06/05/debugando-com-o-gdb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>- Os últimos 10 comandos mais utilizados</title>
		<link>http://blog.jorgepereira.com.br/2008/04/13/os-ultimos-10-comandos-mais-utilizados/</link>
		<comments>http://blog.jorgepereira.com.br/2008/04/13/os-ultimos-10-comandos-mais-utilizados/#comments</comments>
		<pubDate>Mon, 14 Apr 2008 00:53:34 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Linux]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/2008/04/13/os-ultimos-20-comandos-mais-utilizados/</guid>
		<description><![CDATA[Navegando outro dia encontrei o blog de um cara (na qual não recordo a URL, sorry!) e ele mencionava a lista dos últimos comandos mais utilizados no momento do POST, achei interessante e aqui segue a lista dos mes últimos 10 mais utilizados. E você? quais são os seus últimos 10 comandos? root@jaspion ~ # [...]]]></description>
			<content:encoded><![CDATA[<p>Navegando outro dia encontrei o blog de um cara (na qual não recordo a URL, sorry!) e ele mencionava a lista dos últimos comandos mais utilizados no momento do POST, achei interessante e aqui segue a lista dos mes últimos 10 mais utilizados. E você? quais são os seus últimos 10 comandos? <img src='http://blog.jorgepereira.com.br/jorge/wp-includes/images/smilies/icon_razz.gif' alt=':P' class='wp-smiley' /> </p>
<p><strong>root@jaspion ~ #</strong> history | awk &#8216;{ a[$2]++ } END{ for(i in a) { print a[i] &#8221; &#8221; i} }&#8217; | sort -rn | head<br />
69 ls<br />
48 cat<br />
34 cd<br />
29 rm<br />
21 ps<br />
21 gcc<br />
21 apt-get<br />
19 vi<br />
16 apt-search<br />
14 sudo<br />
<strong>root@jaspion ~ #</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2008/04/13/os-ultimos-10-comandos-mais-utilizados/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>- Comunicação entre processos em plataforma Linux e Win32</title>
		<link>http://blog.jorgepereira.com.br/2007/06/15/comunicacao-entre-processos-em-plataforma-linux-e-win32/</link>
		<comments>http://blog.jorgepereira.com.br/2007/06/15/comunicacao-entre-processos-em-plataforma-linux-e-win32/#comments</comments>
		<pubDate>Fri, 15 Jun 2007 17:51:17 +0000</pubDate>
		<dc:creator>jpereira</dc:creator>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Outros]]></category>
		<category><![CDATA[ipc]]></category>
		<category><![CDATA[win32]]></category>

		<guid isPermaLink="false">http://blog.jorgepereira.com.br/2007/06/15/comunicacao-entre-processos-em-plataforma-linux-e-win32/</guid>
		<description><![CDATA[Um excelente artigo falando sobre o funcionamento, diferença e uso de recursos relacionados a IPC na plataforma Linux e Win32. Port Windows IPC apps to Linux, Part 1, 2 e 3 Para quem não saiba o que e IPC, basta da uma olhada aqui.]]></description>
			<content:encoded><![CDATA[<p>Um excelente artigo falando sobre o funcionamento, diferença e uso de recursos relacionados a IPC na plataforma Linux e Win32.</p>
<ul>
<li>Port Windows IPC apps to Linux, Part <a href="http://www.ibm.com/developerworks/linux/library/l-ipc2lin1.html" target="_blank">1</a>, <a href="http://www.ibm.com/developerworks/linux/library/l-ipc2lin2.html" target="_blank">2</a> e <a href="http://www.ibm.com/developerworks/linux/library/l-ipc2lin3.html" target="_blank">3</a></li>
</ul>
<p>Para quem não saiba o que e <strong>IPC</strong>, basta da uma olhada <a href="http://pt.wikipedia.org/wiki/Inter-Process_Communication" target="_blank">aqui</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.jorgepereira.com.br/2007/06/15/comunicacao-entre-processos-em-plataforma-linux-e-win32/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
