Re: Question de C

Top Page

Reply to this message
Author: Edgar Bonet
Date:  
To: Liste Guilde
Subject: Re: Question de C
Le jeudi 8 avril, Frédéric Mantegazza a écrit :
> Question peut-etre idiote, mais comment peut-on acceder a la memoire
> directement dans un programme en C, via un pointeur ? Toutes mes tentatives
> se soldent par un Segmentation Fault.


En C tu n'accèdes directement qu'aux adresses virtuelles. Si l'adresse
que tu utilises n'est pas mapée par le MMU, tu as un Segmentation Fault.

> Je suppose qu'on doit demander au noyau l'autorisation pour le faire, mais je
> n'ai pas trouve... Ou alors, est-ce a dire qu'on est *oblige* de passer par
> un driver, comme /dev/mem (pour lequel je ne trouve pas de doc qui dit
> comment se fait l'acces: 8bits, 16bits, 24 bits ou 32 bits) ?


Essaye un mmap. Lu sur /usr/src/linux/Documentation/fb/framebuffer.txt :

    As you already know, a frame buffer device is a memory device
    like /dev/mem and it has the same features. You can read it,
    write it, seek to some location in it and mmap() it (the main
    usage). The difference is just that the memory that appears in
    the special file is not the whole memory, but the frame buffer
    of some video hardware.


Le passage qui me semble important est « mmap() it (the main usage). »

-- 
Edgar Bonet           Maison : 04 76 21 29 16    Bureau : 04 76 88 10 96
3 rue Jean Prévost    Mobile : 06 77 19 79 39    Fax    : 04 76 88 11 91
38000 Grenoble        guilde@???     www.edgar-bonet.org