[alsa-devel] [PATCH 00/24] ALSA: ctl: refactoring compat layer
Takashi Sakamoto
o-takashi at sakamocchi.jp
Sat Nov 25 10:19:42 CET 2017
Hi,
ALSA control core supports system call compatibility layer because some
structures in ALSA control interface includes members of 'long' and
'pointer' types and change own layout according to ABIs. In this point,
it's enough for the layer to have handlers for structures on ABIs with
'ILP32' data model.
A recent commit of 6236d8bb2afc ('ALSA: ctl: Fix ioctls for X32 ABI')
clear that System V ABI for i386 architecture is unique than the other
ABIs with 'ILP32' data model. On this ABI, machine type for storage class
of 'long long' type has 4 bytes alignment. This is different from the
other ABIs.
In current implementation of this layer, the same structure is used for
i386 ABI and the other ABI with 'ILP32' data model except for x32 ABI.
Macro is used to switch between these. But in a view of data model,
it's better to define structure for i386 ABI uniquely against the
other ABIs including x32 for simplicity.
Additionally, this layer includes some points to be improved:
- cancel allocation in user space from kernel land
- reduce kernel stack usage
This patchset is my attempts to improve the layer. For this purpose,
this patchset introduces a local framework to describe consistent method
to convert and process data for differences of structure layout.
Takashi Sakamoto (24):
ALSA: ctl: introduce local framework to handle compat ioctl requests
ALSA: ctl: add serializer/deserializer of 'elem_list' structure for
32bit ABI compatibility
ALSA: ctl: add serializer/deserializer of 'elem_info' structure for
32bit ABI compatibility
ALSA: ctl: add serializer/deserializer of 'elem_value' structure for
modern 32 bit ABIs compatibility
ALSA: ctl: add serializer/deserializer of 'elem_value' structure for
i386 ABI compatibility
ALSA: ctl: change prototype of local function for ELEM_LIST ioctl
ALSA: ctl: add a helper function to allocate for ELEM_LIST request
ALSA: ctl: cancel allocation in user space for ELEM_LIST request
ALSA: ctl: unify calls of D0-wait function for ELEM_INFO request
ALSA: ctl: unify calls of D0-wait function for ELEM_READ request
ALSA: ctl: unify calls of D0-wait function for ELEM_WRITE request
ALSA: ctl: allocation of elem_info data for ELEM_INFO request
ALSA: ctl: change prototype of local function for ELEM_WRITE ioctl
ALSA: ctl: change prototype of local function for ELEM_READ ioctl
ALSA: ctl: allocation of elem_info data for ELEM_ADD/ELEM_REPLACE
requests
ALSA: ctl: add replace helper function to allocate own buffer
ALSA: ctl: move removal code to replace helper function
ALSA: ctl: replacement for compat ELEM_LIST operation for any 32 bit
ABI
ALSA: ctl: replacement for compat ELEM_INFO operation for any 32 bit
ABI
ALSA: ctl: replacement for compat ELEM_ADD operation for any 32 bit
ABI
ALSA: ctl: replacement for compat ELEM_REPLACE operation for any 32
bit ABI
ALSA: ctl: replacement for compat ELEM_READ/ELEM_WRITE operation for
i386 ABI
ALSA: ctl: replacement for compat ELEM_READ/ELEM_WRITE operation for
modern 32 bit ABI
ALSA: ctl: code cleanup for compat handler
sound/core/control.c | 242 ++++++++-----
sound/core/control_compat.c | 837 +++++++++++++++++++++++++-------------------
2 files changed, 630 insertions(+), 449 deletions(-)
--
2.14.1
More information about the Alsa-devel
mailing list