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/usbvirt/include/usbvirt/ipc.h

    r764d71e r79ae36dd  
    3333 * IPC wrappers for virtual USB.
    3434 */
     35
    3536#ifndef LIBUSBVIRT_IPC_H_
    3637#define LIBUSBVIRT_IPC_H_
     
    4041#include <bool.h>
    4142#include <usbvirt/device.h>
     43#include <async.h>
    4244
    4345/** IPC methods communication between host controller and virtual device. */
     
    5254} usbvirt_hc_to_device_method_t;
    5355
    54 int usbvirt_ipc_send_control_read(int, void *, size_t,
     56extern int usbvirt_ipc_send_control_read(async_sess_t *, void *, size_t,
    5557    void *, size_t, size_t *);
    56 int usbvirt_ipc_send_control_write(int, void *, size_t,
     58extern int usbvirt_ipc_send_control_write(async_sess_t *, void *, size_t,
    5759    void *, size_t);
    58 int usbvirt_ipc_send_data_in(int, usb_endpoint_t, usb_transfer_type_t,
    59     void *, size_t, size_t *);
    60 int usbvirt_ipc_send_data_out(int, usb_endpoint_t, usb_transfer_type_t,
    61     void *, size_t);
     60extern int usbvirt_ipc_send_data_in(async_sess_t *, usb_endpoint_t,
     61    usb_transfer_type_t, void *, size_t, size_t *);
     62extern int usbvirt_ipc_send_data_out(async_sess_t *, usb_endpoint_t,
     63    usb_transfer_type_t, void *, size_t);
    6264
    63 bool usbvirt_is_usbvirt_method(sysarg_t);
    64 bool usbvirt_ipc_handle_call(usbvirt_device_t *, ipc_callid_t, ipc_call_t *);
     65extern bool usbvirt_is_usbvirt_method(sysarg_t);
     66extern bool usbvirt_ipc_handle_call(usbvirt_device_t *, ipc_callid_t,
     67    ipc_call_t *);
    6568
    6669#endif
     70
    6771/**
    6872 * @}
Note: See TracChangeset for help on using the changeset viewer.