<div dir="ltr">Am realizat care este problema și nu îmi dau seama de ce se întâmplă asta.<div><br></div><div>Prima dată când fac inb(IIR) în handler, valoarea citită este corectă. A doua oară când realizez din nou inb(IIR), valoarea este greșită, 193. Se poate să fie ceva de la checker?</div><div><br></div><div>Andreea</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Apr 5, 2020 at 8:47 PM Andreea Mitran <<a href="mailto:andreea.mitran10@gmail.com">andreea.mitran10@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr">Am încercat, problema este că atunci când se ajunge în handler pentru întreruperea TX, valoarea registrului IIR este 193, ceea ce nu pare deloc în regulă.<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Apr 5, 2020 at 6:02 PM Paul Olaru <<a href="mailto:olarupaulstelian97@gmail.com" target="_blank">olarupaulstelian97@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">Ai încercat ordinea:<div dir="auto"><br></div><div dir="auto">* Înregistrezi handler, dacă n-ai făcut-o în module_init</div><div dir="auto">* Activezi întrerupere, dacă n-ai făcut-o în module_init</div><div dir="auto">* Atomic, verifici: dacă nu e busy primul octet îl scrii în hardware pe TX direct. Folosești același spinlock ca în întrerupere și faci cu irq sau irqsave ca să eviți deadlock</div><div dir="auto">* Pe urmă lași întreruperile să muncească.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sun, Apr 5, 2020, 17:54 Andreea Mitran via so2 <<a href="mailto:so2@cursuri.cs.pub.ro" target="_blank">so2@cursuri.cs.pub.ro</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr">Din ce am citit pe listele de discuții din anii anteriori, întreruperea TX trebuie activată din nou, atunci când se efectuează write din user space. <br><br>Deși fac acest lucru și handler-ul întreruperii este chemat, bitul corespunzător din IIR care să îmi spună că hardware-ul are de citit date scrise din user space este 0. Am afișat valoarea registrului IIR în întrerupere și aceasta este destul de bizară față de valoarea pe care o are la testele corespunzătoare pentru read.<br><br>La testul 3, am passed pentru operația de read, însă la testul 4, programul se blochează, întrucât eu în handler-ul de întrerupere verific valoarea bitului corespunzător întreruperii pentru a stabili că trebuie să trimit date la hardware, care este 0.<div><br></div><div>Știți cumva care ar putea fi problema?</div><div><br></div><div>Mulțumesc,</div><div>Andreea</div></div>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii" rel="noreferrer noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so2/resurse/lista-discutii</a></blockquote></div>
</blockquote></div>
</blockquote></div>