[pso] [tema3] dimensiune pitix_dir_entry
omar Chouydary
chouydary at yahoo.com
Sun Apr 29 13:44:30 EEST 2007
In primul rand la ceva de genul asta:
sb->s_blocksize/pitix_dir_entry_size(sb)
compilatorul oricum face o operatie pe float si apoi truncheaza la int (daca int este variabila in care stochezi rezultatul)
In al doilea rand, as vrea un raspuns de la asistenti/profesor ca sa stiu sigur. Multumesc oricum pt parerea ta.
Lucian Adrian Grijincu <lucian.grijincu at gmail.com> wrote:
On 4/29/07, omar Chouydary wrote:
> O problema asemanatoare cu cate inode-uri sunt pe superbloc este asta:
>
> Avand in vedere ca structura pitix_dir_entry are 20 de octeti, iar
> dimensiunea unui bloc este de 512, 1024, etc... inseamna ca intr-un bloc nu
> incape un numar fix de astfel de structuri.
> Atunci ce facem in cazul directoarelor:
>
> a) scriem in fiecare bloc de date (al inode-ului respectiv corespunzator
> directorului) cate structuri pitix_dir_entry incap, si daca urmatoarea nu
> incape in totalitate, o scriem de la inceput intr-un nou bloc de date
>
> b) scriem in fiecare bloc de date cate incap, si in plus scriem in ce a
> ramas ce putem dintr-o noua structura pitix_dir_entry astfel incat o
> structura s-ar putea imparti intre 2 blocuri consecutive de date
>
> Mi se pare mai usor de implementat varianta a, dar risipeste niste octeti la
> fiecare bloc de date.
> Daca trebuie aleasa varianta b, atunci de ce in pitix.h avem functia asta :
>
> static inline int pitix_dir_entries_per_block(struct super_block *sb)
> {
> return sb->s_blocksize/pitix_dir_entry_size(sb);
> }
>
> Nu ar fi trebuit sa intoarca un float pentru a sti exact cate structuri (cu
> tot cu virgula) incap astfel incat sa pot sa verific in ce bloc exact este o
> anumita structura?
>
> Omar.
1. si daca-ti intoarce cu virgula ce faci?
daca vrei sa afli o cantitate intreaga din numarul asta ai sanse mari
sa dai de date eronate.
2. ce sa faci cu float in kernel mode? It's prohibited (imagineaza-ti
cazul in care pt operatii floating point trebuie sa dai comenzi si sa
astepti raspunsuri de la un mathematical co-processor.)
Presupune ca pitix_dir_entries_per_block iti returneaza numarul de
d_entry-uri care intra cu exactitate in un block. Daca un d_entry e in
doua blockuri, citesti ambele blockuri si memcpy in bufferul
d_entryului.
Lucian
_______________________________________________
pso mailing list
pso at cursuri.cs.pub.ro
http://cursuri.cs.pub.ro/cgi-bin/mailman/listinfo/pso
---------------------------------
Ahhh...imagining that irresistible "new car" smell?
Check outnew cars at Yahoo! Autos.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://cursuri.cs.pub.ro/pipermail/pso/attachments/20070429/5475102f/attachment.html
More information about the pso
mailing list