Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/devman.c

    r64d2b10 r8983273  
    2828 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    2929 */
    30 
    31 /** @addtogroup libc
     30 
     31 /** @addtogroup libc
    3232 * @{
    3333 */
     
    3737#include <str.h>
    3838#include <stdio.h>
     39#include <ipc/ipc.h>
    3940#include <ipc/services.h>
    4041#include <ipc/devman.h>
    4142#include <devman.h>
    4243#include <async.h>
    43 #include <fibril_synch.h>
    4444#include <errno.h>
    4545#include <malloc.h>
     
    5050static int devman_phone_client = -1;
    5151
    52 static FIBRIL_MUTEX_INITIALIZE(devman_phone_mutex);
    53 
    5452int devman_get_phone(devman_interface_t iface, unsigned int flags)
    5553{
    5654        switch (iface) {
    5755        case DEVMAN_DRIVER:
    58                 fibril_mutex_lock(&devman_phone_mutex);
    59                 if (devman_phone_driver >= 0) {
    60                         fibril_mutex_unlock(&devman_phone_mutex);
     56                if (devman_phone_driver >= 0)
    6157                        return devman_phone_driver;
    62                 }
    6358               
    6459                if (flags & IPC_FLAG_BLOCKING)
     
    6964                            SERVICE_DEVMAN, DEVMAN_DRIVER, 0);
    7065               
    71                 fibril_mutex_unlock(&devman_phone_mutex);
    7266                return devman_phone_driver;
    7367        case DEVMAN_CLIENT:
    74                 fibril_mutex_lock(&devman_phone_mutex);
    75                 if (devman_phone_client >= 0) {
    76                         fibril_mutex_unlock(&devman_phone_mutex);
     68                if (devman_phone_client >= 0)
    7769                        return devman_phone_client;
    78                 }
    79                
    80                 if (flags & IPC_FLAG_BLOCKING) {
     70               
     71                if (flags & IPC_FLAG_BLOCKING)
    8172                        devman_phone_client = async_connect_me_to_blocking(
    8273                            PHONE_NS, SERVICE_DEVMAN, DEVMAN_CLIENT, 0);
    83                 } else {
     74                else
    8475                        devman_phone_client = async_connect_me_to(PHONE_NS,
    8576                            SERVICE_DEVMAN, DEVMAN_CLIENT, 0);
    86                 }
    87                
    88                 fibril_mutex_unlock(&devman_phone_mutex);
     77               
    8978                return devman_phone_client;
    9079        default:
     
    115104        async_set_client_connection(conn);
    116105       
    117         async_connect_to_me(phone, 0, 0, 0, NULL);
     106        sysarg_t callback_phonehash;
     107        ipc_connect_to_me(phone, 0, 0, 0, &callback_phonehash);
    118108        async_wait_for(req, &retval);
    119109       
     
    220210        case DEVMAN_DRIVER:
    221211                if (devman_phone_driver >= 0) {
    222                         async_hangup(devman_phone_driver);
     212                        ipc_hangup(devman_phone_driver);
    223213                        devman_phone_driver = -1;
    224214                }
     
    226216        case DEVMAN_CLIENT:
    227217                if (devman_phone_client >= 0) {
    228                         async_hangup(devman_phone_client);
     218                        ipc_hangup(devman_phone_client);
    229219                        devman_phone_client = -1;
    230220                }
Note: See TracChangeset for help on using the changeset viewer.