|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
[C] mapped memory, io ci provo...
Ciao a tutti,
sto cercando di imparare a gestire le mapped memory in linux. Al momento riesco seplicemente a "mappare in memoria" un file, ma non ho la minima idea di come scriverc all'interno. Per esempio: ammettiamo che io mappi un file (aperto in append) di interi in memoria e tutto vada per il meglio, come faccio ad scriveeci un ulteriore intero? Jax
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Ininfluente per un memory mapped file. Basta che non usi O_TRUNC.
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
scusa ma non ho capito...
va bene se faccio cosi? Codice:
int numero = 5; ... mappedmem = mmap(...); mappedmem = (void*) numero; è che non ho trovato esempi, quindi in sostanza non le so trattare... azz... che figura...
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Cosa devi fare esattamente? La mmap su file si usa in casi particolari.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
nulla di particolare, devo imparare a gestirle ed usarle.
Potrebbero capitarmi come domanda in un esame. Per imparare a gestirle intendo, "allocarla", modificarla e "deallocarla". Successivamente dovrei usarle come canale comunicativotra processi. I tipi di file che potrebbero caprtarmi non vanno oltre gli interi, caratteri o stringhe... al massimo, ma proprio in casi estremi, strutture... Jax
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
La mmap sembra semplice ma è alquanto sofisticata; inizia con qualche semplice esempio.
Questo ad esempio implementa la copia di file tramite la mmap: http://www.stillhq.com/extracted/howto-mmap/copy.c Tieni conto che moltissime cose possono essere messe in memory map (non solo i file, ma anche i block device, spesso i char device, la memoria "anonima", ecc.) e che c'è una differenza profonda tra le mappe "shared" e le mappe "private".
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
mmm
okay più o meno ci sono anche se ho dei quesiti (che fa la "fstat"?, che serve? e la ftruncate?) quindi mi casto il puntaore void che mi restituitsce mmap, al tipo che mi serve, giusto? l'inserimento della stringa avviene in coda o in testa al file (sto parlando di map shared)? e se avessi avuto un fle binario di interi?
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#8 | ||
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
man fstat
Quote:
Quote:
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
||
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
questo significa che se faccio un assegnamento, sovrascrivo il contenuto del file file mappato in memoria?
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Sì esatto.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#11 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
bella!
comunque una cosa del genere è corretta? Codice:
mapped = (int) mmap(...); mapped = 15;
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
approposito, grazie per la consulenza!
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#13 |
|
Senior Member
Iscritto dal: Nov 2001
Città: Lainate (MI)
Messaggi: 831
|
un ultima cosa...
man fstate = no manual entry man ftruncate = no manual entry che devo fa? mannaggia a linux!
__________________
Alea iacta est. Che io deceda se recedo |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
La mmap ritorna un puntatore.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
|
#15 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
apt-get install manpages manpages-it manpages-dev manpages-posix manpages-posix-dev
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 09:41.




















