Fix shmem on android (#272)
* Fix shmem on android * Switch back to ulong
This commit is contained in:
parent
5caeb46b67
commit
fccb9a1c55
@ -26,11 +26,12 @@ pub type StdShMemProvider = Win32ShMemProvider;
|
|||||||
pub type StdShMem = Win32ShMem;
|
pub type StdShMem = Win32ShMem;
|
||||||
|
|
||||||
#[cfg(all(target_os = "android", feature = "std"))]
|
#[cfg(all(target_os = "android", feature = "std"))]
|
||||||
pub type StdShMemProvider = RcShMemProvider<ServedShMemProvider<AshmemShMemProvider>>;
|
pub type StdShMemProvider =
|
||||||
|
RcShMemProvider<ServedShMemProvider<unix_shmem::ashmem::AshmemShMemProvider>>;
|
||||||
#[cfg(all(target_os = "android", feature = "std"))]
|
#[cfg(all(target_os = "android", feature = "std"))]
|
||||||
pub type StdShMem = RcShMem<ServedShMemProvider<AshmemShMemProvider>>;
|
pub type StdShMem = RcShMem<ServedShMemProvider<unix_shmem::ashmem::AshmemShMemProvider>>;
|
||||||
#[cfg(all(target_os = "android", feature = "std"))]
|
#[cfg(all(target_os = "android", feature = "std"))]
|
||||||
pub type StdShMemService = ShMemService<AshmemShMemProvider>;
|
pub type StdShMemService = ShMemService<unix_shmem::ashmem::AshmemShMemProvider>;
|
||||||
|
|
||||||
#[cfg(all(feature = "std", target_vendor = "apple"))]
|
#[cfg(all(feature = "std", target_vendor = "apple"))]
|
||||||
pub type StdShMemProvider = RcShMemProvider<ServedShMemProvider<MmapShMemProvider>>;
|
pub type StdShMemProvider = RcShMemProvider<ServedShMemProvider<MmapShMemProvider>>;
|
||||||
@ -465,7 +466,7 @@ where
|
|||||||
pub mod unix_shmem {
|
pub mod unix_shmem {
|
||||||
/// Shared memory provider for Android, allocating and forwarding maps over unix domain sockets.
|
/// Shared memory provider for Android, allocating and forwarding maps over unix domain sockets.
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
pub type UnixShMemProvider = ashmem::ServedShMemProvider;
|
pub type UnixShMemProvider = ashmem::AshmemShMemProvider;
|
||||||
/// Shared memory for Android
|
/// Shared memory for Android
|
||||||
#[cfg(target_os = "android")]
|
#[cfg(target_os = "android")]
|
||||||
pub type UnixShMem = ashmem::AshmemShMem;
|
pub type UnixShMem = ashmem::AshmemShMem;
|
||||||
@ -909,7 +910,7 @@ pub mod unix_shmem {
|
|||||||
//return Err(Error::Unknown("Failed to set the ashmem mapping's name".to_string()));
|
//return Err(Error::Unknown("Failed to set the ashmem mapping's name".to_string()));
|
||||||
//};
|
//};
|
||||||
|
|
||||||
if ioctl(fd, ASHMEM_SET_SIZE, map_size) != 0 {
|
if ioctl(fd, ASHMEM_SET_SIZE as _, map_size) != 0 {
|
||||||
close(fd);
|
close(fd);
|
||||||
return Err(Error::Unknown(
|
return Err(Error::Unknown(
|
||||||
"Failed to set the ashmem mapping's size".to_string(),
|
"Failed to set the ashmem mapping's size".to_string(),
|
||||||
@ -944,7 +945,7 @@ pub mod unix_shmem {
|
|||||||
unsafe {
|
unsafe {
|
||||||
let fd: i32 = id.to_string().parse().unwrap();
|
let fd: i32 = id.to_string().parse().unwrap();
|
||||||
#[allow(clippy::cast_sign_loss)]
|
#[allow(clippy::cast_sign_loss)]
|
||||||
if ioctl(fd, ASHMEM_GET_SIZE) as u32 as usize != map_size {
|
if ioctl(fd, ASHMEM_GET_SIZE as _) as u32 as usize != map_size {
|
||||||
return Err(Error::Unknown(
|
return Err(Error::Unknown(
|
||||||
"The mapping's size differs from the requested size".to_string(),
|
"The mapping's size differs from the requested size".to_string(),
|
||||||
));
|
));
|
||||||
@ -1001,14 +1002,14 @@ pub mod unix_shmem {
|
|||||||
let fd: i32 = self.id.to_string().parse().unwrap();
|
let fd: i32 = self.id.to_string().parse().unwrap();
|
||||||
|
|
||||||
#[allow(clippy::cast_sign_loss)]
|
#[allow(clippy::cast_sign_loss)]
|
||||||
let length = ioctl(fd, ASHMEM_GET_SIZE) as u32;
|
let length = ioctl(fd, ASHMEM_GET_SIZE as _) as u32;
|
||||||
|
|
||||||
let ap = ashmem_pin {
|
let ap = ashmem_pin {
|
||||||
offset: 0,
|
offset: 0,
|
||||||
len: length,
|
len: length,
|
||||||
};
|
};
|
||||||
|
|
||||||
ioctl(fd, ASHMEM_UNPIN, &ap);
|
ioctl(fd, ASHMEM_UNPIN as _, &ap);
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user