Changes in uspace/lib/c/generic/devman.c [4db43721:0b5a4131] in mainline
- File:
-
- 1 edited
-
uspace/lib/c/generic/devman.c (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/devman.c
r4db43721 r0b5a4131 42 42 #include <devman.h> 43 43 #include <async.h> 44 #include <fibril_synch.h>45 44 #include <errno.h> 46 45 #include <malloc.h> … … 51 50 static int devman_phone_client = -1; 52 51 53 static FIBRIL_MUTEX_INITIALIZE(devman_phone_mutex);54 55 52 int devman_get_phone(devman_interface_t iface, unsigned int flags) 56 53 { 57 54 switch (iface) { 58 55 case DEVMAN_DRIVER: 59 fibril_mutex_lock(&devman_phone_mutex); 60 if (devman_phone_driver >= 0) { 61 fibril_mutex_unlock(&devman_phone_mutex); 56 if (devman_phone_driver >= 0) 62 57 return devman_phone_driver; 63 }64 58 65 59 if (flags & IPC_FLAG_BLOCKING) 66 devman_phone_driver = async_connect_me_to_blocking(67 PHONE_NS,SERVICE_DEVMAN, DEVMAN_DRIVER, 0);60 devman_phone_driver = ipc_connect_me_to_blocking(PHONE_NS, 61 SERVICE_DEVMAN, DEVMAN_DRIVER, 0); 68 62 else 69 devman_phone_driver = async_connect_me_to(PHONE_NS,63 devman_phone_driver = ipc_connect_me_to(PHONE_NS, 70 64 SERVICE_DEVMAN, DEVMAN_DRIVER, 0); 71 65 72 fibril_mutex_unlock(&devman_phone_mutex);73 66 return devman_phone_driver; 74 67 case DEVMAN_CLIENT: 75 fibril_mutex_lock(&devman_phone_mutex); 76 if (devman_phone_client >= 0) { 77 fibril_mutex_unlock(&devman_phone_mutex); 68 if (devman_phone_client >= 0) 78 69 return devman_phone_client; 79 } 80 81 if (flags & IPC_FLAG_BLOCKING) { 82 devman_phone_client = async_connect_me_to_blocking( 83 PHONE_NS, SERVICE_DEVMAN, DEVMAN_CLIENT, 0); 84 } else { 85 devman_phone_client = async_connect_me_to(PHONE_NS, 70 71 if (flags & IPC_FLAG_BLOCKING) 72 devman_phone_client = ipc_connect_me_to_blocking(PHONE_NS, 86 73 SERVICE_DEVMAN, DEVMAN_CLIENT, 0); 87 } 88 89 fibril_mutex_unlock(&devman_phone_mutex); 74 else 75 devman_phone_client = ipc_connect_me_to(PHONE_NS, 76 SERVICE_DEVMAN, DEVMAN_CLIENT, 0); 77 90 78 return devman_phone_client; 91 79 default: … … 107 95 aid_t req = async_send_2(phone, DEVMAN_DRIVER_REGISTER, 0, 0, &answer); 108 96 109 sysarg_t retval = async_data_write_start(phone, name, str_size(name));97 ipcarg_t retval = async_data_write_start(phone, name, str_size(name)); 110 98 if (retval != EOK) { 111 99 async_wait_for(req, NULL); … … 116 104 async_set_client_connection(conn); 117 105 118 sysarg_t callback_phonehash;106 ipcarg_t callback_phonehash; 119 107 ipc_connect_to_me(phone, 0, 0, 0, &callback_phonehash); 120 108 async_wait_for(req, &retval); … … 128 116 { 129 117 ipc_call_t answer; 130 a id_t req = async_send_1(phone, DEVMAN_ADD_MATCH_ID, match_id->score, &answer);118 async_send_1(phone, DEVMAN_ADD_MATCH_ID, match_id->score, &answer); 131 119 int retval = async_data_write_start(phone, match_id->id, str_size(match_id->id)); 132 async_wait_for(req, NULL); 133 return retval; 120 return retval; 134 121 } 135 122 … … 167 154 aid_t req = async_send_2(phone, DEVMAN_ADD_CHILD_DEVICE, parent_handle, match_count, &answer); 168 155 169 sysarg_t retval = async_data_write_start(phone, name, str_size(name));156 ipcarg_t retval = async_data_write_start(phone, name, str_size(name)); 170 157 if (retval != EOK) { 171 158 async_wait_for(req, NULL); … … 204 191 aid_t req = async_send_1(phone, DEVMAN_ADD_DEVICE_TO_CLASS, devman_handle, &answer); 205 192 206 sysarg_t retval = async_data_write_start(phone, class_name, str_size(class_name));193 ipcarg_t retval = async_data_write_start(phone, class_name, str_size(class_name)); 207 194 if (retval != EOK) { 208 195 async_wait_for(req, NULL); … … 242 229 243 230 if (flags & IPC_FLAG_BLOCKING) { 244 phone = async_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN,231 phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN, 245 232 DEVMAN_CONNECT_TO_DEVICE, handle); 246 233 } else { 247 phone = async_connect_me_to(PHONE_NS, SERVICE_DEVMAN,234 phone = ipc_connect_me_to(PHONE_NS, SERVICE_DEVMAN, 248 235 DEVMAN_CONNECT_TO_DEVICE, handle); 249 236 } … … 257 244 258 245 if (flags & IPC_FLAG_BLOCKING) { 259 phone = async_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN,246 phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN, 260 247 DEVMAN_CONNECT_TO_PARENTS_DEVICE, handle); 261 248 } else { 262 phone = async_connect_me_to(PHONE_NS, SERVICE_DEVMAN,249 phone = ipc_connect_me_to(PHONE_NS, SERVICE_DEVMAN, 263 250 DEVMAN_CONNECT_TO_PARENTS_DEVICE, handle); 264 251 } … … 280 267 &answer); 281 268 282 sysarg_t retval = async_data_write_start(phone, pathname, str_size(pathname));269 ipcarg_t retval = async_data_write_start(phone, pathname, str_size(pathname)); 283 270 if (retval != EOK) { 284 271 async_wait_for(req, NULL);
Note:
See TracChangeset
for help on using the changeset viewer.
