<div dir="ltr"><br><br><div class="gmail_quote"><div dir="ltr">On Tue, May 22, 2018 at 3:01 PM Birlea Costin <<a href="mailto:costin.birlea@gmail.com">costin.birlea@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Buna Ziua.<div><br></div><div>1.M-am uitat in laborator si in libaio.h [1] la structura io_event ca sa vad ce campuri de date mi-ar putea oferi cati bytes au fost citit, insa nu-mi dau seama care ar putea fi.</div><div>Am printat din campul obj (care in situatia aceasta este iocb) tot ce se afla la iocb.u.c (adica structura io_iocb_common) si am observat ca acestea au ramas la fel cu valorile setate cand am folosit io_prep_pread (desi printarea a fost facuta dupa ce s-a finalizat apelul io_getevents).</div></div></blockquote><div><br></div><div>Din ce spui tu, dacă field-urile sunt aceleași înseamnă că s-a citit fix cât ai spus tu să se citească, adică nbytes. Ai încercat să afișezi să vezi dacă și datele sunt în regulă?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div><div>2. Daca am inteles bine, asta inseamna ca in combinatie cu folosire epoll_wait, ne anunta cand operatia a luat sfarsit deci atunci read-ul este asigurat sa nu se blocheze, deci este deajuns doar sa verificam daca a avut loc o eroare, altfel orice ar fi inseamna ca s-a terminat, nu? </div></div></blockquote><div>Exact.</div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><a href="https://code.woboq.org/linux/include/libaio.h.html#99" target="_blank">https://code.woboq.org/linux/include/libaio.h.html#99</a><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-05-22 14:08 GMT+03:00 Razvan Crainea <span dir="ltr"><<a href="mailto:razvan.crainea@gmail.com" target="_blank">razvan.crainea@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Salut, Costin!<div><br></div><div>Găsești răspunsurile mele inline.</div><div><br></div><div>Numai bine,<br>Răzvan<br><br><div class="gmail_quote"><span><div dir="ltr">On Tue, May 22, 2018 at 1:41 PM Birlea Costin <<a href="mailto:costin.birlea@gmail.com" target="_blank">costin.birlea@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div>Buna Ziua.<br><br></div>Am incercat acuma sa folosesc io_set_eventfd inaintea fiecarui io_submit (impreuna cu io_prep_pread) si acuma a inceput sa citeasca mai departe, insa mai am 2 nelamuriri:<br><br></div>1. De unde stiu cat s-a citit la fiecare submit? observ ca io_getevents doar ofera informatii despre cate evenimente s-au terminat si la fel si read-ul folosit pentru asteptare.<br></div></div></blockquote></span><div>io_getevents() returnează câte evenimente s-au terminat, în același timp populează field-ul events cu informații despre job-urile terminate.<br></div><span><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br></div>2. Nu-mi este clar dc secventa aceasta de cod(din laboratorul 11) este folosita pentru asteptarea terminarii operatiei.<br><pre class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-code m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-c">u_int64_t efd_val<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">;</span>
<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-kw1">if</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">(</span>read<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">(</span>efd<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">,</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">&</span>efd_val<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">,</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-kw4">sizeof</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">(</span>efd_val<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">)</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">)</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0"><</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-nu0">0</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">)</span> <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">{</span>
    <span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-coMULTI">/* handle error */</span>
<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">}</span>
 
<a href="http://www.opengroup.org/onlinepubs/009695399/functions/printf.html" target="_blank"><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-kw3">printf</span></a><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">(</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-st0">"%llu operations have completed<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922es1">\n</span>"</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">,</span> efd_val<span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-br0">)</span><span class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922gmail-sy0">;</span></pre><br></div></blockquote></span><div>efd este un file descriptor al unui eveniment; un apel read() pe acest file descriptor va întoarce numărul de operații IO terminate. Din moment ce el nu este marcat ca non-blocant, read-ul pe acest file descriptor se va bloca până una (sau mai multe) operații vor fi terminate. Dacă mai ai nelămuriri, te rog să ne spui.</div><div><br></div><div>Numai bine,<br>Răzvan</div><span><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div> </div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">2018-05-22 6:55 GMT+03:00 Razvan Crainea <span dir="ltr"><<a href="mailto:razvan.crainea@gmail.com" target="_blank">razvan.crainea@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Salut, Costin!<div><br></div><div>După ce se termină prim-ul job de read, citești de pe event, apoi aștepți terminarea job-ului?</div><div>Ai încercat să setezi un event nou după fiecare operație?</div><div><br></div><div>Numai bine,<br>Răzvan<br><br><div class="gmail_quote"><div><div class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922h5"><div dir="ltr">On Tue, May 22, 2018 at 5:15 AM Birlea Costin via so <<a href="mailto:so@cursuri.cs.pub.ro" target="_blank">so@cursuri.cs.pub.ro</a>> wrote:<br></div></div></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="m_-4982109726428487119m_6562112871923545580m_9026776420838459922h5"><div dir="ltr"><div><div>Buna Seara.<br><br></div>Nu-mi este clar cum ar trebuii schimbat offset-ul de unde citesc din fisier atunci cand folosesc io_submit si io_prep_pread. Problema mea este ca la fiecare submit se citeste aceeasi parte din fisier si banuiesc ca de la offset vine problema.<br><br></div><div>Am incercat sa reapelez io_prep_pread (fiindca aici se specifica offset-ul) insa cand faceam asta, dupa aceea nu mai primeam deloc event-uri EPOLLIN pentru acest eventfd.<br><br></div><div>Precizez ca am cate un eventfd si io_context pentru fiecare conexiune.<br><br></div><div>Multumesc anticipat!<br></div></div></div></div>
_______________________________________________<br>
<a href="http://ocw.cs.pub.ro/courses/so/info/lista-discutii" rel="noreferrer" target="_blank">http://ocw.cs.pub.ro/courses/so/info/lista-discutii</a></blockquote></div></div></div>
</blockquote></div><br></div>
</blockquote></span></div></div></div>
</blockquote></div><br></div>
</blockquote></div></div>