Changeset fda19b8 in mainline for uspace/lib/c/generic/async.c
- Timestamp:
- 2018-05-31T15:41:31Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 49a796f1
- Parents:
- fc0b2a8
- git-author:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-05-31 15:35:24)
- git-committer:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-05-31 15:41:31)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/async.c
rfc0b2a8 rfda19b8 511 511 static FIBRIL_CONDVAR_INITIALIZE(avail_phone_cv); 512 512 513 errno_t async_create_port(iface_t iface, async_port_handler_t handler, 514 void *data, port_id_t *port_id) 515 { 516 if ((iface & IFACE_MOD_MASK) == IFACE_MOD_CALLBACK) 517 return EINVAL; 518 513 static errno_t async_create_port_internal(iface_t iface, 514 async_port_handler_t handler, void *data, port_id_t *port_id) 515 { 519 516 interface_t *interface; 520 517 … … 543 540 544 541 return EOK; 542 } 543 544 errno_t async_create_port(iface_t iface, async_port_handler_t handler, 545 void *data, port_id_t *port_id) 546 { 547 if ((iface & IFACE_MOD_MASK) == IFACE_MOD_CALLBACK) 548 return EINVAL; 549 550 return async_create_port_internal(iface, handler, data, port_id); 545 551 } 546 552 … … 860 866 &answer); 861 867 862 errno_t ret; 863 async_wait_for(req, &ret); 864 if (ret != EOK) 865 return (errno_t) ret; 868 errno_t rc; 869 async_wait_for(req, &rc); 870 if (rc != EOK) 871 return rc; 872 873 rc = async_create_port_internal(iface, handler, data, port_id); 874 if (rc != EOK) 875 return rc; 866 876 867 877 sysarg_t phone_hash = IPC_GET_ARG5(answer); 868 interface_t *interface;869 870 futex_down(&async_futex);871 872 ht_link_t *link = hash_table_find(&interface_hash_table, &iface);873 if (link)874 interface = hash_table_get_inst(link, interface_t, link);875 else876 interface = async_new_interface(iface);877 878 if (!interface) {879 futex_up(&async_futex);880 return ENOMEM;881 }882 883 port_t *port = async_new_port(interface, handler, data);884 if (!port) {885 futex_up(&async_futex);886 return ENOMEM;887 }888 889 *port_id = port->id;890 891 futex_up(&async_futex);892 893 878 fid_t fid = async_new_connection(answer.in_task_id, phone_hash, 894 879 CAP_NIL, NULL, handler, data);
Note:
See TracChangeset
for help on using the changeset viewer.