[pso] intrebari tema 2 linux
Stefan Dumitrescu
dumitrescu.stefan at gmail.com
Mon Apr 9 11:52:49 EEST 2007
salut
am si eu cateva intrebari despre tema 2 lin, nu am inteles prea bine din
enunt cum trebuie sa functioneze programul.
in enunt e specificat asa:
* rutinele de read/write sunt extrem de similare cu exemplul de
device driver de tip caracter făcut la laborator; singura
diferenţă e că trebuie să folosiţi două buffere, unul pentru read
şi altul pentru write;
* pentru citirea/scrierea datelelor în/din porturi nu trebuie să
folosiţi funcţii amânabile (puteţi să faceţi totul din întrerupere)
eu am asa ( din exemplul de laborator ):
struct file_operations case_fops = {
.read = mread,
.write = mwrite, etc...
la testele de read si write se apeleaza functiile mele mread si
mwrite(aka printk "sunt in mread").
acum, ce inseamna sa fie blocante (daca nu am date in buffer sa ramana
acolo pana cand?) ? de ce am nevoie de doua buffere separate?
mai sus spune ca pot sa fac totul (read write) din intrerupere?! eu am
am request-uit un irq la care am pus un handler ca sa treaca testul de
irq, dar nu prea inteleg la ce il folosesc, din moment ce read write si
ioctl le fac din file_operations? sau exact mread si mwrite sunt
considerate ca handlerele de intreruperi??
si in final, in teste am vazut ca am write in com1 si read din com2. ele
nu ar trebui sa fie separate? ce treaba are com1 cu com2? sa inteleg ca
ele au un buffer general pt comx din driverul meu, sau fiecare comx e cu
bufferele sale?
test(do_write(com1, wb, BUFFER_SIZE) == 0, "write %s", com1_path);
test(do_read(com2, rb, BUFFER_SIZE) == 0, "read %s", com2_path);
dupa care verifica rb cu wb sa fie egale.
mi-e clar ca eu nu inteleg prea bine problema si ce ar trebui sa faca,
dar tind sa cred ca din enunt nu se intelege, presupun ca nu sunt
singurul in situatia asta :)
as vrea si eu in enunt daca se poate o explicatie mai clara (mai
detaliata) la ce trebuie sa faca problema.
mersi
stefan
More information about the pso
mailing list