"Funktionsdefinitions-Block" ?

25/01/2015 - 18:27 von ha | Report spam
Hallo

Mit fiel kein besserer Thread-Titel ein ;-)

Ich habe in einem Linux-Sourcecode ein Fragment gesehen, das
ich so noch nicht kannte:

Beispiel aus Linux/kernel/sched/idle.c:

void __weak arch_cpu_idle_prepare(void) { }
void __weak arch_cpu_idle_enter(void) { }
void __weak arch_cpu_idle_exit(void) { }
void __weak arch_cpu_idle_dead(void) { }
void __weak arch_cpu_idle(void)
{
cpu_idle_force_poll = 1;
local_irq_enable();
}


Keine Semikolons und leere Blockklammern. Was
ist der Sinn?
 

Lesen sie die antworten

#1 Thomas Rachel
26/01/2015 - 10:04 | Warnen spam
Am 25.01.2015 um 18:27 schrieb ha:
Hallo

Mit fiel kein besserer Thread-Titel ein ;-)

Ich habe in einem Linux-Sourcecode ein Fragment gesehen, das
ich so noch nicht kannte:

Beispiel aus Linux/kernel/sched/idle.c:

void __weak arch_cpu_idle_prepare(void) { }
void __weak arch_cpu_idle_enter(void) { }
void __weak arch_cpu_idle_exit(void) { }
void __weak arch_cpu_idle_dead(void) { }
void __weak arch_cpu_idle(void)
{
cpu_idle_force_poll = 1;
local_irq_enable();
}


Keine Semikolons und leere Blockklammern. Was
ist der Sinn?



Beim kernel kenne ich mich nicht aus, aber ich könnte mir vorstellen,
daß es z. B. bei Modulen oder anderen Pluginsystemen eine Mindestmenge
an Funktionen gibt, die vorhanden sein müssen und ohne die das Laden des
Plugins schlicht fehlschlàgt.

Das __weak könnte zudem darauf hindeuten, daß das so eine Art
Default-Implementierung ist, die anderweitig überschrieben werden kann,
aber nicht muß.


Thomas

Ähnliche fragen