ukazkove zdrojaky
Dalibor Straka
dast na panelnet.cz
Pátek Březen 3 22:40:13 CET 2006
On Fri, Mar 03, 2006 at 10:06:46PM +0100, Jan Kasprzak wrote:
> int mydev_probe(...)
> {
> if (!(mydev_priv = kmalloc(...))
> goto out1;
> ....
> if (!register_interrupt(...))
> goto out2;
> ....
> if (!register_chrdev(...))
> goto out3;
> ....
>
> return 0;
> out3:
> unregister_interrupt(...);
> out2:
> kfree(...);
> out1:
> return -ENODEV;
> }
>
> Pokud byste tohle psal bez goto, utopil byste se ve vnorenych
> blocich. A presne proto je v tomto miste goto rozumne a zvysujici citelnost.
Nic proti kernelu, ale neutopil
{
if (!out && !mydev_priv = kmalloc(...))
out = out1;
...
if (!out && !register_interrupt(...))
out = out2;
...
if (!out && !register_chrdev(...))
out = out3;
...
return SUCCESS;
switch(out){
case out3: unregister_interrupt(...); /* no break! */
case out2: kfree(...);
case out1: return -ENODEV;
}
}
Docela bych se vsadil, ze vysledny kod bude identicky,
-- Dalibor Straka
Další informace o konferenci Linux