[OSy] problem s KoHlTo kernelem?
Sulthan
sulthan at seznam.cz
Mon Jan 8 17:58:50 CET 2007
zdravim,
mozna je to hloupa otazka, ale kontrolujes navratovou hodnotu vmallocu?
a jses si jisty ze tohle pretypovani je spravne?
src = (uint32_t *)EXT_DEVICE_BEGIN;
dest = (uint32_t *)PROGRAM_BEGIN_ADDRESS;
mas to prece deklarovano jako uint8_t*.
----- Original Message -----
From: "Vaclav Klecanda" <vencax at centrum.cz>
To: <osy at dsrg.mff.cuni.cz>
Sent: Monday, January 08, 2007 5:44 PM
Subject: [OSy] problem s KoHlTo kernelem?
> Zdravim,
> nemuzeme zaboha odladit nasledujici problem.
>
> Nejprve allokujeme pomoci vmalloc 32Kb pameti od adresy 0 (coz je v USEG).
> A pak zkousime do tohoto naalokovaneho mista nakopirovat kod z simulace
> HDD. Avsak na tomoto miste nam to pada. Uz si nevime absolutne rady.
> Nemohla by byt chyba nekde v allokatoru? Prosime o jakoukoli radu. Dalsi
> otazka je: alokuje allokator vmalloc pamet sekvencne?
> Prikladame kod:
>
> #define PROGRAM_BEGIN_ADDRESS 0x00000000
>
> #define CODE_SEGMENT_SIZE (32*1024)
>
> #define EXT_DEVICE_BEGIN 0x9fc00400
>
>
> uint8_t * src;
> uint8_t * dest;
>
> void *where = (void *)PROGRAM_BEGIN_ADDRESS;
>
> retVal = vmalloc(&where, CODE_SEGMENT_SIZE,
> (VF_VA_USER << VF_VA_SHIFT) | (VF_AT_KUSEG << VF_AT_SHIFT) );
>
> src = (uint32_t *)EXT_DEVICE_BEGIN;
> dest = (uint32_t *)PROGRAM_BEGIN_ADDRESS;
>
> for(i = 0; i < (CODE_SEGMENT_SIZE / sizeof(uint8_t)); i++)
> {
> dprintk("%d\n", i);
> dest[i] = src[i]; // tady to spadava kolem i=6160;
> src[i] = dest[i]; // toto funguje :(
>
> _______________________________________________
> OSy mailing list
> OSy at dsrg.mff.cuni.cz
> http://dsrg.mff.cuni.cz/mailman/listinfo/osy
More information about the NSWI004
mailing list