all: add musl support
This commit is contained in:
parent
e150c4e748
commit
6341623e72
10 changed files with 65 additions and 35 deletions
|
|
@ -6,7 +6,7 @@ use {
|
|||
sys::{IORING_OP_SENDMSG, io_uring_sqe},
|
||||
},
|
||||
time::Time,
|
||||
utils::{buf::Buf, vec_ext::UninitVecExt},
|
||||
utils::{buf::Buf, compat::IovLength, vec_ext::UninitVecExt},
|
||||
},
|
||||
std::{mem::MaybeUninit, ptr, rc::Rc},
|
||||
uapi::{OwnedFd, c},
|
||||
|
|
@ -44,11 +44,9 @@ impl IoUring {
|
|||
st.cmsg.clear();
|
||||
st.cmsg.reserve(space);
|
||||
st.cmsg.set_len_safe(space);
|
||||
let hdr = c::cmsghdr {
|
||||
cmsg_len: 0,
|
||||
cmsg_level: c::SOL_SOCKET,
|
||||
cmsg_type: c::SCM_RIGHTS,
|
||||
};
|
||||
let mut hdr: c::cmsghdr = uapi::pod_zeroed();
|
||||
hdr.cmsg_level = c::SOL_SOCKET;
|
||||
hdr.cmsg_type = c::SCM_RIGHTS;
|
||||
uapi::cmsg_write(&mut &mut st.cmsg[..], hdr, &fd_ids[..]).unwrap();
|
||||
st.msghdr.msg_control = st.cmsg.as_ptr() as _;
|
||||
st.msghdr.msg_controllen = st.cmsg.len() as _;
|
||||
|
|
@ -66,7 +64,7 @@ impl IoUring {
|
|||
iov_len: b.len(),
|
||||
}));
|
||||
st.msghdr.msg_iov = st.iovecs.as_ptr() as _;
|
||||
st.msghdr.msg_iovlen = st.iovecs.len();
|
||||
st.msghdr.msg_iovlen = st.iovecs.len() as IovLength;
|
||||
st.data = Some(SendmsgTaskData {
|
||||
_fd: fd.clone(),
|
||||
res: pr.clone(),
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@ use {
|
|||
crate::{
|
||||
allocator::{Allocator, AllocatorError, BufferObject, BufferUsage, MappedBuffer},
|
||||
format::Format,
|
||||
utils::{oserror::OsError, page_size::page_size},
|
||||
utils::{compat::IoctlNumber, oserror::OsError, page_size::page_size},
|
||||
video::{
|
||||
LINEAR_MODIFIER, Modifier,
|
||||
dmabuf::{DmaBuf, DmaBufIds, DmaBufPlane, PlaneVec},
|
||||
|
|
@ -267,4 +267,4 @@ struct udmabuf_create {
|
|||
size: u64,
|
||||
}
|
||||
|
||||
const UDMABUF_CREATE: u64 = _IOW::<udmabuf_create>(b'u' as u64, 0x42);
|
||||
const UDMABUF_CREATE: IoctlNumber = _IOW::<udmabuf_create>(b'u' as u64, 0x42) as IoctlNumber;
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ pub mod bufio;
|
|||
pub mod cell_ext;
|
||||
pub mod clone3;
|
||||
pub mod clonecell;
|
||||
pub mod compat;
|
||||
pub mod copyhashmap;
|
||||
pub mod debug_fn;
|
||||
pub mod double_buffered;
|
||||
|
|
|
|||
|
|
@ -100,11 +100,9 @@ pub fn double_fork() -> Result<Option<OwnedFd>, ForkerError> {
|
|||
Forked::Parent { pidfd, .. } => {
|
||||
let pidfd = pidfd.raw();
|
||||
let mut buf = [MaybeUninit::uninit(); 128];
|
||||
let hdr = c::cmsghdr {
|
||||
cmsg_len: 0,
|
||||
cmsg_level: c::SOL_SOCKET,
|
||||
cmsg_type: c::SCM_RIGHTS,
|
||||
};
|
||||
let mut hdr: c::cmsghdr = uapi::pod_zeroed();
|
||||
hdr.cmsg_level = c::SOL_SOCKET;
|
||||
hdr.cmsg_type = c::SCM_RIGHTS;
|
||||
let _ = uapi::cmsg_write(&mut &mut buf[..], hdr, &pidfd);
|
||||
let iov: &[&[u8]] = &[];
|
||||
let msghdr = Msghdr {
|
||||
|
|
|
|||
11
src/utils/compat.rs
Normal file
11
src/utils/compat.rs
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
use {cfg_if::cfg_if, uapi::c};
|
||||
|
||||
cfg_if! {
|
||||
if #[cfg(target_env = "musl")] {
|
||||
pub type IoctlNumber = c::c_int;
|
||||
pub type IovLength = c::c_int;
|
||||
} else {
|
||||
pub type IoctlNumber = c::c_ulong;
|
||||
pub type IovLength = usize;
|
||||
}
|
||||
}
|
||||
|
|
@ -1,5 +1,9 @@
|
|||
use {
|
||||
crate::{format::Format, utils::oserror::OsError, video::Modifier},
|
||||
crate::{
|
||||
format::Format,
|
||||
utils::{compat::IoctlNumber, oserror::OsError},
|
||||
video::Modifier,
|
||||
},
|
||||
arrayvec::ArrayVec,
|
||||
std::rc::Rc,
|
||||
uapi::{_IOW, _IOWR, OwnedFd, c::ioctl},
|
||||
|
|
@ -74,8 +78,10 @@ struct dma_buf_import_sync_file {
|
|||
pub const DMA_BUF_SYNC_READ: u32 = 1 << 0;
|
||||
pub const DMA_BUF_SYNC_WRITE: u32 = 1 << 1;
|
||||
|
||||
const DMA_BUF_IOCTL_EXPORT_SYNC_FILE: u64 = _IOWR::<dma_buf_export_sync_file>(DMA_BUF_BASE, 2);
|
||||
const DMA_BUF_IOCTL_IMPORT_SYNC_FILE: u64 = _IOW::<dma_buf_import_sync_file>(DMA_BUF_BASE, 3);
|
||||
const DMA_BUF_IOCTL_EXPORT_SYNC_FILE: IoctlNumber =
|
||||
_IOWR::<dma_buf_export_sync_file>(DMA_BUF_BASE, 2) as IoctlNumber;
|
||||
const DMA_BUF_IOCTL_IMPORT_SYNC_FILE: IoctlNumber =
|
||||
_IOW::<dma_buf_import_sync_file>(DMA_BUF_BASE, 3) as IoctlNumber;
|
||||
|
||||
pub fn dma_buf_export_sync_file(dmabuf: &OwnedFd, flags: u32) -> Result<OwnedFd, OsError> {
|
||||
let mut data = dma_buf_export_sync_file { flags, fd: -1 };
|
||||
|
|
|
|||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
use {
|
||||
crate::{
|
||||
utils::{bitflags::BitflagsExt, oserror::OsError},
|
||||
utils::{bitflags::BitflagsExt, compat::IoctlNumber, oserror::OsError},
|
||||
video::drm::{
|
||||
DrmBlob, DrmCardResources, DrmConnector, DrmConnectorInfo, DrmCrtc, DrmEncoder,
|
||||
DrmEncoderInfo, DrmError, DrmFb, DrmModeInfo, DrmPlane, DrmPlaneInfo, DrmProperty,
|
||||
|
|
@ -23,7 +23,7 @@ use {
|
|||
pub unsafe fn ioctl<T>(fd: c::c_int, request: c::c_ulong, t: &mut T) -> Result<c::c_int, OsError> {
|
||||
let mut ret;
|
||||
loop {
|
||||
ret = unsafe { c::ioctl(fd, request, &mut *t) };
|
||||
ret = unsafe { c::ioctl(fd, request as IoctlNumber, &mut *t) };
|
||||
if ret != -1 {
|
||||
return Ok(ret);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue