Il “Kernel Panic” in Android

Avete mai pensato cosa fà il sistema Operativo Android nel momento in cui c’è un problema con il Kernel, il famoso “KERNEL PANIC”?

Ebbene ecco la funzione “panic”, presa dal codice sorgente del kernel del recentissimo Samsung Galaxy S3.

E si state leggendo proprio bene… è la funzione originale scritta da Linus Torvalds


/*


* linux/kernel/panic.c


*


* Copyright (C) 1991, 1992 Linus Torvalds


*/



/*


* This function is used through-out the kernel (including mm and fs)


* to indicate a major problem.


*/


#include


#include


#include


#include





...

omissis

...





/**


* panic - halt the system


* @fmt: The text string to print


*


* Display a message, then perform cleanups.


*


* This function never returns.


*/



NORET_TYPE void panic(const char * fmt, ...)


{



static char buf[1024];


va_list args;


long i, i_next = 0;


int state = 0;



/*


* It's possible to come here directly from a panic-assertion and


* not have preempt disabled. Some functions called from here want


* preempt to be disabled. No point enabling it later though...


*/


preempt_disable();


console_verbose();


bust_spinlocks(1);


va_start(args, fmt);


vsnprintf(buf, sizeof(buf), fmt, args);


va_end(args);


printk(KERN_EMERG "Kernel panic - not syncing: %sn",buf);


#ifdef CONFIG_DEBUG_BUGVERBOSE


dump_stack();


#endif




omissis....


mdelay(PANIC_TIMER_STEP);





}






Potete continuare la lettura dell'intero sorgente al seguente link:







Notate la linearità di scrittura del codice, la perfetta identificazione dei blocchi di codice, il naming delle variabili e i commenti.











Share Button
Pin It

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *