Changes in uspace/lib/c/generic/async.c [6a5d05b:b7fd2a0] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/async.c
r6a5d05b rb7fd2a0 205 205 ipc_call_t *dataptr; 206 206 207 int retval;207 errno_t retval; 208 208 } amsg_t; 209 209 … … 511 511 static FIBRIL_CONDVAR_INITIALIZE(avail_phone_cv); 512 512 513 int async_create_port(iface_t iface, async_port_handler_t handler,513 errno_t async_create_port(iface_t iface, async_port_handler_t handler, 514 514 void *data, port_id_t *port_id) 515 515 { … … 698 698 * 699 699 */ 700 static int connection_fibril(void *arg)700 static errno_t connection_fibril(void *arg) 701 701 { 702 702 assert(arg); … … 847 847 * 848 848 */ 849 int async_create_callback_port(async_exch_t *exch, iface_t iface, sysarg_t arg1,849 errno_t async_create_callback_port(async_exch_t *exch, iface_t iface, sysarg_t arg1, 850 850 sysarg_t arg2, async_port_handler_t handler, void *data, port_id_t *port_id) 851 851 { … … 860 860 &answer); 861 861 862 int ret;862 errno_t ret; 863 863 async_wait_for(req, &ret); 864 864 if (ret != EOK) 865 return ( int) ret;865 return (errno_t) ret; 866 866 867 867 sysarg_t phone_hash = IPC_GET_ARG5(answer); … … 1056 1056 * 1057 1057 */ 1058 int async_irq_subscribe(int inr, async_notification_handler_t handler,1058 errno_t async_irq_subscribe(int inr, async_notification_handler_t handler, 1059 1059 void *data, const irq_code_t *ucode, cap_handle_t *handle) 1060 1060 { … … 1078 1078 1079 1079 cap_handle_t cap; 1080 int rc = ipc_irq_subscribe(inr, imethod, ucode, &cap);1080 errno_t rc = ipc_irq_subscribe(inr, imethod, ucode, &cap); 1081 1081 if (rc == EOK && handle != NULL) { 1082 1082 *handle = cap; … … 1092 1092 * 1093 1093 */ 1094 int async_irq_unsubscribe(int cap)1094 errno_t async_irq_unsubscribe(int cap) 1095 1095 { 1096 1096 // TODO: Remove entry from hash table … … 1109 1109 * 1110 1110 */ 1111 int async_event_subscribe(event_type_t evno,1111 errno_t async_event_subscribe(event_type_t evno, 1112 1112 async_notification_handler_t handler, void *data) 1113 1113 { … … 1142 1142 * 1143 1143 */ 1144 int async_event_task_subscribe(event_task_type_t evno,1144 errno_t async_event_task_subscribe(event_task_type_t evno, 1145 1145 async_notification_handler_t handler, void *data) 1146 1146 { … … 1173 1173 * 1174 1174 */ 1175 int async_event_unmask(event_type_t evno)1175 errno_t async_event_unmask(event_type_t evno) 1176 1176 { 1177 1177 return ipc_event_unmask(evno); … … 1185 1185 * 1186 1186 */ 1187 int async_event_task_unmask(event_task_type_t evno)1187 errno_t async_event_task_unmask(event_task_type_t evno) 1188 1188 { 1189 1189 return ipc_event_task_unmask(evno); … … 1437 1437 * 1438 1438 */ 1439 static int async_manager_worker(void)1439 static errno_t async_manager_worker(void) 1440 1440 { 1441 1441 while (true) { … … 1489 1489 1490 1490 ipc_call_t call; 1491 int rc = ipc_wait_cycle(&call, timeout, flags);1491 errno_t rc = ipc_wait_cycle(&call, timeout, flags); 1492 1492 1493 1493 atomic_dec(&threads_in_ipc_wait); … … 1521 1521 * 1522 1522 */ 1523 static int async_manager_fibril(void *arg)1523 static errno_t async_manager_fibril(void *arg) 1524 1524 { 1525 1525 futex_up(&async_futex); … … 1597 1597 * 1598 1598 */ 1599 void reply_received(void *arg, int retval, ipc_call_t *data)1599 void reply_received(void *arg, errno_t retval, ipc_call_t *data) 1600 1600 { 1601 1601 assert(arg); … … 1709 1709 * 1710 1710 */ 1711 void async_wait_for(aid_t amsgid, int *retval)1711 void async_wait_for(aid_t amsgid, errno_t *retval) 1712 1712 { 1713 1713 assert(amsgid); … … 1755 1755 * 1756 1756 */ 1757 int async_wait_timeout(aid_t amsgid, int *retval, suseconds_t timeout)1757 errno_t async_wait_timeout(aid_t amsgid, errno_t *retval, suseconds_t timeout) 1758 1758 { 1759 1759 assert(amsgid); … … 1856 1856 void async_usleep(suseconds_t timeout) 1857 1857 { 1858 awaiter_t awaiter; 1859 awaiter_initialize(&awaiter); 1860 1861 awaiter.fid = fibril_get_id(); 1862 1863 getuptime(&awaiter.to_event.expires); 1864 tv_add_diff(&awaiter.to_event.expires, timeout); 1858 amsg_t *msg = amsg_create(); 1859 if (!msg) 1860 return; 1861 1862 msg->wdata.fid = fibril_get_id(); 1863 1864 getuptime(&msg->wdata.to_event.expires); 1865 tv_add_diff(&msg->wdata.to_event.expires, timeout); 1865 1866 1866 1867 futex_down(&async_futex); 1867 1868 1868 async_insert_timeout(& awaiter);1869 async_insert_timeout(&msg->wdata); 1869 1870 1870 1871 /* Leave the async_futex locked when entering this function */ … … 1872 1873 1873 1874 /* Futex is up automatically after fibril_switch() */ 1875 1876 amsg_destroy(msg); 1874 1877 } 1875 1878 … … 1915 1918 * 1916 1919 */ 1917 int async_req_fast(async_exch_t *exch, sysarg_t imethod, sysarg_t arg1,1920 errno_t async_req_fast(async_exch_t *exch, sysarg_t imethod, sysarg_t arg1, 1918 1921 sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t *r1, sysarg_t *r2, 1919 1922 sysarg_t *r3, sysarg_t *r4, sysarg_t *r5) … … 1926 1929 &result); 1927 1930 1928 int rc;1931 errno_t rc; 1929 1932 async_wait_for(aid, &rc); 1930 1933 … … 1967 1970 * 1968 1971 */ 1969 int async_req_slow(async_exch_t *exch, sysarg_t imethod, sysarg_t arg1,1972 errno_t async_req_slow(async_exch_t *exch, sysarg_t imethod, sysarg_t arg1, 1970 1973 sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5, sysarg_t *r1, 1971 1974 sysarg_t *r2, sysarg_t *r3, sysarg_t *r4, sysarg_t *r5) … … 1978 1981 &result); 1979 1982 1980 int rc;1983 errno_t rc; 1981 1984 async_wait_for(aid, &rc); 1982 1985 … … 2042 2045 } 2043 2046 2044 int async_answer_0(cap_handle_t chandle, int retval)2047 errno_t async_answer_0(cap_handle_t chandle, errno_t retval) 2045 2048 { 2046 2049 return ipc_answer_0(chandle, retval); 2047 2050 } 2048 2051 2049 int async_answer_1(cap_handle_t chandle, int retval, sysarg_t arg1)2052 errno_t async_answer_1(cap_handle_t chandle, errno_t retval, sysarg_t arg1) 2050 2053 { 2051 2054 return ipc_answer_1(chandle, retval, arg1); 2052 2055 } 2053 2056 2054 int async_answer_2(cap_handle_t chandle, int retval, sysarg_t arg1,2057 errno_t async_answer_2(cap_handle_t chandle, errno_t retval, sysarg_t arg1, 2055 2058 sysarg_t arg2) 2056 2059 { … … 2058 2061 } 2059 2062 2060 int async_answer_3(cap_handle_t chandle, int retval, sysarg_t arg1,2063 errno_t async_answer_3(cap_handle_t chandle, errno_t retval, sysarg_t arg1, 2061 2064 sysarg_t arg2, sysarg_t arg3) 2062 2065 { … … 2064 2067 } 2065 2068 2066 int async_answer_4(cap_handle_t chandle, int retval, sysarg_t arg1,2069 errno_t async_answer_4(cap_handle_t chandle, errno_t retval, sysarg_t arg1, 2067 2070 sysarg_t arg2, sysarg_t arg3, sysarg_t arg4) 2068 2071 { … … 2070 2073 } 2071 2074 2072 int async_answer_5(cap_handle_t chandle, int retval, sysarg_t arg1,2075 errno_t async_answer_5(cap_handle_t chandle, errno_t retval, sysarg_t arg1, 2073 2076 sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, sysarg_t arg5) 2074 2077 { … … 2076 2079 } 2077 2080 2078 int async_forward_fast(cap_handle_t chandle, async_exch_t *exch,2081 errno_t async_forward_fast(cap_handle_t chandle, async_exch_t *exch, 2079 2082 sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, unsigned int mode) 2080 2083 { … … 2085 2088 } 2086 2089 2087 int async_forward_slow(cap_handle_t chandle, async_exch_t *exch,2090 errno_t async_forward_slow(cap_handle_t chandle, async_exch_t *exch, 2088 2091 sysarg_t imethod, sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, 2089 2092 sysarg_t arg4, sysarg_t arg5, unsigned int mode) … … 2108 2111 * 2109 2112 */ 2110 int async_connect_to_me(async_exch_t *exch, sysarg_t arg1, sysarg_t arg2,2113 errno_t async_connect_to_me(async_exch_t *exch, sysarg_t arg1, sysarg_t arg2, 2111 2114 sysarg_t arg3) 2112 2115 { … … 2118 2121 &answer); 2119 2122 2120 int rc;2123 errno_t rc; 2121 2124 async_wait_for(req, &rc); 2122 2125 if (rc != EOK) 2123 return ( int) rc;2126 return (errno_t) rc; 2124 2127 2125 2128 return EOK; 2126 2129 } 2127 2130 2128 static int async_connect_me_to_internal(int phone, sysarg_t arg1, sysarg_t arg2,2131 static errno_t async_connect_me_to_internal(int phone, sysarg_t arg1, sysarg_t arg2, 2129 2132 sysarg_t arg3, sysarg_t arg4, int *out_phone) 2130 2133 { … … 2145 2148 msg, reply_received); 2146 2149 2147 int rc;2150 errno_t rc; 2148 2151 async_wait_for((aid_t) msg, &rc); 2149 2152 … … 2183 2186 2184 2187 int phone; 2185 int rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3,2188 errno_t rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3, 2186 2189 0, &phone); 2187 2190 if (rc != EOK) { … … 2236 2239 2237 2240 int phone; 2238 int rc = async_connect_me_to_internal(exch->phone, iface, arg2,2241 errno_t rc = async_connect_me_to_internal(exch->phone, iface, arg2, 2239 2242 arg3, 0, &phone); 2240 2243 if (rc != EOK) { … … 2307 2310 2308 2311 int phone; 2309 int rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3,2312 errno_t rc = async_connect_me_to_internal(exch->phone, arg1, arg2, arg3, 2310 2313 IPC_FLAG_BLOCKING, &phone); 2311 2314 … … 2361 2364 2362 2365 int phone; 2363 int rc = async_connect_me_to_internal(exch->phone, iface, arg2,2366 errno_t rc = async_connect_me_to_internal(exch->phone, iface, arg2, 2364 2367 arg3, IPC_FLAG_BLOCKING, &phone); 2365 2368 if (rc != EOK) { … … 2397 2400 2398 2401 cap_handle_t phone; 2399 int rc = ipc_connect_kbox(id, &phone);2402 errno_t rc = ipc_connect_kbox(id, &phone); 2400 2403 if (rc != EOK) { 2401 2404 errno = rc; … … 2421 2424 } 2422 2425 2423 static int async_hangup_internal(int phone)2426 static errno_t async_hangup_internal(int phone) 2424 2427 { 2425 2428 return ipc_hangup(phone); … … 2433 2436 * 2434 2437 */ 2435 int async_hangup(async_sess_t *sess)2438 errno_t async_hangup(async_sess_t *sess) 2436 2439 { 2437 2440 async_exch_t *exch; … … 2444 2447 fibril_mutex_lock(&async_sess_mutex); 2445 2448 2446 int rc = async_hangup_internal(sess->phone);2449 errno_t rc = async_hangup_internal(sess->phone); 2447 2450 2448 2451 while (!list_empty(&sess->exch_list)) { … … 2516 2519 } else if (mgmt == EXCHANGE_PARALLEL) { 2517 2520 int phone; 2518 int rc;2521 errno_t rc; 2519 2522 2520 2523 retry: … … 2613 2616 * 2614 2617 */ 2615 int async_share_in_start(async_exch_t *exch, size_t size, sysarg_t arg,2618 errno_t async_share_in_start(async_exch_t *exch, size_t size, sysarg_t arg, 2616 2619 unsigned int *flags, void **dst) 2617 2620 { … … 2621 2624 sysarg_t _flags = 0; 2622 2625 sysarg_t _dst = (sysarg_t) -1; 2623 int res = async_req_2_4(exch, IPC_M_SHARE_IN, (sysarg_t) size,2626 errno_t res = async_req_2_4(exch, IPC_M_SHARE_IN, (sysarg_t) size, 2624 2627 arg, NULL, &_flags, NULL, &_dst); 2625 2628 … … 2673 2676 * 2674 2677 */ 2675 int async_share_in_finalize(cap_handle_t chandle, void *src, unsigned int flags)2678 errno_t async_share_in_finalize(cap_handle_t chandle, void *src, unsigned int flags) 2676 2679 { 2677 2680 return ipc_answer_3(chandle, EOK, (sysarg_t) src, (sysarg_t) flags, … … 2688 2691 * 2689 2692 */ 2690 int async_share_out_start(async_exch_t *exch, void *src, unsigned int flags)2693 errno_t async_share_out_start(async_exch_t *exch, void *src, unsigned int flags) 2691 2694 { 2692 2695 if (exch == NULL) … … 2743 2746 * 2744 2747 */ 2745 int async_share_out_finalize(cap_handle_t chandle, void **dst)2748 errno_t async_share_out_finalize(cap_handle_t chandle, void **dst) 2746 2749 { 2747 2750 return ipc_answer_2(chandle, EOK, (sysarg_t) __entry, (sysarg_t) dst); … … 2774 2777 * 2775 2778 */ 2776 int async_data_read_start(async_exch_t *exch, void *dst, size_t size)2779 errno_t async_data_read_start(async_exch_t *exch, void *dst, size_t size) 2777 2780 { 2778 2781 if (exch == NULL) … … 2848 2851 * 2849 2852 */ 2850 int async_data_read_finalize(cap_handle_t chandle, const void *src, size_t size)2853 errno_t async_data_read_finalize(cap_handle_t chandle, const void *src, size_t size) 2851 2854 { 2852 2855 return ipc_answer_2(chandle, EOK, (sysarg_t) src, (sysarg_t) size); … … 2856 2859 * 2857 2860 */ 2858 int async_data_read_forward_fast(async_exch_t *exch, sysarg_t imethod,2861 errno_t async_data_read_forward_fast(async_exch_t *exch, sysarg_t imethod, 2859 2862 sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, 2860 2863 ipc_call_t *dataptr) … … 2876 2879 } 2877 2880 2878 int retval = ipc_forward_fast(chandle, exch->phone, 0, 0, 0,2881 errno_t retval = ipc_forward_fast(chandle, exch->phone, 0, 0, 0, 2879 2882 IPC_FF_ROUTE_FROM_ME); 2880 2883 if (retval != EOK) { … … 2884 2887 } 2885 2888 2886 int rc;2889 errno_t rc; 2887 2890 async_wait_for(msg, &rc); 2888 2891 2889 return ( int) rc;2892 return (errno_t) rc; 2890 2893 } 2891 2894 … … 2899 2902 * 2900 2903 */ 2901 int async_data_write_start(async_exch_t *exch, const void *src, size_t size)2904 errno_t async_data_write_start(async_exch_t *exch, const void *src, size_t size) 2902 2905 { 2903 2906 if (exch == NULL) … … 2973 2976 * 2974 2977 */ 2975 int async_data_write_finalize(cap_handle_t chandle, void *dst, size_t size)2978 errno_t async_data_write_finalize(cap_handle_t chandle, void *dst, size_t size) 2976 2979 { 2977 2980 return ipc_answer_2(chandle, EOK, (sysarg_t) dst, (sysarg_t) size); … … 2999 3002 * 3000 3003 */ 3001 int async_data_write_accept(void **data, const bool nullterm,3004 errno_t async_data_write_accept(void **data, const bool nullterm, 3002 3005 const size_t min_size, const size_t max_size, const size_t granularity, 3003 3006 size_t *received) … … 3039 3042 } 3040 3043 3041 int rc = async_data_write_finalize(chandle, arg_data, size);3044 errno_t rc = async_data_write_finalize(chandle, arg_data, size); 3042 3045 if (rc != EOK) { 3043 3046 free(arg_data); … … 3062 3065 * 3063 3066 */ 3064 void async_data_write_void( int retval)3067 void async_data_write_void(errno_t retval) 3065 3068 { 3066 3069 cap_handle_t chandle; … … 3072 3075 * 3073 3076 */ 3074 int async_data_write_forward_fast(async_exch_t *exch, sysarg_t imethod,3077 errno_t async_data_write_forward_fast(async_exch_t *exch, sysarg_t imethod, 3075 3078 sysarg_t arg1, sysarg_t arg2, sysarg_t arg3, sysarg_t arg4, 3076 3079 ipc_call_t *dataptr) … … 3092 3095 } 3093 3096 3094 int retval = ipc_forward_fast(chandle, exch->phone, 0, 0, 0,3097 errno_t retval = ipc_forward_fast(chandle, exch->phone, 0, 0, 0, 3095 3098 IPC_FF_ROUTE_FROM_ME); 3096 3099 if (retval != EOK) { … … 3100 3103 } 3101 3104 3102 int rc;3105 errno_t rc; 3103 3106 async_wait_for(msg, &rc); 3104 3107 3105 return ( int) rc;3108 return (errno_t) rc; 3106 3109 } 3107 3110 … … 3197 3200 } 3198 3201 3199 int async_state_change_start(async_exch_t *exch, sysarg_t arg1, sysarg_t arg2,3202 errno_t async_state_change_start(async_exch_t *exch, sysarg_t arg1, sysarg_t arg2, 3200 3203 sysarg_t arg3, async_exch_t *other_exch) 3201 3204 { … … 3225 3228 } 3226 3229 3227 int async_state_change_finalize(cap_handle_t chandle, async_exch_t *other_exch)3230 errno_t async_state_change_finalize(cap_handle_t chandle, async_exch_t *other_exch) 3228 3231 { 3229 3232 return ipc_answer_1(chandle, EOK, other_exch->phone);
Note:
See TracChangeset
for help on using the changeset viewer.