Ignore:
Timestamp:
2011-06-08T19:01:55Z (13 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
0eff68e
Parents:
764d71e
Message:

new async framework with integrated exchange tracking

  • strict isolation between low-level IPC and high-level async framework with integrated exchange tracking
    • each IPC connection is represented by an async_sess_t structure
    • each IPC exchange is represented by an async_exch_t structure
    • exchange management is either based on atomic messages (EXCHANGE_ATOMIC), locking (EXCHANGE_SERIALIZE) or connection cloning (EXCHANGE_CLONE)
  • async_obsolete: temporary compatibility layer to keep old async clients working (several pieces of code are currently broken, but only non-essential functionality)
  • IPC_M_PHONE_HANGUP is now method no. 0 (for elegant boolean evaluation)
  • IPC_M_DEBUG_ALL has been renamed to IPC_M_DEBUG
  • IPC_M_PING has been removed (VFS protocol now has VFS_IN_PING)
  • console routines in libc have been rewritten for better abstraction
  • additional use for libc-private header files (FILE structure opaque to the client)
  • various cstyle changes (typos, indentation, missing externs in header files, improved comments, etc.)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/c/generic/net/socket_client.c

    r764d71e r79ae36dd  
    3939#include <assert.h>
    4040#include <async.h>
     41#include <async_obsolete.h>
    4142#include <fibril_synch.h>
    4243#include <stdint.h>
     
    472473        }
    473474
    474         rc = (int) async_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL,
     475        rc = (int) async_obsolete_req_3_3(phone, NET_SOCKET, socket_id, 0, service, NULL,
    475476            &fragment_size, &header_size);
    476477        if (rc != EOK) {
     
    493494                dyn_fifo_destroy(&socket->accepted);
    494495                free(socket);
    495                 async_msg_3(phone, NET_SOCKET_CLOSE, (sysarg_t) socket_id, 0,
     496                async_obsolete_msg_3(phone, NET_SOCKET_CLOSE, (sysarg_t) socket_id, 0,
    496497                    service);
    497498                return rc;
     
    538539
    539540        /* Request the message */
    540         message_id = async_send_3(socket->phone, message,
     541        message_id = async_obsolete_send_3(socket->phone, message,
    541542            (sysarg_t) socket->socket_id, arg2, socket->service, NULL);
    542543        /* Send the address */
    543         async_data_write_start(socket->phone, data, datalength);
     544        async_obsolete_data_write_start(socket->phone, data, datalength);
    544545
    545546        fibril_rwlock_read_unlock(&socket_globals.lock);
     
    598599
    599600        /* Request listen backlog change */
    600         result = (int) async_req_3_0(socket->phone, NET_SOCKET_LISTEN,
     601        result = (int) async_obsolete_req_3_0(socket->phone, NET_SOCKET_LISTEN,
    601602            (sysarg_t) socket->socket_id, (sysarg_t) backlog, socket->service);
    602603
     
    681682
    682683        /* Request accept */
    683         message_id = async_send_5(socket->phone, NET_SOCKET_ACCEPT,
     684        message_id = async_obsolete_send_5(socket->phone, NET_SOCKET_ACCEPT,
    684685            (sysarg_t) socket->socket_id, 0, socket->service, 0,
    685686            new_socket->socket_id, &answer);
    686687
    687688        /* Read address */
    688         async_data_read_start(socket->phone, cliaddr, *addrlen);
     689        async_obsolete_data_read_start(socket->phone, cliaddr, *addrlen);
    689690        fibril_rwlock_write_unlock(&socket_globals.lock);
    690691        async_wait_for(message_id, &ipc_result);
     
    780781
    781782        /* Request close */
    782         rc = (int) async_req_3_0(socket->phone, NET_SOCKET_CLOSE,
     783        rc = (int) async_obsolete_req_3_0(socket->phone, NET_SOCKET_CLOSE,
    783784            (sysarg_t) socket->socket_id, 0, socket->service);
    784785        if (rc != EOK) {
     
    853854
    854855        /* Request send */
    855         message_id = async_send_5(socket->phone, message,
     856        message_id = async_obsolete_send_5(socket->phone, message,
    856857            (sysarg_t) socket->socket_id,
    857858            (fragments == 1 ? datalength : socket->data_fragment_size),
     
    860861        /* Send the address if given */
    861862        if (!toaddr ||
    862             (async_data_write_start(socket->phone, toaddr, addrlen) == EOK)) {
     863            (async_obsolete_data_write_start(socket->phone, toaddr, addrlen) == EOK)) {
    863864                if (fragments == 1) {
    864865                        /* Send all if only one fragment */
    865                         async_data_write_start(socket->phone, data, datalength);
     866                        async_obsolete_data_write_start(socket->phone, data, datalength);
    866867                } else {
    867868                        /* Send the first fragment */
    868                         async_data_write_start(socket->phone, data,
     869                        async_obsolete_data_write_start(socket->phone, data,
    869870                            socket->data_fragment_size - socket->header_size);
    870871                        data = ((const uint8_t *) data) +
     
    873874                        /* Send the middle fragments */
    874875                        while (--fragments > 1) {
    875                                 async_data_write_start(socket->phone, data,
     876                                async_obsolete_data_write_start(socket->phone, data,
    876877                                    socket->data_fragment_size);
    877878                                data = ((const uint8_t *) data) +
     
    880881
    881882                        /* Send the last fragment */
    882                         async_data_write_start(socket->phone, data,
     883                        async_obsolete_data_write_start(socket->phone, data,
    883884                            (datalength + socket->header_size) %
    884885                            socket->data_fragment_size);
     
    10381039
    10391040                /* Request packet data */
    1040                 message_id = async_send_4(socket->phone, message,
     1041                message_id = async_obsolete_send_4(socket->phone, message,
    10411042                    (sysarg_t) socket->socket_id, 0, socket->service,
    10421043                    (sysarg_t) flags, &answer);
     
    10441045                /* Read the address if desired */
    10451046                if(!fromaddr ||
    1046                     (async_data_read_start(socket->phone, fromaddr,
     1047                    (async_obsolete_data_read_start(socket->phone, fromaddr,
    10471048                    *addrlen) == EOK)) {
    10481049                        /* Read the fragment lengths */
    1049                         if (async_data_read_start(socket->phone, lengths,
     1050                        if (async_obsolete_data_read_start(socket->phone, lengths,
    10501051                            sizeof(int) * (fragments + 1)) == EOK) {
    10511052                                if (lengths[fragments] <= datalength) {
     
    10541055                                        for (index = 0; index < fragments;
    10551056                                            ++index) {
    1056                                                 async_data_read_start(
     1057                                                async_obsolete_data_read_start(
    10571058                                                    socket->phone, data,
    10581059                                                    lengths[index]);
     
    10671068        } else { /* fragments == 1 */
    10681069                /* Request packet data */
    1069                 message_id = async_send_4(socket->phone, message,
     1070                message_id = async_obsolete_send_4(socket->phone, message,
    10701071                    (sysarg_t) socket->socket_id, 0, socket->service,
    10711072                    (sysarg_t) flags, &answer);
     
    10731074                /* Read the address if desired */
    10741075                if (!fromaddr ||
    1075                     (async_data_read_start(socket->phone, fromaddr,
     1076                    (async_obsolete_data_read_start(socket->phone, fromaddr,
    10761077                        *addrlen) == EOK)) {
    10771078                        /* Read all if only one fragment */
    1078                         async_data_read_start(socket->phone, data, datalength);
     1079                        async_obsolete_data_read_start(socket->phone, data, datalength);
    10791080                }
    10801081        }
     
    11901191
    11911192        /* Request option value */
    1192         message_id = async_send_3(socket->phone, NET_SOCKET_GETSOCKOPT,
     1193        message_id = async_obsolete_send_3(socket->phone, NET_SOCKET_GETSOCKOPT,
    11931194            (sysarg_t) socket->socket_id, (sysarg_t) optname, socket->service,
    11941195            NULL);
    11951196
    11961197        /* Read the length */
    1197         if (async_data_read_start(socket->phone, optlen,
     1198        if (async_obsolete_data_read_start(socket->phone, optlen,
    11981199            sizeof(*optlen)) == EOK) {
    11991200                /* Read the value */
    1200                 async_data_read_start(socket->phone, value, *optlen);
     1201                async_obsolete_data_read_start(socket->phone, value, *optlen);
    12011202        }
    12021203
Note: See TracChangeset for help on using the changeset viewer.