ukazkove zdrojaky

Petr Stehlik pstehlik na sophics.cz
Pondělí Březen 6 14:20:37 CET 2006


Jan Kasprzak píše v Po 06. 03. 2006 v 14:14 +0100:
> Dalibor Straka wrote:
> : On Fri, Mar 03, 2006 at 10:06:46PM +0100, Jan Kasprzak wrote:
> : 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,
> 
> 	Krome jinych problemu na ktere uz tady bylo poukazano, bych rekl,
> ze se kompilatoru mozna nepodari tu promennou vyoptimalizovat (nehlede
> na to ze tento kod je mene citelny, protoze je delsi).

Tato verze osetreni chyb neresi dalsi bloky kodu, ktere se jiste
nachazeji na miste tri tecek. Bylo zminena potreba pridani "if (!out)"
pres return SUCCESS, ale ve skutecnosti by if (!out) bylo potreba
prakticky vsude, kde jsou ty tri tecky. Vysledkem by byl jeden dlouhy
retez ifoutů, coz by na citelnosti rozhodne nepridalo.

Petr




Další informace o konferenci Linux