Changeset 19f0048 in mainline for uspace/lib/usbhost/src/utility.c


Ignore:
Timestamp:
2018-02-01T02:13:34Z (7 years ago)
Author:
Ondřej Hlavatý <aearsis@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
17d34a8
Parents:
53fdf8c
Message:

xhci: reinitialize in case of HC error

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/usbhost/src/utility.c

    r53fdf8c r19f0048  
    297297{
    298298        joinable_fibril_t *jf = arg;
     299
    299300        jf->worker(jf->arg);
    300301
     
    315316                return NULL;
    316317
    317         jf->fid = fibril_create(joinable_fibril_worker, jf);
    318         if (!jf->fid) {
    319                 free(jf);
    320                 return NULL;
    321         }
    322 
    323318        jf->worker = worker;
    324319        jf->arg = arg;
     
    326321        fibril_condvar_initialize(&jf->dead_cv);
    327322
     323        if (joinable_fibril_recreate(jf)) {
     324                free(jf);
     325                return NULL;
     326        }
     327
    328328        return jf;
    329329}
    330 
    331330
    332331/**
     
    353352                fibril_condvar_wait(&jf->dead_cv, &jf->guard);
    354353        fibril_mutex_unlock(&jf->guard);
     354
     355        jf->fid = 0;
     356}
     357
     358/**
     359 * Reinitialize a joinable fibril.
     360 */
     361errno_t joinable_fibril_recreate(joinable_fibril_t *jf)
     362{
     363        assert(!jf->fid);
     364
     365        jf->fid = fibril_create(joinable_fibril_worker, jf);
     366        return jf->fid ? EOK : ENOMEM;
    355367}
    356368
Note: See TracChangeset for help on using the changeset viewer.