[ioctl] No-of for TIOCSPGRP command & code clean-up

This commit is contained in:
Jesús Leganés-Combarro 'piranna
2019-07-04 07:03:39 +02:00
parent cc83ec9ac1
commit 3fe0183d85

View File

@ -67,11 +67,12 @@ use libc::{
EINVAL, EINVAL,
// sockaddr_in, // sockaddr_in,
FIOCLEX, FIOCLEX,
FIONBIO, // FIONBIO,
F_GETFD, F_GETFD,
F_SETFD, F_SETFD,
SOL_SOCKET, SOL_SOCKET,
TIOCGWINSZ, TIOCGWINSZ,
TIOCSPGRP,
}; };
#[allow(unused_imports)] #[allow(unused_imports)]
@ -417,30 +418,21 @@ pub fn ___syscall330(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> pid_
/// ioctl /// ioctl
pub fn ___syscall54(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int { pub fn ___syscall54(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int {
debug!("emscripten::___syscall54 (ioctl) {}", _which); debug!("emscripten::___syscall54 (ioctl) {}", _which);
let fd: i32 = varargs.get(ctx); let fd: i32 = varargs.get(ctx);
let request: u32 = varargs.get(ctx); let request: u32 = varargs.get(ctx);
debug!("=> fd: {}, op: {}", fd, request); debug!("=> fd: {}, op: {}", fd, request);
// Got the equivalents here: https://code.woboq.org/linux/linux/include/uapi/asm-generic/ioctls.h.html // Got the equivalents here: https://code.woboq.org/linux/linux/include/uapi/asm-generic/ioctls.h.html
// let argp: u32 = varargs.get(ctx); let argp: u32 = varargs.get(ctx);
// let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void; let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void;
// let ret = unsafe { ioctl(fd, request as _, argp_ptr) }; // let ret = unsafe { ioctl(fd, request as _, argp_ptr) };
// debug!("=> {}", ret); // debug!("=> {}", ret);
// ret // ret
match request as _ { match request as _ {
21537 => { TIOCGWINSZ => {
// FIONBIO let ret = unsafe { ioctl(fd, request as _, argp_ptr) };
let argp: u32 = varargs.get(ctx);
let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void;
let ret = unsafe { ioctl(fd, FIONBIO, argp_ptr) };
debug!("ret(FIONBIO): {}", ret);
ret
// 0
}
21523 => {
// TIOCGWINSZ
let argp: u32 = varargs.get(ctx);
let argp_ptr = emscripten_memory_pointer!(ctx.memory(0), argp) as *mut c_void;
let ret = unsafe { ioctl(fd, TIOCGWINSZ, argp_ptr) };
debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret); debug!("ret(TIOCGWINSZ): {} (harcoded to 0)", ret);
// ret // ret
// TODO: We hardcode the value to have emscripten tests pass, as for some reason // TODO: We hardcode the value to have emscripten tests pass, as for some reason
@ -451,13 +443,15 @@ pub fn ___syscall54(ctx: &mut Ctx, _which: c_int, mut varargs: VarArgs) -> c_int
ret ret
} }
} }
_ => { TIOCSPGRP => {
debug!( debug!("ret(TIOCSPGRP): (noop)");
"emscripten::___syscall54 -> non implemented case {}",
request
);
0 0
} }
_ => {
let ret = unsafe { ioctl(fd, request as _, argp_ptr) };
debug!("ret({}): {}", request, ret);
ret
}
} }
} }