[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