Changeset 498ced1 in mainline for uspace/lib/c/generic/async/client.c
- Timestamp:
- 2018-08-11T02:43:32Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- 05882233
- Parents:
- b13d80b
- git-author:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-11 02:29:02)
- git-committer:
- Jiří Zárevúcky <jiri.zarevucky@…> (2018-08-11 02:43:32)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/async/client.c
rb13d80b r498ced1 185 185 list_initialize(&session_ns.exch_list); 186 186 fibril_mutex_initialize(&session_ns.mutex); 187 atomic_set(&session_ns.refcnt, 0);187 session_ns.exchanges = 0; 188 188 } 189 189 … … 605 605 } 606 606 607 async_sess_t *sess = (async_sess_t *) malloc(sizeof(async_sess_t));607 async_sess_t *sess = calloc(1, sizeof(async_sess_t)); 608 608 if (sess == NULL) { 609 609 errno = ENOMEM; … … 627 627 628 628 fibril_mutex_initialize(&sess->remote_state_mtx); 629 sess->remote_state_data = NULL;630 631 629 list_initialize(&sess->exch_list); 632 630 fibril_mutex_initialize(&sess->mutex); 633 atomic_set(&sess->refcnt, 0);634 631 635 632 return sess; … … 676 673 } 677 674 678 async_sess_t *sess = (async_sess_t *) malloc(sizeof(async_sess_t));675 async_sess_t *sess = calloc(1, sizeof(async_sess_t)); 679 676 if (sess == NULL) { 680 677 errno = ENOMEM; … … 698 695 699 696 fibril_mutex_initialize(&sess->remote_state_mtx); 700 sess->remote_state_data = NULL;701 702 697 list_initialize(&sess->exch_list); 703 698 fibril_mutex_initialize(&sess->mutex); 704 atomic_set(&sess->refcnt, 0);705 699 706 700 return sess; … … 712 706 async_sess_t *async_connect_kbox(task_id_t id) 713 707 { 714 async_sess_t *sess = (async_sess_t *) malloc(sizeof(async_sess_t));708 async_sess_t *sess = calloc(1, sizeof(async_sess_t)); 715 709 if (sess == NULL) { 716 710 errno = ENOMEM; … … 729 723 sess->mgmt = EXCHANGE_ATOMIC; 730 724 sess->phone = phone; 731 sess->arg1 = 0;732 sess->arg2 = 0;733 sess->arg3 = 0;734 725 735 726 fibril_mutex_initialize(&sess->remote_state_mtx); 736 sess->remote_state_data = NULL;737 738 727 list_initialize(&sess->exch_list); 739 728 fibril_mutex_initialize(&sess->mutex); 740 atomic_set(&sess->refcnt, 0);741 729 742 730 return sess; … … 761 749 assert(sess); 762 750 763 if (atomic_get(&sess->refcnt) > 0)764 return EBUSY;765 766 751 fibril_mutex_lock(&async_sess_mutex); 752 753 assert(sess->exchanges == 0); 767 754 768 755 errno_t rc = async_hangup_internal(sess->phone); … … 874 861 } 875 862 863 if (exch != NULL) 864 sess->exchanges++; 865 876 866 fibril_mutex_unlock(&async_sess_mutex); 877 867 878 if (exch != NULL) { 879 atomic_inc(&sess->refcnt); 880 881 if (mgmt == EXCHANGE_SERIALIZE) 882 fibril_mutex_lock(&sess->mutex); 883 } 868 if (exch != NULL && mgmt == EXCHANGE_SERIALIZE) 869 fibril_mutex_lock(&sess->mutex); 884 870 885 871 return exch; … … 903 889 mgmt = sess->iface & IFACE_EXCHANGE_MASK; 904 890 905 atomic_dec(&sess->refcnt);906 907 891 if (mgmt == EXCHANGE_SERIALIZE) 908 892 fibril_mutex_unlock(&sess->mutex); 909 893 910 894 fibril_mutex_lock(&async_sess_mutex); 895 896 sess->exchanges--; 911 897 912 898 list_append(&exch->sess_link, &sess->exch_list);
Note:
See TracChangeset
for help on using the changeset viewer.