Changes in uspace/lib/c/generic/net/modules.c [45bb1d2:228e490] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/c/generic/net/modules.c
r45bb1d2 r228e490 63 63 int answer_count) 64 64 { 65 / * Choose the most efficient answer function */65 // choose the most efficient answer function 66 66 if (answer || (!answer_count)) { 67 67 switch (answer_count) { … … 178 178 int phone; 179 179 180 / * If no timeout is set */180 // if no timeout is set 181 181 if (timeout <= 0) 182 182 return async_connect_me_to_blocking(PHONE_NS, need, 0, 0); … … 187 187 return phone; 188 188 189 / * Abort if no time is left */189 // end if no time is left 190 190 if (timeout <= 0) 191 191 return ETIMEOUT; 192 192 193 / * Wait the minimum of the module wait time and the timeout */193 // wait the minimum of the module wait time and the timeout 194 194 usleep((timeout <= MODULE_WAIT_TIME) ? 195 195 timeout : MODULE_WAIT_TIME); 196 196 timeout -= MODULE_WAIT_TIME; 197 197 } 198 } 199 200 /** Receives data from the other party. 201 * 202 * The received data buffer is allocated and returned. 203 * 204 * @param[out] data The data buffer to be filled. 205 * @param[out] length The buffer length. 206 * @return EOK on success. 207 * @return EBADMEM if the data or the length parameter is NULL. 208 * @return EINVAL if the client does not send data. 209 * @return ENOMEM if there is not enough memory left. 210 * @return Other error codes as defined for the 211 * async_data_write_finalize() function. 212 */ 213 int data_receive(void **data, size_t *length) 214 { 215 ipc_callid_t callid; 216 int rc; 217 218 if (!data || !length) 219 return EBADMEM; 220 221 // fetch the request 222 if (!async_data_write_receive(&callid, length)) 223 return EINVAL; 224 225 // allocate the buffer 226 *data = malloc(*length); 227 if (!*data) 228 return ENOMEM; 229 230 // fetch the data 231 rc = async_data_write_finalize(callid, *data, *length); 232 if (rc != EOK) { 233 free(data); 234 return rc; 235 } 236 237 return EOK; 198 238 } 199 239 … … 214 254 ipc_callid_t callid; 215 255 216 / * Fetch the request */256 // fetch the request 217 257 if (!async_data_read_receive(&callid, &length)) 218 258 return EINVAL; 219 259 220 / * Check the requested data size */260 // check the requested data size 221 261 if (length < data_length) { 222 262 async_data_read_finalize(callid, data, length); … … 224 264 } 225 265 226 / * Send the data */266 // send the data 227 267 return async_data_read_finalize(callid, data, data_length); 228 268 } … … 242 282 if (answer) { 243 283 IPC_SET_RETVAL(*answer, 0); 244 / * Just to be precise */284 // just to be precize 245 285 IPC_SET_IMETHOD(*answer, 0); 246 286 IPC_SET_ARG1(*answer, 0);
Note:
See TracChangeset
for help on using the changeset viewer.