It is the initialisation of a structure of type struct linux_binfmt
named elf_format
(with static
storage duration, meaning it exists for the lifetime of the program and is initialised exactly once), using syntax introduced in C99 that allows the specific structure member being initialised to be specified. Prior to C99 the initializer of a struct
required the values to be listed in the order the members are declared in the struct
.
For example:
struct struct_a { int a; char c; };
In C89 it was not possible to explicitly initialise c
only:
struct struct_a s = { 0, 'f' }; /* Have to provide an initial value for
'a', the 0, in order to provide an
initial value for 'c', the f. */
but in C99 the new syntax made it possible:
struct struct_a s = { .c = 'f' };
The types of struct
members:
lh
is of type struct list_head
, which is not explicitly initialised. lh
will be default initialised (any members of lh
that are pointers are initialized to a null pointer and any arithmetic types will be initialized to zero).
module
is of type struct module*
and is initialised to THIS_MODULE
.
load_binary
is a pointer to a function that returns an int
and takes arguments of type struct linux_binptrm*
and struct pt_regs
, and is initialised to a function called load_elf_binary
.
load_shlib
is a pointer to a function that returns an int
and takes an argument of type struct file*
and is initialised to a function called load_elf_library
.
core_dump
is a pointer to a function that returns an int
and takes an argument of struct coredump_params*
and is initialised to a function called elf_core_dump
.
min_coredump
is of type unsigned long
and is initialised to ELF_EXEC_PAGESIZE
.
Refer to section 6.7.8 Initialization of the C99 standard for a full description on initialization syntax and rules.