Prototype for Init in confdefs.h

Chris Johns chrisj at rtems.org
Sat Oct 11 01:13:13 UTC 2014


On 10/10/2014 9:17 pm, Sebastian Huber wrote:
> Hello,
>
> what was the reason for this change?
>

Maybe commit 2549b4d9a83d310e32329255a5a02604eb9e028b ?

> commit d8b74dbebd341073f0c5b03e589d3fcd349745d1
> Author: Chris Johns <chrisj at rtems.org>
> Date:   Tue Apr 28 06:39:24 2009 +0000
>
>      2009-04-28      Chris Johns <chrisj at rtems.org>
>
>              * sapi/include/confdefs.h: Add a prototype for Init with C
> linkage
>              and define Init task command line arguments if confdefs.h
> provides
>              an Init entry point.
>
> diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog
> index 9432abc..477ce23 100644
> --- a/cpukit/ChangeLog
> +++ b/cpukit/ChangeLog
> @@ -1,3 +1,9 @@
> +2009-04-28     Chris Johns <chrisj at rtems.org>
> +
> +       * sapi/include/confdefs.h: Add a prototype for Init with C linkage
> +       and define Init task command line arguments if confdefs.h provides
> +       an Init entry point.
> +
>   2009-04-15     Ralf Corsepius <ralf.corsepius at rtems.org>
>
>          * configure.ac: Disable LIBSHELL for unix targets.
> diff --git a/cpukit/sapi/include/confdefs.h
> b/cpukit/sapi/include/confdefs.h
> index 7f7a1ca..b50ff01 100644
> --- a/cpukit/sapi/include/confdefs.h
> +++ b/cpukit/sapi/include/confdefs.h
> @@ -518,7 +518,16 @@ rtems_fs_init_functions_t    rtems_fs_init_helper =
>   #endif
>
>   #ifndef CONFIGURE_INIT_TASK_ENTRY_POINT
> +  #ifdef __cplusplus
> +  extern "C" {
> +  #endif
> +    rtems_task Init (rtems_task_argument );
> +  #ifdef __cplusplus
> +  }
> +  #endif
>     #define CONFIGURE_INIT_TASK_ENTRY_POINT   Init
> +  extern const char* bsp_boot_cmdline;
> +  #define CONFIGURE_INIT_TASK_ARGUMENTS     ((rtems_task_argument)
> &bsp_boot_cmdline)
>   #endif
>
>   #ifndef CONFIGURE_INIT_TASK_INITIAL_MODES
>
> This differs from the POSIX_Init treatment in the same file.  For C++
> this forces you to use a global Init function.  In C you can also define
> Init as static.  This is a bit confusing.

Why not provide CONFIGURE_INIT_TASK_ENTRY_POINT and it can be whatever 
linkage you like ?

I think the 'extern "C"' is not needed because there is another around 
everything. I do not think nesting them makes the code more C than C. :)

>At least Init and POSIX_Init should use similar definitions.

Sure.

I never use either constructs and use 'main'.

Chris



More information about the devel mailing list