Changeset 984a9ba in mainline for uspace/drv/char


Ignore:
Timestamp:
2018-07-05T09:34:09Z (7 years ago)
Author:
Martin Decky <martin@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
63d46341
Parents:
76f566d
Message:

do not expose the call capability handler from the async framework

Keep the call capability handler encapsulated within the async framework
and do not expose it explicitly via its API. Use the pointer to
ipc_call_t as the sole object identifying an IPC call in the code that
uses the async framework.

This plugs a major leak in the abstraction and also simplifies both the
async framework (slightly) and all IPC servers.

Location:
uspace/drv/char
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • uspace/drv/char/i8042/i8042.c

    r76f566d r984a9ba  
    6767#define i8042_KBD_TRANSLATE  0x40  /* Use this to switch to XT scancodes */
    6868
    69 static void i8042_char_conn(cap_call_handle_t, ipc_call_t *, void *);
     69static void i8042_char_conn(ipc_call_t *, void *);
    7070static errno_t i8042_read(chardev_srv_t *, void *, size_t, size_t *);
    7171static errno_t i8042_write(chardev_srv_t *, const void *, size_t, size_t *);
     
    415415/** Handle data requests.
    416416 *
    417  * @param id   chandle
    418417 * @param call IPC request.
    419418 * @param arg  ddf_fun_t function.
    420  */
    421 void i8042_char_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
     419 *
     420 */
     421void i8042_char_conn(ipc_call_t *icall, void *arg)
    422422{
    423423        i8042_port_t *port = ddf_fun_data_get((ddf_fun_t *)arg);
    424424
    425         chardev_conn(icall_handle, icall, &port->cds);
     425        chardev_conn(icall, &port->cds);
    426426}
    427427
  • uspace/drv/char/msim-con/msim-con.c

    r76f566d r984a9ba  
    4141#include "msim-con.h"
    4242
    43 static void msim_con_connection(cap_call_handle_t, ipc_call_t *, void *);
     43static void msim_con_connection(ipc_call_t *, void *);
    4444
    4545static errno_t msim_con_read(chardev_srv_t *, void *, size_t, size_t *);
     
    217217
    218218/** Character device connection handler. */
    219 static void msim_con_connection(cap_call_handle_t icall_handle, ipc_call_t *icall,
    220     void *arg)
     219static void msim_con_connection(ipc_call_t *icall, void *arg)
    221220{
    222221        msim_con_t *con = (msim_con_t *) ddf_dev_data_get(
    223222            ddf_fun_get_dev((ddf_fun_t *) arg));
    224223
    225         chardev_conn(icall_handle, icall, &con->cds);
     224        chardev_conn(icall, &con->cds);
    226225}
    227226
  • uspace/drv/char/ns8250/ns8250.c

    r76f566d r984a9ba  
    311311static errno_t ns8250_open(chardev_srvs_t *, chardev_srv_t *);
    312312static errno_t ns8250_close(chardev_srv_t *);
    313 static void ns8250_default_handler(chardev_srv_t *, cap_call_handle_t, ipc_call_t *);
     313static void ns8250_default_handler(chardev_srv_t *, ipc_call_t *);
    314314
    315315/** The character interface's callbacks. */
     
    322322};
    323323
    324 static void ns8250_char_conn(cap_call_handle_t, ipc_call_t *, void *);
     324static void ns8250_char_conn(ipc_call_t *, void *);
    325325
    326326static errno_t ns8250_dev_add(ddf_dev_t *dev);
     
    10671067 * Configure the parameters of the serial communication.
    10681068 */
    1069 static void ns8250_default_handler(chardev_srv_t *srv, cap_call_handle_t chandle,
    1070     ipc_call_t *call)
     1069static void ns8250_default_handler(chardev_srv_t *srv, ipc_call_t *call)
    10711070{
    10721071        ns8250_t *ns8250 = srv_ns8250(srv);
     
    10791078                ns8250_get_props(ns8250->dev, &baud_rate, &parity, &word_length,
    10801079                    &stop_bits);
    1081                 async_answer_4(chandle, EOK, baud_rate, parity, word_length,
     1080                async_answer_4(call, EOK, baud_rate, parity, word_length,
    10821081                    stop_bits);
    10831082                break;
     
    10901089                ret = ns8250_set_props(ns8250->dev, baud_rate, parity, word_length,
    10911090                    stop_bits);
    1092                 async_answer_0(chandle, ret);
     1091                async_answer_0(call, ret);
    10931092                break;
    10941093
    10951094        default:
    1096                 async_answer_0(chandle, ENOTSUP);
    1097         }
    1098 }
    1099 
    1100 void ns8250_char_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
     1095                async_answer_0(call, ENOTSUP);
     1096        }
     1097}
     1098
     1099void ns8250_char_conn(ipc_call_t *icall, void *arg)
    11011100{
    11021101        ns8250_t *ns8250 = fun_ns8250((ddf_fun_t *)arg);
    11031102
    1104         chardev_conn(icall_handle, icall, &ns8250->cds);
     1103        chardev_conn(icall, &ns8250->cds);
    11051104}
    11061105
  • uspace/drv/char/pl050/pl050.c

    r76f566d r984a9ba  
    5454static errno_t pl050_fun_online(ddf_fun_t *);
    5555static errno_t pl050_fun_offline(ddf_fun_t *);
    56 static void pl050_char_conn(cap_call_handle_t, ipc_call_t *, void *);
     56static void pl050_char_conn(ipc_call_t *, void *);
    5757static errno_t pl050_read(chardev_srv_t *, void *, size_t, size_t *);
    5858static errno_t pl050_write(chardev_srv_t *, const void *, size_t, size_t *);
     
    286286}
    287287
    288 void pl050_char_conn(cap_call_handle_t icall_handle, ipc_call_t *icall, void *arg)
     288void pl050_char_conn(ipc_call_t *icall, void *arg)
    289289{
    290290        pl050_t *pl050 = pl050_from_fun((ddf_fun_t *)arg);
    291291
    292         chardev_conn(icall_handle, icall, &pl050->cds);
     292        chardev_conn(icall, &pl050->cds);
    293293}
    294294
  • uspace/drv/char/ski-con/ski-con.c

    r76f566d r984a9ba  
    5050static errno_t ski_con_fibril(void *arg);
    5151static int32_t ski_con_getchar(void);
    52 static void ski_con_connection(cap_call_handle_t, ipc_call_t *, void *);
     52static void ski_con_connection(ipc_call_t *, void *);
    5353
    5454static errno_t ski_con_read(chardev_srv_t *, void *, size_t, size_t *);
     
    255255
    256256/** Character device connection handler. */
    257 static void ski_con_connection(cap_call_handle_t icall_handle, ipc_call_t *icall,
    258     void *arg)
     257static void ski_con_connection(ipc_call_t *icall, void *arg)
    259258{
    260259        ski_con_t *con = (ski_con_t *) ddf_dev_data_get(
    261260            ddf_fun_get_dev((ddf_fun_t *) arg));
    262261
    263         chardev_conn(icall_handle, icall, &con->cds);
     262        chardev_conn(icall, &con->cds);
    264263}
    265264
  • uspace/drv/char/sun4v-con/sun4v-con.c

    r76f566d r984a9ba  
    4242#include "sun4v-con.h"
    4343
    44 static void sun4v_con_connection(cap_call_handle_t, ipc_call_t *, void *);
     44static void sun4v_con_connection(ipc_call_t *, void *);
    4545
    4646#define POLL_INTERVAL  10000
     
    181181
    182182/** Character device connection handler. */
    183 static void sun4v_con_connection(cap_call_handle_t icall_handle, ipc_call_t *icall,
    184     void *arg)
     183static void sun4v_con_connection(ipc_call_t *icall, void *arg)
    185184{
    186185        sun4v_con_t *con = (sun4v_con_t *) ddf_dev_data_get(
    187186            ddf_fun_get_dev((ddf_fun_t *) arg));
    188187
    189         chardev_conn(icall_handle, icall, &con->cds);
     188        chardev_conn(icall, &con->cds);
    190189}
    191190
Note: See TracChangeset for help on using the changeset viewer.