[LugBS] Problemi di memoria
Carlo Bertoldi
mcbain a tiscali.it
Lun 19 Apr 2010 20:35:26 UTC
2010/4/16 Enrico Colombini <erix a erix.it>:
>
> No; immagino che possa servire a individuare un punto significativo (inizio
> dello stack o dello heap del kernel?) ma so ben poco di come il kernel sia
> organizzato internamente.
>
> .Erix.
>
Ho trovato:
il kernel di linux alloca in fondo allo stack di ogni processo, una
struttura del tipo
task_struct.
Quindi per ottenere l'indirizzo di tale struttura si può fare
(struct task_struct *) STACK_POINTER & 0xffffe000;
o in asm
/* cut-and-pasted from
linux/include/asm-i386/current.h */
static inline struct task_struct * get_current(void)
{
struct task_struct *current;
__asm__(-andl %%esp,%0;
-:-=- (current) : "0" (~8191UL));
return current;
}
che mi sembra l'equivalente della famosa riga iniziale. Poi mi sa che se
mi studio un po' la struttura, riuscirò a capire anche il resto del codice.
Carlo
--
È molto più bello sapere qualcosa di tutto, che sapere tutto di una cosa.
Blaise Pascal
Maggiori informazioni sulla lista
Lug
|