commit
eb4b93afed
10 changed files with 65 additions and 35 deletions
12
.builds/check-musl.yml
Normal file
12
.builds/check-musl.yml
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
image: archlinux
|
||||
sources:
|
||||
- https://github.com/mahkoh/jay
|
||||
tasks:
|
||||
- install: |
|
||||
sudo pacman -Syu --noconfirm
|
||||
sudo pacman -S --noconfirm rustup shaderc musl
|
||||
rustup toolchain install stable
|
||||
rustup target install x86_64-unknown-linux-musl
|
||||
- build: |
|
||||
cd jay
|
||||
cargo check --target x86_64-unknown-linux-musl
|
||||
33
Cargo.lock
generated
33
Cargo.lock
generated
|
|
@ -578,6 +578,7 @@ dependencies = [
|
|||
"bstr",
|
||||
"byteorder",
|
||||
"cc",
|
||||
"cfg-if",
|
||||
"chrono",
|
||||
"clap",
|
||||
"clap_complete",
|
||||
|
|
@ -749,6 +750,15 @@ dependencies = [
|
|||
"syn 2.0.96",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "link-cplusplus"
|
||||
version = "1.0.10"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "4a6f6da007f968f9def0d65a05b187e2960183de70c160204ecfccf0ee330212"
|
||||
dependencies = [
|
||||
"cc",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "linux-raw-sys"
|
||||
version = "0.4.15"
|
||||
|
|
@ -1088,12 +1098,9 @@ checksum = "9e110b7d5a1335c2e801176c42a626a905c23eecdee104d9bdfbd6ea5f0b8368"
|
|||
|
||||
[[package]]
|
||||
name = "roxmltree"
|
||||
version = "0.14.1"
|
||||
version = "0.20.0"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b"
|
||||
dependencies = [
|
||||
"xmlparser",
|
||||
]
|
||||
checksum = "6c20b6793b5c2fa6553b250154b78d6d0db37e72700ae35fad9387a46f487c97"
|
||||
|
||||
[[package]]
|
||||
name = "run-on-drop"
|
||||
|
|
@ -1204,9 +1211,9 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "shaderc"
|
||||
version = "0.8.3"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "27e07913ada18607bb60d12431cbe3358d3bbebbe95948e1618851dc01e63b7b"
|
||||
checksum = "1cdc8a26f751f141968dbc08fc01cfa3f4a288351f81cfd9148db41aa189f635"
|
||||
dependencies = [
|
||||
"libc",
|
||||
"shaderc-sys",
|
||||
|
|
@ -1214,12 +1221,14 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "shaderc-sys"
|
||||
version = "0.8.3"
|
||||
version = "0.9.1"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "73120d240fe22196300f39ca8547ca2d014960f27b19b47b21288b396272f7f7"
|
||||
checksum = "275f0ea572da7183c0cd0a060ba67c9fb54934523d4c9a9494ce5828c533d40b"
|
||||
dependencies = [
|
||||
"cmake",
|
||||
"libc",
|
||||
"link-cplusplus",
|
||||
"pkg-config",
|
||||
"roxmltree",
|
||||
]
|
||||
|
||||
|
|
@ -1656,12 +1665,6 @@ version = "0.52.6"
|
|||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
|
||||
|
||||
[[package]]
|
||||
name = "xmlparser"
|
||||
version = "0.13.6"
|
||||
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||
checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4"
|
||||
|
||||
[[package]]
|
||||
name = "zerocopy"
|
||||
version = "0.7.35"
|
||||
|
|
|
|||
|
|
@ -64,12 +64,13 @@ tracy-client-sys = { version = "0.24.1", features = ["ondemand", "manual-lifetim
|
|||
kbvm = "0.1.4"
|
||||
tiny-skia = { version = "0.11.4", default-features = false, features = ["std"] }
|
||||
regex = "1.11.1"
|
||||
cfg-if = "1.0.0"
|
||||
|
||||
[build-dependencies]
|
||||
repc = "0.1.1"
|
||||
anyhow = "1.0.79"
|
||||
bstr = { version = "1.9.0", default-features = false, features = ["std"] }
|
||||
shaderc = "0.8.3"
|
||||
shaderc = "0.9.1"
|
||||
cc = "1.0.86"
|
||||
|
||||
#[profile.dev.build-override]
|
||||
|
|
|
|||
|
|
@ -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