static functions

Sepherosa Ziehau sepherosa at
Fri Apr 1 01:32:53 PST 2005

On Thu, 31 Mar 2005 17:44:34 +0200, Joerg Sonnenberger  
<joerg at xxxxxxxxxxxxxxxxx> wrote:

On Thu, Mar 31, 2005 at 05:36:11PM +0200, Miguel Mendez wrote:
On Thu, 31 Mar 2005 16:11:17 +0100
Jonathon McKitrick <jcm at xxxxxxxxxxxxxxxxx> wrote:
> Sorry this is such a lame question, but I never quite figured out what
> 'static' does to a function declaration.  Obviously for a variable, it
> allocates memory for the lifetime of the process rather than on the  
stack just
> for one function call.
Only for function scope variables.

>  But what about 'static' for all the kernel functions
> that have no return value?	
static foo(blah blah) restricts the scope of the function to that
module, i.e. it's not visible outside that .c file. You usually do that
to keep private functions from being called from somewhere else. That
way other parts of the program will only talk to the published API.
That's right. It's also what happens with file scope variables.

Beside keeping the namespace cleans, it allows the compiler to choose
a different ABI for internal functions. It also allows the compiler to
warn about unused local functions and variables.
Then `static __inline' also makes big macro less attractive ;-)

More information about the Kernel mailing list