Changes in uspace/lib/drv/generic/driver.c [228e490:0b5a4131] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/drv/generic/driver.c
r228e490 r0b5a4131 48 48 #include <ctype.h> 49 49 #include <errno.h> 50 #include <inttypes.h>51 50 52 51 #include <ipc/driver.h> … … 81 80 static void driver_irq_handler(ipc_callid_t iid, ipc_call_t *icall) 82 81 { 83 int id = (int)IPC_GET_ IMETHOD(*icall);82 int id = (int)IPC_GET_METHOD(*icall); 84 83 interrupt_context_t *ctx; 85 84 … … 165 164 166 165 devman_handle_t dev_handle = IPC_GET_ARG1(*icall); 167 devman_handle_t parent_dev_handle = IPC_GET_ARG2(*icall);168 169 166 device_t *dev = create_device(); 170 167 dev->handle = dev_handle; … … 174 171 175 172 add_to_devices_list(dev); 176 dev->parent = driver_get_device(&devices, parent_dev_handle);177 178 173 res = driver->driver_ops->add_device(dev); 179 174 if (0 == res) { 180 printf("%s: new device with handle =%" PRIun "was added.\n",175 printf("%s: new device with handle = %x was added.\n", 181 176 driver->name, dev_handle); 182 177 } else { 183 printf("%s: failed to add a new device with handle = % " PRIun ".\n",178 printf("%s: failed to add a new device with handle = %d.\n", 184 179 driver->name, dev_handle); 185 180 remove_from_devices_list(dev); … … 200 195 ipc_callid_t callid = async_get_call(&call); 201 196 202 switch (IPC_GET_ IMETHOD(call)) {197 switch (IPC_GET_METHOD(call)) { 203 198 case IPC_M_PHONE_HUNGUP: 204 199 cont = false; … … 208 203 break; 209 204 default: 210 ipc_answer_0(callid, ENOENT); 205 if (!(callid & IPC_CALLID_NOTIFICATION)) 206 ipc_answer_0(callid, ENOENT); 211 207 } 212 208 } … … 230 226 if (dev == NULL) { 231 227 printf("%s: driver_connection_gen error - no device with handle" 232 " % " PRIun "was found.\n", driver->name, handle);228 " %x was found.\n", driver->name, handle); 233 229 ipc_answer_0(iid, ENOENT); 234 230 return; … … 254 250 ipc_call_t call; 255 251 callid = async_get_call(&call); 256 sysarg_t method = IPC_GET_IMETHOD(call);252 ipcarg_t method = IPC_GET_METHOD(call); 257 253 int iface_idx; 258 254 … … 294 290 printf("%s: driver_connection_gen error - ", 295 291 driver->name); 296 printf("device with handle % " PRIun "has no interface "292 printf("device with handle %d has no interface " 297 293 "with id %d.\n", handle, iface_idx); 298 294 ipc_answer_0(callid, ENOTSUP); … … 308 304 309 305 /* get the method of the remote interface */ 310 sysarg_t iface_method_idx = IPC_GET_ARG1(call);306 ipcarg_t iface_method_idx = IPC_GET_ARG1(call); 311 307 remote_iface_func_ptr_t iface_method_ptr = 312 308 get_remote_method(rem_iface, iface_method_idx); … … 346 342 { 347 343 /* Select interface */ 348 switch (( sysarg_t) (IPC_GET_ARG1(*icall))) {344 switch ((ipcarg_t) (IPC_GET_ARG1(*icall))) { 349 345 case DRIVER_DEVMAN: 350 346 /* handle PnP events from device manager */ … … 381 377 } 382 378 383 /** Wrapper for child_device_register for devices with single match id.384 *385 * @param parent Parent device.386 * @param child_name Child device name.387 * @param child_match_id Child device match id.388 * @param child_match_score Child device match score.389 * @return Error code.390 */391 int child_device_register_wrapper(device_t *parent, const char *child_name,392 const char *child_match_id, int child_match_score)393 {394 device_t *child = NULL;395 match_id_t *match_id = NULL;396 int rc;397 398 child = create_device();399 if (child == NULL) {400 rc = ENOMEM;401 goto failure;402 }403 404 child->name = child_name;405 406 match_id = create_match_id();407 if (match_id == NULL) {408 rc = ENOMEM;409 goto failure;410 }411 412 match_id->id = child_match_id;413 match_id->score = child_match_score;414 add_match_id(&child->match_ids, match_id);415 416 rc = child_device_register(child, parent);417 if (EOK != rc)418 goto failure;419 420 return EOK;421 422 failure:423 if (match_id != NULL) {424 match_id->id = NULL;425 delete_match_id(match_id);426 }427 428 if (child != NULL) {429 child->name = NULL;430 delete_device(child);431 }432 433 return rc;434 }435 436 379 int driver_main(driver_t *drv) 437 380 {
Note:
See TracChangeset
for help on using the changeset viewer.