Skip to main content

starnix_modules_fastrpc/
lib.rs

1// Copyright 2025 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#![recursion_limit = "256"]
6
7mod dma_heap;
8mod fastrpc;
9
10pub use fastrpc::fastrpc_device_init;
11use starnix_core::task::CurrentTask;
12use starnix_uapi::user_address::ArchSpecific;
13
14pub fn canonicalize_ioctl_request(current_task: &CurrentTask, request: u32) -> u32 {
15    if current_task.is_arch32() {
16        match request {
17            // FastRPC
18            linux_uapi::arch32::FASTRPC_IOCTL_INVOKE => linux_uapi::FASTRPC_IOCTL_INVOKE,
19            linux_uapi::arch32::FASTRPC_IOCTL_INVOKE_FD => linux_uapi::FASTRPC_IOCTL_INVOKE_FD,
20            linux_uapi::arch32::FASTRPC_IOCTL_GETINFO => linux_uapi::FASTRPC_IOCTL_GETINFO,
21            linux_uapi::arch32::FASTRPC_IOCTL_GET_DSP_INFO => {
22                linux_uapi::FASTRPC_IOCTL_GET_DSP_INFO
23            }
24            linux_uapi::arch32::FASTRPC_IOCTL_INVOKE2 => linux_uapi::FASTRPC_IOCTL_INVOKE2,
25            linux_uapi::arch32::FASTRPC_IOCTL_INIT => linux_uapi::FASTRPC_IOCTL_INIT,
26            // DMA Heaps
27            linux_uapi::arch32::DMA_HEAP_IOCTL_ALLOC => linux_uapi::DMA_HEAP_IOCTL_ALLOC,
28            linux_uapi::arch32::DMA_BUF_IOCTL_SYNC => linux_uapi::DMA_BUF_IOCTL_SYNC,
29            linux_uapi::arch32::DMA_BUF_SET_NAME_B => linux_uapi::DMA_BUF_SET_NAME_B,
30            _ => request,
31        }
32    } else {
33        request
34    }
35}