Startup and Configuration

Configuration data and startup code for the kernel. More...

Detailed Description

Configuration data and startup code for the kernel.

Files

file  kernel_defines.h
 Common macros and compiler attributes/pragmas configuration.
 
file  kernel_init.h
 prototypes for kernel intitialization
 

Macros

#define container_of(PTR, TYPE, MEMBER)   ((TYPE *) ((char *) (PTR) - offsetof(TYPE, MEMBER)))
 Returns the container of a pointer to a member. More...
 
#define NORETURN
 The NORETURN keyword tells the compiler to assume that the function cannot return.
 
#define CONST
 A function declared as CONST is PURE and also not allowed to examine global memory. More...
 
#define PURE
 The function has no effects except the return value and its return value depends only on the parameters and/or global variables. More...
 
#define UNREACHABLE()   do { /* nothing */ } while (1)
 Tell the compiler that this line of code cannot be reached. More...
 
#define ALIGN_OF(T)   (offsetof(struct { char c; T t; }, t))
 Calculate the minimal alignment for type T. More...
 

Functions

void kernel_init (void)
 Initializes scheduler and creates main and idle task.
 

Macro Definition Documentation

◆ ALIGN_OF

#define ALIGN_OF (   T)    (offsetof(struct { char c; T t; }, t))

Calculate the minimal alignment for type T.

Parameters
[in]TType to examine
Returns
The minimal alignment of T.

Definition at line 115 of file kernel_defines.h.

◆ CONST

#define CONST

A function declared as CONST is PURE and also not allowed to examine global memory.

I.e. a CONST function cannot even dereference a pointer parameter.

Definition at line 80 of file kernel_defines.h.

◆ container_of

#define container_of (   PTR,
  TYPE,
  MEMBER 
)    ((TYPE *) ((char *) (PTR) - offsetof(TYPE, MEMBER)))

Returns the container of a pointer to a member.

For a struct TYPE with a member MEMBER, given a pointer PTR to TYPE::MEMBER this function returns a pointer to the instance of TYPE.

E.g. for struct my_struct_t { ...; something_t n; ... } my_struct;, &my_struct == container_of(&my_struct.n, struct my_struct_t, n).

Parameters
[in]PTRpointer to a member
[in]TYPEa type name (a struct or union), container of PTR
[in]MEMBERname of the member of TYPE which PTR points to
Returns
Pointer to the container of PTR.

Definition at line 56 of file kernel_defines.h.

◆ PURE

#define PURE

The function has no effects except the return value and its return value depends only on the parameters and/or global variables.

Such a function can be subject to common subexpression elimination and loop optimization just as an arithmetic operator would be.

Definition at line 93 of file kernel_defines.h.

◆ UNREACHABLE

#define UNREACHABLE ( )    do { /* nothing */ } while (1)

Tell the compiler that this line of code cannot be reached.

Most useful in junction with NORETURN. Use this if the compiler cannot tell that e.g. an assembler instruction causes a longjmp, or a write causes a reboot.

Definition at line 106 of file kernel_defines.h.