Changes in uspace/lib/c/generic/devman.c [64d2b10:0b5a4131] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/devman.c
r64d2b10 r0b5a4131 28 28 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 29 29 */ 30 31 /** @addtogroup libc30 31 /** @addtogroup libc 32 32 * @{ 33 33 */ … … 37 37 #include <str.h> 38 38 #include <stdio.h> 39 #include <ipc/ipc.h> 39 40 #include <ipc/services.h> 40 41 #include <ipc/devman.h> 41 42 #include <devman.h> 42 43 #include <async.h> 43 #include <fibril_synch.h>44 44 #include <errno.h> 45 45 #include <malloc.h> … … 50 50 static int devman_phone_client = -1; 51 51 52 static FIBRIL_MUTEX_INITIALIZE(devman_phone_mutex);53 54 52 int devman_get_phone(devman_interface_t iface, unsigned int flags) 55 53 { 56 54 switch (iface) { 57 55 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) 61 57 return devman_phone_driver; 62 }63 58 64 59 if (flags & IPC_FLAG_BLOCKING) 65 devman_phone_driver = async_connect_me_to_blocking(66 PHONE_NS,SERVICE_DEVMAN, DEVMAN_DRIVER, 0);60 devman_phone_driver = ipc_connect_me_to_blocking(PHONE_NS, 61 SERVICE_DEVMAN, DEVMAN_DRIVER, 0); 67 62 else 68 devman_phone_driver = async_connect_me_to(PHONE_NS,63 devman_phone_driver = ipc_connect_me_to(PHONE_NS, 69 64 SERVICE_DEVMAN, DEVMAN_DRIVER, 0); 70 65 71 fibril_mutex_unlock(&devman_phone_mutex);72 66 return devman_phone_driver; 73 67 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) 77 69 return devman_phone_client; 78 } 79 80 if (flags & IPC_FLAG_BLOCKING) { 81 devman_phone_client = async_connect_me_to_blocking( 82 PHONE_NS, SERVICE_DEVMAN, DEVMAN_CLIENT, 0); 83 } else { 84 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, 85 73 SERVICE_DEVMAN, DEVMAN_CLIENT, 0); 86 } 87 88 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 89 78 return devman_phone_client; 90 79 default: … … 106 95 aid_t req = async_send_2(phone, DEVMAN_DRIVER_REGISTER, 0, 0, &answer); 107 96 108 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)); 109 98 if (retval != EOK) { 110 99 async_wait_for(req, NULL); … … 115 104 async_set_client_connection(conn); 116 105 117 async_connect_to_me(phone, 0, 0, 0, NULL); 106 ipcarg_t callback_phonehash; 107 ipc_connect_to_me(phone, 0, 0, 0, &callback_phonehash); 118 108 async_wait_for(req, &retval); 119 109 … … 126 116 { 127 117 ipc_call_t answer; 128 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); 129 119 int retval = async_data_write_start(phone, match_id->id, str_size(match_id->id)); 130 async_wait_for(req, NULL); 131 return retval; 120 return retval; 132 121 } 133 122 … … 165 154 aid_t req = async_send_2(phone, DEVMAN_ADD_CHILD_DEVICE, parent_handle, match_count, &answer); 166 155 167 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)); 168 157 if (retval != EOK) { 169 158 async_wait_for(req, NULL); … … 202 191 aid_t req = async_send_1(phone, DEVMAN_ADD_DEVICE_TO_CLASS, devman_handle, &answer); 203 192 204 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)); 205 194 if (retval != EOK) { 206 195 async_wait_for(req, NULL); … … 220 209 case DEVMAN_DRIVER: 221 210 if (devman_phone_driver >= 0) { 222 async_hangup(devman_phone_driver);211 ipc_hangup(devman_phone_driver); 223 212 devman_phone_driver = -1; 224 213 } … … 226 215 case DEVMAN_CLIENT: 227 216 if (devman_phone_client >= 0) { 228 async_hangup(devman_phone_client);217 ipc_hangup(devman_phone_client); 229 218 devman_phone_client = -1; 230 219 } … … 240 229 241 230 if (flags & IPC_FLAG_BLOCKING) { 242 phone = async_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN,231 phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN, 243 232 DEVMAN_CONNECT_TO_DEVICE, handle); 244 233 } else { 245 phone = async_connect_me_to(PHONE_NS, SERVICE_DEVMAN,234 phone = ipc_connect_me_to(PHONE_NS, SERVICE_DEVMAN, 246 235 DEVMAN_CONNECT_TO_DEVICE, handle); 247 236 } … … 255 244 256 245 if (flags & IPC_FLAG_BLOCKING) { 257 phone = async_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN,246 phone = ipc_connect_me_to_blocking(PHONE_NS, SERVICE_DEVMAN, 258 247 DEVMAN_CONNECT_TO_PARENTS_DEVICE, handle); 259 248 } else { 260 phone = async_connect_me_to(PHONE_NS, SERVICE_DEVMAN,249 phone = ipc_connect_me_to(PHONE_NS, SERVICE_DEVMAN, 261 250 DEVMAN_CONNECT_TO_PARENTS_DEVICE, handle); 262 251 } … … 278 267 &answer); 279 268 280 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)); 281 270 if (retval != EOK) { 282 271 async_wait_for(req, NULL);
Note:
See TracChangeset
for help on using the changeset viewer.