Fork us on GitHub Follow us on Facebook Follow us on Twitter

Changeset c4f67c8 in mainline


Ignore:
Timestamp:
2014-09-09T22:18:53Z (6 years ago)
Author:
Jiri Svoboda <jiri@…>
Branches:
master
Children:
105d8d6
Parents:
57a2208
Message:

Make solrb reading not slow.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/audio/hdaudio/hdactl.c

    r57a2208 rc4f67c8  
    5252        codec_enum_wait_us = 512,
    5353        corb_wait_max = 10,
    54         rirb_wait_max = 100
     54        rirb_wait_max = 100,
     55        solrb_wait_us = 100 * 1000
    5556};
    5657
     
    438439{
    439440        hda_rirb_entry_t resp;
    440         int wcnt;
    441441
    442442        ddf_msg(LVL_DEBUG, "hda_solrb_read()");
     
    459459
    460460                if (count > 0) {
    461                         wcnt = 100;
    462                         while (wcnt > 0 && hda->ctl->solrb_wp == hda->ctl->solrb_rp) {
    463                                 fibril_mutex_unlock(&hda->ctl->solrb_lock);
    464                                 async_usleep(10000);
    465                                 fibril_mutex_lock(&hda->ctl->solrb_lock);
    466                                 --wcnt;
     461                        if (hda->ctl->solrb_wp == hda->ctl->solrb_rp) {
     462                                fibril_condvar_wait_timeout(
     463                                    &hda->ctl->solrb_cv, &hda->ctl->solrb_lock,
     464                                    solrb_wait_us);
    467465                        }
    468466
Note: See TracChangeset for help on using the changeset viewer.