Re: doubt about "switch" - default case in af_inet.c

From: linux-os
Date: Thu Dec 09 2004 - 09:14:14 EST


On Thu, 9 Dec 2004, Phani Kandula wrote:

Hi all,

I'm a newbie to the Linux. I'm using 2.6.8 kernel.
In /usr/src/linux/net/ipv4/af_inet.c I came across this...
<code>
switch (sock->state) {
default:
//do something..
goto out;
case SS_CONNECTED:
//do something..
goto out;
case SS_CONNECTING:
//do something..
break;
case SS_UNCONNECTED:
//do something..
break;
}
</code>

Is there any advantage in having 'default' as the first case?
My understanding is that it will be useful only when 'default' is the
most likely case (in general).

Even then, my doubt: How will compiler (say gcc) implement 'default'
as the first value? Program is supposed to see all the cases and then
decide 'default'. Is this correct?

So, is this the best way to do it? please clarify..

Thanks,
Phani

Generally speaking when you see "strange" code mixed with gotos,
somebody has adjusted the code, often by looking at the assembly
output, to maximize the performance.

Of course, when the compiler changes, the code may no longer be
optimum.

In principle, if the labels in a switch represent incrementing
numbers, the compiler can generate fast code by using that fact.
However, often little care is taken in the placement of these
labels or the numerical differences between them so the code output
degenerates to a bunch of "compares". In this case, the most common
value should be the one checked first.

Cheers,
Dick Johnson
Penguin : Linux version 2.6.9 on an i686 machine (5537.79 BogoMips).
Notice : All mail here is now cached for review by John Ashcroft.
98.36% of all statistics are fiction.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/