Changes in uspace/lib/packet/generic/packet_server.c [dd5046dd:ffa2c8ef] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/lib/packet/generic/packet_server.c
rdd5046dd rffa2c8ef 44 44 #include <unistd.h> 45 45 #include <sys/mman.h> 46 47 #include <ipc/ipc.h>48 46 #include <ipc/packet.h> 49 47 #include <ipc/net.h> 50 51 48 #include <net/packet.h> 52 49 #include <net/packet_header.h> … … 135 132 /** Creates a new packet of dimensions at least as given. 136 133 * 137 * Should be used only when the global data are locked.138 *139 134 * @param[in] length The total length of the packet, including the header, 140 135 * the addresses and the data of the packet. … … 153 148 packet_t *packet; 154 149 int rc; 150 151 assert(fibril_mutex_is_locked(&ps_globals.lock)); 155 152 156 153 // already locked … … 233 230 /** Release the packet and returns it to the appropriate free packet queue. 234 231 * 235 * Should be used only when the global data are locked.236 *237 232 * @param[in] packet The packet to be released. 238 233 * … … 242 237 int index; 243 238 int result; 239 240 assert(fibril_mutex_is_locked(&ps_globals.lock)); 244 241 245 242 for (index = 0; (index < FREE_QUEUES_COUNT - 1) && … … 292 289 293 290 if (!async_share_in_receive(&callid, &size)) { 294 ipc_answer_0(callid, EINVAL);291 async_answer_0(callid, EINVAL); 295 292 return EINVAL; 296 293 } 297 294 298 295 if (size != packet->length) { 299 ipc_answer_0(callid, ENOMEM);296 async_answer_0(callid, ENOMEM); 300 297 return ENOMEM; 301 298 } … … 322 319 int 323 320 packet_server_message(ipc_callid_t callid, ipc_call_t *call, ipc_call_t *answer, 324 int *answer_count)321 size_t *answer_count) 325 322 { 326 323 packet_t *packet; 327 324 328 325 *answer_count = 0; 329 switch (IPC_GET_ METHOD(*call)) {326 switch (IPC_GET_IMETHOD(*call)) { 330 327 case IPC_M_PHONE_HUNGUP: 331 328 return EOK; … … 333 330 case NET_PACKET_CREATE_1: 334 331 packet = packet_get_local(DEFAULT_ADDR_LEN, DEFAULT_PREFIX, 335 IPC_GET_CONTENT( call), DEFAULT_SUFFIX);332 IPC_GET_CONTENT(*call), DEFAULT_SUFFIX); 336 333 if (!packet) 337 334 return ENOMEM; 338 335 *answer_count = 2; 339 IPC_SET_ARG1(*answer, ( ipcarg_t) packet->packet_id);340 IPC_SET_ARG2(*answer, ( ipcarg_t) packet->length);336 IPC_SET_ARG1(*answer, (sysarg_t) packet->packet_id); 337 IPC_SET_ARG2(*answer, (sysarg_t) packet->length); 341 338 return EOK; 342 339 343 340 case NET_PACKET_CREATE_4: 344 341 packet = packet_get_local( 345 ((DEFAULT_ADDR_LEN < IPC_GET_ADDR_LEN( call)) ?346 IPC_GET_ADDR_LEN( call) : DEFAULT_ADDR_LEN),347 DEFAULT_PREFIX + IPC_GET_PREFIX( call),348 IPC_GET_CONTENT( call),349 DEFAULT_SUFFIX + IPC_GET_SUFFIX( call));342 ((DEFAULT_ADDR_LEN < IPC_GET_ADDR_LEN(*call)) ? 343 IPC_GET_ADDR_LEN(*call) : DEFAULT_ADDR_LEN), 344 DEFAULT_PREFIX + IPC_GET_PREFIX(*call), 345 IPC_GET_CONTENT(*call), 346 DEFAULT_SUFFIX + IPC_GET_SUFFIX(*call)); 350 347 if (!packet) 351 348 return ENOMEM; 352 349 *answer_count = 2; 353 IPC_SET_ARG1(*answer, ( ipcarg_t) packet->packet_id);354 IPC_SET_ARG2(*answer, ( ipcarg_t) packet->length);350 IPC_SET_ARG1(*answer, (sysarg_t) packet->packet_id); 351 IPC_SET_ARG2(*answer, (sysarg_t) packet->length); 355 352 return EOK; 356 353 357 354 case NET_PACKET_GET: 358 packet = pm_find(IPC_GET_ID( call));355 packet = pm_find(IPC_GET_ID(*call)); 359 356 if (!packet_is_valid(packet)) 360 357 return ENOENT; … … 362 359 363 360 case NET_PACKET_GET_SIZE: 364 packet = pm_find(IPC_GET_ID( call));361 packet = pm_find(IPC_GET_ID(*call)); 365 362 if (!packet_is_valid(packet)) 366 363 return ENOENT; 367 IPC_SET_ARG1(*answer, ( ipcarg_t) packet->length);364 IPC_SET_ARG1(*answer, (sysarg_t) packet->length); 368 365 *answer_count = 1; 369 366 return EOK; 370 367 371 368 case NET_PACKET_RELEASE: 372 return packet_release_wrapper(IPC_GET_ID( call));369 return packet_release_wrapper(IPC_GET_ID(*call)); 373 370 } 374 371
Note:
See TracChangeset
for help on using the changeset viewer.