Προς το περιεχόμενο

Minix3 - system call for fs


freskas

Προτεινόμενες αναρτήσεις

Δημοσ.

Ασκηση στο minix:

Φτιαξτε ενα system call που θα υπολογιζει το ποσοστο κατακερματισμου ενος αρχειου και ενα απλο προγραμμα που θα το χρησιμοποιει.

 

Τι εχω κανει:

Για το προγραμμα που καλει το system call :

περνει το path με argument

το περναει σε message (το μεγεθος και το 1o byte του path)

(μαζι με ενα 3ο για να επιστρεψω την τιμη που θα υπολογισει το system call)

και καλει το system call

 

Για το sytem call:

fetch_name() με arguments τα 2 του message

eat_path() με argument το user_path που βρηκα με τη fetch_name()

read_map() με arguments το inode που βρηκα με την eat_path() και

(εδω ειναι το προβλημα) την πρωτη θεση (off_t position) του αρχειου, (βαζω 0)

δλδ: read_map(rip,0); /* οπου rip δεικτης τυπου struct inode στο αρχειο */

 

μετα ενα loop που αλλαζει το 0 σε 1 κτλ μεχρι END_OF_FILE και υπολογιζει την διαφορα της τωρινης read_map() με την προυγουμενη για να δει αν ειναι συνεχομενα τα blocks (!=1 δλδ).

 

Τελος ενα sys_datacopy επιστρεφει το ποσοστο στο user space και αυτο εκτυπωνεται.

 

Αποτελεσμα ειναι να κολλαει το VMWare :lol:

 

Απο λογικη πως πανε τα παραπανω?

(Νομιζω οτι κατι με το off_t position στην read_map() πρεπει να παιζει)

Αν γινεται να μου εξηγησει καποιος περισσοτερα για την off_t position και τις τιμες που περνει.

Οποιος θελει να βοηθησει... μεχρι τις 11:59 παιζει προθεσμια.

 

edit:

Βρηκα λυση:

η off_t position περνει τιμες απο 0 - file_length

οπου file_length = rip->i_size-1

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...