linux user group brescia

immagine del castello

Archivio della mailing list

[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