Rev 2569 | Rev 2621 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 2569 | Rev 2619 | ||
---|---|---|---|
Line 73... | Line 73... | ||
73 | * |
73 | * |
74 | * |
74 | * |
75 | * my_client_connection(icallid, *icall) |
75 | * my_client_connection(icallid, *icall) |
76 | * { |
76 | * { |
77 | * if (want_refuse) { |
77 | * if (want_refuse) { |
78 | * ipc_answer_fast(icallid, ELIMIT, 0, 0); |
78 | * ipc_answer_0(icallid, ELIMIT); |
79 | * return; |
79 | * return; |
80 | * } |
80 | * } |
81 | * ipc_answer_fast(icallid, EOK, 0, 0); |
81 | * ipc_answer_0(icallid, EOK); |
82 | * |
82 | * |
83 | * callid = async_get_call(&call); |
83 | * callid = async_get_call(&call); |
84 | * handle_call(callid, call); |
84 | * handle_call(callid, call); |
85 | * ipc_answer_fast(callid, 1, 2, 3); |
85 | * ipc_answer_2(callid, 1, 2, 3); |
86 | * |
86 | * |
87 | * callid = async_get_call(&call); |
87 | * callid = async_get_call(&call); |
88 | * .... |
88 | * .... |
89 | * } |
89 | * } |
90 | * |
90 | * |
Line 393... | Line 393... | ||
393 | * @param callid Hash of the incoming call. |
393 | * @param callid Hash of the incoming call. |
394 | * @param call Data of the incoming call. |
394 | * @param call Data of the incoming call. |
395 | */ |
395 | */ |
396 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call) |
396 | static void default_client_connection(ipc_callid_t callid, ipc_call_t *call) |
397 | { |
397 | { |
398 | ipc_answer_fast(callid, ENOENT, 0, 0); |
398 | ipc_answer_0(callid, ENOENT); |
399 | } |
399 | } |
400 | 400 | ||
401 | /** Default fibril function that gets called to handle interrupt notifications. |
401 | /** Default fibril function that gets called to handle interrupt notifications. |
402 | * |
402 | * |
403 | * @param callid Hash of the incoming call. |
403 | * @param callid Hash of the incoming call. |
Line 438... | Line 438... | ||
438 | msg = list_get_instance(FIBRIL_connection->msg_queue.next, |
438 | msg = list_get_instance(FIBRIL_connection->msg_queue.next, |
439 | msg_t, link); |
439 | msg_t, link); |
440 | list_remove(&msg->link); |
440 | list_remove(&msg->link); |
441 | if (msg->callid == FIBRIL_connection->close_callid) |
441 | if (msg->callid == FIBRIL_connection->close_callid) |
442 | close_answered = 1; |
442 | close_answered = 1; |
443 | ipc_answer_fast(msg->callid, EHANGUP, 0, 0); |
443 | ipc_answer_0(msg->callid, EHANGUP); |
444 | free(msg); |
444 | free(msg); |
445 | } |
445 | } |
446 | if (FIBRIL_connection->close_callid) |
446 | if (FIBRIL_connection->close_callid) |
447 | ipc_answer_fast(FIBRIL_connection->close_callid, 0, 0, 0); |
447 | ipc_answer_0(FIBRIL_connection->close_callid, EOK); |
448 | 448 | ||
449 | return 0; |
449 | return 0; |
450 | } |
450 | } |
451 | 451 | ||
452 | /** Create a new fibril for a new connection. |
452 | /** Create a new fibril for a new connection. |
Line 473... | Line 473... | ||
473 | unsigned long key; |
473 | unsigned long key; |
474 | 474 | ||
475 | conn = malloc(sizeof(*conn)); |
475 | conn = malloc(sizeof(*conn)); |
476 | if (!conn) { |
476 | if (!conn) { |
477 | if (callid) |
477 | if (callid) |
478 | ipc_answer_fast(callid, ENOMEM, 0, 0); |
478 | ipc_answer_0(callid, ENOMEM); |
479 | return NULL; |
479 | return NULL; |
480 | } |
480 | } |
481 | conn->in_phone_hash = in_phone_hash; |
481 | conn->in_phone_hash = in_phone_hash; |
482 | list_initialize(&conn->msg_queue); |
482 | list_initialize(&conn->msg_queue); |
483 | conn->callid = callid; |
483 | conn->callid = callid; |
Line 489... | Line 489... | ||
489 | 489 | ||
490 | conn->wdata.fid = fibril_create(connection_fibril, conn); |
490 | conn->wdata.fid = fibril_create(connection_fibril, conn); |
491 | if (!conn->wdata.fid) { |
491 | if (!conn->wdata.fid) { |
492 | free(conn); |
492 | free(conn); |
493 | if (callid) |
493 | if (callid) |
494 | ipc_answer_fast(callid, ENOMEM, 0, 0); |
494 | ipc_answer_0(callid, ENOMEM); |
495 | return NULL; |
495 | return NULL; |
496 | } |
496 | } |
497 | /* Add connection to the connection hash table */ |
497 | /* Add connection to the connection hash table */ |
498 | key = conn->in_phone_hash; |
498 | key = conn->in_phone_hash; |
499 | futex_down(&async_futex); |
499 | futex_down(&async_futex); |
Line 534... | Line 534... | ||
534 | /* Try to route the call through the connection hash table */ |
534 | /* Try to route the call through the connection hash table */ |
535 | if (route_call(callid, call)) |
535 | if (route_call(callid, call)) |
536 | return; |
536 | return; |
537 | 537 | ||
538 | /* Unknown call from unknown phone - hang it up */ |
538 | /* Unknown call from unknown phone - hang it up */ |
539 | ipc_answer_fast(callid, EHANGUP, 0, 0); |
539 | ipc_answer_0(callid, EHANGUP); |
540 | } |
540 | } |
541 | 541 | ||
542 | /** Fire all timeouts that expired. */ |
542 | /** Fire all timeouts that expired. */ |
543 | static void handle_expired_timeouts(void) |
543 | static void handle_expired_timeouts(void) |
544 | { |
544 | { |