Changeset adb1ae9 in mainline


Ignore:
Timestamp:
2017-11-09T20:29:25Z (6 years ago)
Author:
Jakub Jermar <jakub@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
731d8f9
Parents:
0239846
Message:

Answer IPC only when there will be no blocking

This is necessary so that a parallel exchange is not handled by a
connection fibril which is still itself waiting for IPC or resources.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/locsrv/locsrv.c

    r0239846 radb1ae9  
    557557        fibril_mutex_unlock(&cdir.mutex);
    558558        fibril_mutex_unlock(&services_list_mutex);
     559
     560        /*
     561         * First send out all notifications and only then answer the request.
     562         * Otherwise the current fibril might block and transitively wait for
     563         * the completion of requests that are routed to it via an IPC loop.
     564         */
     565        loc_category_change_event();
    559566        async_answer_0(iid, EOK);
    560 
    561         loc_category_change_event();
    562567}
    563568
     
    12971302        fibril_mutex_unlock(&services_list_mutex);
    12981303
     1304        /*
     1305         * First send out all notifications and only then answer the request.
     1306         * Otherwise the current fibril might block and transitively wait for
     1307         * the completion of requests that are routed to it via an IPC loop.
     1308         */
     1309        loc_category_change_event();
    12991310        async_answer_0(iid, retval);
    1300 
    1301         loc_category_change_event();
    13021311}
    13031312
Note: See TracChangeset for help on using the changeset viewer.