• Robert Baldyga's avatar
    usb: gadget: f_fs: add aio support · 2e4c7553
    Robert Baldyga authored
    This patch adds asynchronous I/O support for FunctionFS endpoint files.
    It adds ffs_epfile_aio_write() and ffs_epfile_aio_read() functions responsible
    for preparing AIO operations.
    
    It also modifies ffs_epfile_io() function, adding aio handling code. Instead
    of extending list of parameters of this function, there is new struct
    ffs_io_data which contains all information needed to perform I/O operation.
    Pointer to this struct replaces "buf" and "len" parameters of ffs_epfile_io()
    function. Allocated buffer is freed immediately only after sync operation,
    because in async IO it's freed in complete funcion. For each async operation
    an USB request is allocated, because it allows to have more than one request
    queued on single endpoint.
    
    According to changes in ffs_epfile_io() function, functions ffs_epfile_write()
    and ffs_epfile_read() are updated to use new API.
    
    For asynchronous I/O operations there is new request complete function named
    ffs_epfile_async_io_complete(), which completes AIO operation, and frees
    used memory.
    Signed-off-by: default avatarRobert Baldyga <r.baldyga@samsung.com>
    Acked-by: default avatarMichal Nazarewicz <mina86@mina86.com>
    Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
    2e4c7553
f_fs.c 64.8 KB