Query about cplusplus in linkage.h

Baruch Siach baruch at tkos.co.il
Mon Nov 22 03:30:10 EST 2010


Hi rocky,

On Sat, Nov 20, 2010 at 12:17:02PM +0800, rocky wrote:
> I am a little confused about the following definition :
> 
> --------------include/linux/linkage.h-----------
> #ifdef __cplusplus
> #define CPP_ASMLINKAGE extern "C"
> #else
> #define CPP_ASMLINKAGE
> #endif
> 
> #ifndef asmlinkage
> #define asmlinkage CPP_ASMLINKAGE
> #endif
> 
> all system call functions are marked with asmlinkage, as well as other kernel function like printk/schedule/do_softirq
> 
> 
> so every asmlinkage function has extern "C"  attribute if cplusplus is defined, which definitely happens  when compiling C++ code.
> 
> I dont get it when cplusplus is needed when compiling kernel?

It isn't.

> Can anyone help me out of this little misunderstanding?

Userspace C++ code may include kernel header files. Making the exported 
function calls extern "C" makes it easier to build such applications.

baruch

-- 
                                                     ~. .~   Tk Open Systems
=}------------------------------------------------ooO--U--Ooo------------{=
   - baruch at tkos.co.il - tel: +972.2.679.5364, http://www.tkos.co.il -



More information about the linux-arm-kernel mailing list