Redox support for some minimal ioctl's

This commit is contained in:
Jeremy Soller
2019-01-15 20:50:17 -07:00
parent 74dd5091f3
commit 1a0d363caa
7 changed files with 321 additions and 224 deletions
+196
View File
@@ -0,0 +1,196 @@
use platform::types::*;
use platform::Sys;
#[no_mangle]
pub extern "C" fn ioctl(fd: c_int, request: c_ulong, out: *mut c_void) -> c_int {
// TODO: Somehow support varargs to syscall??
Sys::ioctl(fd, request, out)
}
pub const TCGETS: c_ulong = 0x5401;
pub const TCSETS: c_ulong = 0x5402;
pub const TCSETSW: c_ulong = 0x5403;
pub const TCSETSF: c_ulong = 0x5404;
pub const TCGETA: c_ulong = 0x5405;
pub const TCSETA: c_ulong = 0x5406;
pub const TCSETAW: c_ulong = 0x5407;
pub const TCSETAF: c_ulong = 0x5408;
pub const TCSBRK: c_ulong = 0x5409;
pub const TCXONC: c_ulong = 0x540A;
pub const TCFLSH: c_ulong = 0x540B;
pub const TIOCEXCL: c_ulong = 0x540C;
pub const TIOCNXCL: c_ulong = 0x540D;
pub const TIOCSCTTY: c_ulong = 0x540E;
pub const TIOCGPGRP: c_ulong = 0x540F;
pub const TIOCSPGRP: c_ulong = 0x5410;
pub const TIOCOUTQ: c_ulong = 0x5411;
pub const TIOCSTI: c_ulong = 0x5412;
pub const TIOCGWINSZ: c_ulong = 0x5413;
pub const TIOCSWINSZ: c_ulong = 0x5414;
pub const TIOCMGET: c_ulong = 0x5415;
pub const TIOCMBIS: c_ulong = 0x5416;
pub const TIOCMBIC: c_ulong = 0x5417;
pub const TIOCMSET: c_ulong = 0x5418;
pub const TIOCGSOFTCAR: c_ulong = 0x5419;
pub const TIOCSSOFTCAR: c_ulong = 0x541A;
pub const FIONREAD: c_ulong = 0x541B;
pub const TIOCINQ: c_ulong = FIONREAD;
pub const TIOCLINUX: c_ulong = 0x541C;
pub const TIOCCONS: c_ulong = 0x541D;
pub const TIOCGSERIAL: c_ulong = 0x541E;
pub const TIOCSSERIAL: c_ulong = 0x541F;
pub const TIOCPKT: c_ulong = 0x5420;
pub const FIONBIO: c_ulong = 0x5421;
pub const TIOCNOTTY: c_ulong = 0x5422;
pub const TIOCSETD: c_ulong = 0x5423;
pub const TIOCGETD: c_ulong = 0x5424;
pub const TCSBRKP: c_ulong = 0x5425;
pub const TIOCSBRK: c_ulong = 0x5427;
pub const TIOCCBRK: c_ulong = 0x5428;
pub const TIOCGSID: c_ulong = 0x5429;
pub const TIOCGRS485: c_ulong = 0x542E;
pub const TIOCSRS485: c_ulong = 0x542F;
pub const TIOCGPTN: c_ulong = 0x8004_5430;
pub const TIOCSPTLCK: c_ulong = 0x4004_5431;
pub const TIOCGDEV: c_ulong = 0x8004_5432;
pub const TCGETX: c_ulong = 0x5432;
pub const TCSETX: c_ulong = 0x5433;
pub const TCSETXF: c_ulong = 0x5434;
pub const TCSETXW: c_ulong = 0x5435;
pub const TIOCSIG: c_ulong = 0x4004_5436;
pub const TIOCVHANGUP: c_ulong = 0x5437;
pub const TIOCGPKT: c_ulong = 0x8004_5438;
pub const TIOCGPTLCK: c_ulong = 0x8004_5439;
pub const TIOCGEXCL: c_ulong = 0x8004_5440;
pub const TIOCGPTPEER: c_ulong = 0x5441;
pub const FIONCLEX: c_ulong = 0x5450;
pub const FIOCLEX: c_ulong = 0x5451;
pub const FIOASYNC: c_ulong = 0x5452;
pub const TIOCSERCONFIG: c_ulong = 0x5453;
pub const TIOCSERGWILD: c_ulong = 0x5454;
pub const TIOCSERSWILD: c_ulong = 0x5455;
pub const TIOCGLCKTRMIOS: c_ulong = 0x5456;
pub const TIOCSLCKTRMIOS: c_ulong = 0x5457;
pub const TIOCSERGSTRUCT: c_ulong = 0x5458;
pub const TIOCSERGETLSR: c_ulong = 0x5459;
pub const TIOCSERGETMULTI: c_ulong = 0x545A;
pub const TIOCSERSETMULTI: c_ulong = 0x545B;
pub const TIOCMIWAIT: c_ulong = 0x545C;
pub const TIOCGICOUNT: c_ulong = 0x545D;
pub const FIOQSIZE: c_ulong = 0x5460;
pub const TIOCPKT_DATA: c_ulong = 0;
pub const TIOCPKT_FLUSHREAD: c_ulong = 1;
pub const TIOCPKT_FLUSHWRITE: c_ulong = 2;
pub const TIOCPKT_STOP: c_ulong = 4;
pub const TIOCPKT_START: c_ulong = 8;
pub const TIOCPKT_NOSTOP: c_ulong = 16;
pub const TIOCPKT_DOSTOP: c_ulong = 32;
pub const TIOCPKT_IOCTL: c_ulong = 64;
pub const TIOCSER_TEMT: c_ulong = 0x01;
pub const TIOCM_LE: c_ulong = 0x001;
pub const TIOCM_DTR: c_ulong = 0x002;
pub const TIOCM_RTS: c_ulong = 0x004;
pub const TIOCM_ST: c_ulong = 0x008;
pub const TIOCM_SR: c_ulong = 0x010;
pub const TIOCM_CTS: c_ulong = 0x020;
pub const TIOCM_CAR: c_ulong = 0x040;
pub const TIOCM_RNG: c_ulong = 0x080;
pub const TIOCM_DSR: c_ulong = 0x100;
pub const TIOCM_CD: c_ulong = TIOCM_CAR;
pub const TIOCM_RI: c_ulong = TIOCM_RNG;
pub const TIOCM_OUT1: c_ulong = 0x2000;
pub const TIOCM_OUT2: c_ulong = 0x4000;
pub const TIOCM_LOOP: c_ulong = 0x8000;
pub const N_TTY: c_ulong = 0;
pub const N_SLIP: c_ulong = 1;
pub const N_MOUSE: c_ulong = 2;
pub const N_PPP: c_ulong = 3;
pub const N_STRIP: c_ulong = 4;
pub const N_AX25: c_ulong = 5;
pub const N_X25: c_ulong = 6;
pub const N_6PACK: c_ulong = 7;
pub const N_MASC: c_ulong = 8;
pub const N_R3964: c_ulong = 9;
pub const N_PROFIBUS_FDL: c_ulong = 10;
pub const N_IRDA: c_ulong = 11;
pub const N_SMSBLOCK: c_ulong = 12;
pub const N_HDLC: c_ulong = 13;
pub const N_SYNC_PPP: c_ulong = 14;
pub const N_HCI: c_ulong = 15;
pub const FIOSETOWN: c_ulong = 0x8901;
pub const SIOCSPGRP: c_ulong = 0x8902;
pub const FIOGETOWN: c_ulong = 0x8903;
pub const SIOCGPGRP: c_ulong = 0x8904;
pub const SIOCATMARK: c_ulong = 0x8905;
pub const SIOCGSTAMP: c_ulong = 0x8906;
pub const SIOCGSTAMPNS: c_ulong = 0x8907;
pub const SIOCADDRT: c_ulong = 0x890B;
pub const SIOCDELRT: c_ulong = 0x890C;
pub const SIOCRTMSG: c_ulong = 0x890D;
pub const SIOCGIFNAME: c_ulong = 0x8910;
pub const SIOCSIFLINK: c_ulong = 0x8911;
pub const SIOCGIFCONF: c_ulong = 0x8912;
pub const SIOCGIFFLAGS: c_ulong = 0x8913;
pub const SIOCSIFFLAGS: c_ulong = 0x8914;
pub const SIOCGIFADDR: c_ulong = 0x8915;
pub const SIOCSIFADDR: c_ulong = 0x8916;
pub const SIOCGIFDSTADDR: c_ulong = 0x8917;
pub const SIOCSIFDSTADDR: c_ulong = 0x8918;
pub const SIOCGIFBRDADDR: c_ulong = 0x8919;
pub const SIOCSIFBRDADDR: c_ulong = 0x891a;
pub const SIOCGIFNETMASK: c_ulong = 0x891b;
pub const SIOCSIFNETMASK: c_ulong = 0x891c;
pub const SIOCGIFMETRIC: c_ulong = 0x891d;
pub const SIOCSIFMETRIC: c_ulong = 0x891e;
pub const SIOCGIFMEM: c_ulong = 0x891f;
pub const SIOCSIFMEM: c_ulong = 0x8920;
pub const SIOCGIFMTU: c_ulong = 0x8921;
pub const SIOCSIFMTU: c_ulong = 0x8922;
pub const SIOCSIFNAME: c_ulong = 0x8923;
pub const SIOCSIFHWADDR: c_ulong = 0x8924;
pub const SIOCGIFENCAP: c_ulong = 0x8925;
pub const SIOCSIFENCAP: c_ulong = 0x8926;
pub const SIOCGIFHWADDR: c_ulong = 0x8927;
pub const SIOCGIFSLAVE: c_ulong = 0x8929;
pub const SIOCSIFSLAVE: c_ulong = 0x8930;
pub const SIOCADDMULTI: c_ulong = 0x8931;
pub const SIOCDELMULTI: c_ulong = 0x8932;
pub const SIOCGIFINDEX: c_ulong = 0x8933;
pub const SIOGIFINDEX: c_ulong = SIOCGIFINDEX;
pub const SIOCSIFPFLAGS: c_ulong = 0x8934;
pub const SIOCGIFPFLAGS: c_ulong = 0x8935;
pub const SIOCDIFADDR: c_ulong = 0x8936;
pub const SIOCSIFHWBROADCAST: c_ulong = 0x8937;
pub const SIOCGIFCOUNT: c_ulong = 0x8938;
pub const SIOCGIFBR: c_ulong = 0x8940;
pub const SIOCSIFBR: c_ulong = 0x8941;
pub const SIOCGIFTXQLEN: c_ulong = 0x8942;
pub const SIOCSIFTXQLEN: c_ulong = 0x8943;
pub const SIOCDARP: c_ulong = 0x8953;
pub const SIOCGARP: c_ulong = 0x8954;
pub const SIOCSARP: c_ulong = 0x8955;
pub const SIOCDRARP: c_ulong = 0x8960;
pub const SIOCGRARP: c_ulong = 0x8961;
pub const SIOCSRARP: c_ulong = 0x8962;
pub const SIOCGIFMAP: c_ulong = 0x8970;
pub const SIOCSIFMAP: c_ulong = 0x8971;
pub const SIOCADDDLCI: c_ulong = 0x8980;
pub const SIOCDELDLCI: c_ulong = 0x8981;
pub const SIOCDEVPRIVATE: c_ulong = 0x89F0;
pub const SIOCPROTOPRIVATE: c_ulong = 0x89E0;
+15 -208
View File
@@ -12,214 +12,21 @@ pub struct sgttyb {
sg_flags: c_ushort,
}
#[cfg(target_os = "linux")]
pub mod inner {
use platform::types::*;
use platform::Sys;
#[repr(C)]
#[derive(Default)]
pub struct winsize {
ws_row: c_ushort,
ws_col: c_ushort,
ws_xpixel: c_ushort,
ws_ypixel: c_ushort,
}
#[no_mangle]
pub extern "C" fn ioctl(fd: c_int, request: c_ulong, out: *mut c_void) -> c_int {
// TODO: Somehow support varargs to syscall??
Sys::ioctl(fd, request, out)
}
pub const TCGETS: c_ulong = 0x5401;
pub const TCSETS: c_ulong = 0x5402;
pub const TCSETSW: c_ulong = 0x5403;
pub const TCSETSF: c_ulong = 0x5404;
pub const TCGETA: c_ulong = 0x5405;
pub const TCSETA: c_ulong = 0x5406;
pub const TCSETAW: c_ulong = 0x5407;
pub const TCSETAF: c_ulong = 0x5408;
pub const TCSBRK: c_ulong = 0x5409;
pub const TCXONC: c_ulong = 0x540A;
pub const TCFLSH: c_ulong = 0x540B;
pub const TIOCEXCL: c_ulong = 0x540C;
pub const TIOCNXCL: c_ulong = 0x540D;
pub const TIOCSCTTY: c_ulong = 0x540E;
pub const TIOCGPGRP: c_ulong = 0x540F;
pub const TIOCSPGRP: c_ulong = 0x5410;
pub const TIOCOUTQ: c_ulong = 0x5411;
pub const TIOCSTI: c_ulong = 0x5412;
pub const TIOCGWINSZ: c_ulong = 0x5413;
pub const TIOCSWINSZ: c_ulong = 0x5414;
pub const TIOCMGET: c_ulong = 0x5415;
pub const TIOCMBIS: c_ulong = 0x5416;
pub const TIOCMBIC: c_ulong = 0x5417;
pub const TIOCMSET: c_ulong = 0x5418;
pub const TIOCGSOFTCAR: c_ulong = 0x5419;
pub const TIOCSSOFTCAR: c_ulong = 0x541A;
pub const FIONREAD: c_ulong = 0x541B;
pub const TIOCINQ: c_ulong = FIONREAD;
pub const TIOCLINUX: c_ulong = 0x541C;
pub const TIOCCONS: c_ulong = 0x541D;
pub const TIOCGSERIAL: c_ulong = 0x541E;
pub const TIOCSSERIAL: c_ulong = 0x541F;
pub const TIOCPKT: c_ulong = 0x5420;
pub const FIONBIO: c_ulong = 0x5421;
pub const TIOCNOTTY: c_ulong = 0x5422;
pub const TIOCSETD: c_ulong = 0x5423;
pub const TIOCGETD: c_ulong = 0x5424;
pub const TCSBRKP: c_ulong = 0x5425;
pub const TIOCSBRK: c_ulong = 0x5427;
pub const TIOCCBRK: c_ulong = 0x5428;
pub const TIOCGSID: c_ulong = 0x5429;
pub const TIOCGRS485: c_ulong = 0x542E;
pub const TIOCSRS485: c_ulong = 0x542F;
pub const TIOCGPTN: c_ulong = 0x8004_5430;
pub const TIOCSPTLCK: c_ulong = 0x4004_5431;
pub const TIOCGDEV: c_ulong = 0x8004_5432;
pub const TCGETX: c_ulong = 0x5432;
pub const TCSETX: c_ulong = 0x5433;
pub const TCSETXF: c_ulong = 0x5434;
pub const TCSETXW: c_ulong = 0x5435;
pub const TIOCSIG: c_ulong = 0x4004_5436;
pub const TIOCVHANGUP: c_ulong = 0x5437;
pub const TIOCGPKT: c_ulong = 0x8004_5438;
pub const TIOCGPTLCK: c_ulong = 0x8004_5439;
pub const TIOCGEXCL: c_ulong = 0x8004_5440;
pub const TIOCGPTPEER: c_ulong = 0x5441;
pub const FIONCLEX: c_ulong = 0x5450;
pub const FIOCLEX: c_ulong = 0x5451;
pub const FIOASYNC: c_ulong = 0x5452;
pub const TIOCSERCONFIG: c_ulong = 0x5453;
pub const TIOCSERGWILD: c_ulong = 0x5454;
pub const TIOCSERSWILD: c_ulong = 0x5455;
pub const TIOCGLCKTRMIOS: c_ulong = 0x5456;
pub const TIOCSLCKTRMIOS: c_ulong = 0x5457;
pub const TIOCSERGSTRUCT: c_ulong = 0x5458;
pub const TIOCSERGETLSR: c_ulong = 0x5459;
pub const TIOCSERGETMULTI: c_ulong = 0x545A;
pub const TIOCSERSETMULTI: c_ulong = 0x545B;
pub const TIOCMIWAIT: c_ulong = 0x545C;
pub const TIOCGICOUNT: c_ulong = 0x545D;
pub const FIOQSIZE: c_ulong = 0x5460;
pub const TIOCPKT_DATA: c_ulong = 0;
pub const TIOCPKT_FLUSHREAD: c_ulong = 1;
pub const TIOCPKT_FLUSHWRITE: c_ulong = 2;
pub const TIOCPKT_STOP: c_ulong = 4;
pub const TIOCPKT_START: c_ulong = 8;
pub const TIOCPKT_NOSTOP: c_ulong = 16;
pub const TIOCPKT_DOSTOP: c_ulong = 32;
pub const TIOCPKT_IOCTL: c_ulong = 64;
pub const TIOCSER_TEMT: c_ulong = 0x01;
pub const TIOCM_LE: c_ulong = 0x001;
pub const TIOCM_DTR: c_ulong = 0x002;
pub const TIOCM_RTS: c_ulong = 0x004;
pub const TIOCM_ST: c_ulong = 0x008;
pub const TIOCM_SR: c_ulong = 0x010;
pub const TIOCM_CTS: c_ulong = 0x020;
pub const TIOCM_CAR: c_ulong = 0x040;
pub const TIOCM_RNG: c_ulong = 0x080;
pub const TIOCM_DSR: c_ulong = 0x100;
pub const TIOCM_CD: c_ulong = TIOCM_CAR;
pub const TIOCM_RI: c_ulong = TIOCM_RNG;
pub const TIOCM_OUT1: c_ulong = 0x2000;
pub const TIOCM_OUT2: c_ulong = 0x4000;
pub const TIOCM_LOOP: c_ulong = 0x8000;
pub const N_TTY: c_ulong = 0;
pub const N_SLIP: c_ulong = 1;
pub const N_MOUSE: c_ulong = 2;
pub const N_PPP: c_ulong = 3;
pub const N_STRIP: c_ulong = 4;
pub const N_AX25: c_ulong = 5;
pub const N_X25: c_ulong = 6;
pub const N_6PACK: c_ulong = 7;
pub const N_MASC: c_ulong = 8;
pub const N_R3964: c_ulong = 9;
pub const N_PROFIBUS_FDL: c_ulong = 10;
pub const N_IRDA: c_ulong = 11;
pub const N_SMSBLOCK: c_ulong = 12;
pub const N_HDLC: c_ulong = 13;
pub const N_SYNC_PPP: c_ulong = 14;
pub const N_HCI: c_ulong = 15;
pub const FIOSETOWN: c_ulong = 0x8901;
pub const SIOCSPGRP: c_ulong = 0x8902;
pub const FIOGETOWN: c_ulong = 0x8903;
pub const SIOCGPGRP: c_ulong = 0x8904;
pub const SIOCATMARK: c_ulong = 0x8905;
pub const SIOCGSTAMP: c_ulong = 0x8906;
pub const SIOCGSTAMPNS: c_ulong = 0x8907;
pub const SIOCADDRT: c_ulong = 0x890B;
pub const SIOCDELRT: c_ulong = 0x890C;
pub const SIOCRTMSG: c_ulong = 0x890D;
pub const SIOCGIFNAME: c_ulong = 0x8910;
pub const SIOCSIFLINK: c_ulong = 0x8911;
pub const SIOCGIFCONF: c_ulong = 0x8912;
pub const SIOCGIFFLAGS: c_ulong = 0x8913;
pub const SIOCSIFFLAGS: c_ulong = 0x8914;
pub const SIOCGIFADDR: c_ulong = 0x8915;
pub const SIOCSIFADDR: c_ulong = 0x8916;
pub const SIOCGIFDSTADDR: c_ulong = 0x8917;
pub const SIOCSIFDSTADDR: c_ulong = 0x8918;
pub const SIOCGIFBRDADDR: c_ulong = 0x8919;
pub const SIOCSIFBRDADDR: c_ulong = 0x891a;
pub const SIOCGIFNETMASK: c_ulong = 0x891b;
pub const SIOCSIFNETMASK: c_ulong = 0x891c;
pub const SIOCGIFMETRIC: c_ulong = 0x891d;
pub const SIOCSIFMETRIC: c_ulong = 0x891e;
pub const SIOCGIFMEM: c_ulong = 0x891f;
pub const SIOCSIFMEM: c_ulong = 0x8920;
pub const SIOCGIFMTU: c_ulong = 0x8921;
pub const SIOCSIFMTU: c_ulong = 0x8922;
pub const SIOCSIFNAME: c_ulong = 0x8923;
pub const SIOCSIFHWADDR: c_ulong = 0x8924;
pub const SIOCGIFENCAP: c_ulong = 0x8925;
pub const SIOCSIFENCAP: c_ulong = 0x8926;
pub const SIOCGIFHWADDR: c_ulong = 0x8927;
pub const SIOCGIFSLAVE: c_ulong = 0x8929;
pub const SIOCSIFSLAVE: c_ulong = 0x8930;
pub const SIOCADDMULTI: c_ulong = 0x8931;
pub const SIOCDELMULTI: c_ulong = 0x8932;
pub const SIOCGIFINDEX: c_ulong = 0x8933;
pub const SIOGIFINDEX: c_ulong = SIOCGIFINDEX;
pub const SIOCSIFPFLAGS: c_ulong = 0x8934;
pub const SIOCGIFPFLAGS: c_ulong = 0x8935;
pub const SIOCDIFADDR: c_ulong = 0x8936;
pub const SIOCSIFHWBROADCAST: c_ulong = 0x8937;
pub const SIOCGIFCOUNT: c_ulong = 0x8938;
pub const SIOCGIFBR: c_ulong = 0x8940;
pub const SIOCSIFBR: c_ulong = 0x8941;
pub const SIOCGIFTXQLEN: c_ulong = 0x8942;
pub const SIOCSIFTXQLEN: c_ulong = 0x8943;
pub const SIOCDARP: c_ulong = 0x8953;
pub const SIOCGARP: c_ulong = 0x8954;
pub const SIOCSARP: c_ulong = 0x8955;
pub const SIOCDRARP: c_ulong = 0x8960;
pub const SIOCGRARP: c_ulong = 0x8961;
pub const SIOCSRARP: c_ulong = 0x8962;
pub const SIOCGIFMAP: c_ulong = 0x8970;
pub const SIOCSIFMAP: c_ulong = 0x8971;
pub const SIOCADDDLCI: c_ulong = 0x8980;
pub const SIOCDELDLCI: c_ulong = 0x8981;
pub const SIOCDEVPRIVATE: c_ulong = 0x89F0;
pub const SIOCPROTOPRIVATE: c_ulong = 0x89E0;
#[repr(C)]
#[derive(Default)]
pub struct winsize {
ws_row: c_ushort,
ws_col: c_ushort,
ws_xpixel: c_ushort,
ws_ypixel: c_ushort,
}
pub use self::sys::*;
#[cfg(target_os = "linux")]
pub use self::inner::*;
#[path = "linux.rs"]
pub mod sys;
#[cfg(target_os = "redox")]
#[path = "redox.rs"]
pub mod sys;
+93
View File
@@ -0,0 +1,93 @@
use core::{mem, slice};
use syscall;
use header::errno;
use platform;
use platform::e;
use platform::types::*;
use super::winsize;
#[no_mangle]
pub unsafe extern "C" fn ioctl(fd: c_int, request: c_ulong, out: *mut c_void) -> c_int {
match request {
TIOCGPGRP => {
let dup = e(syscall::dup(fd as usize, b"pgrp"));
if dup == !0 {
return -1;
}
let count = e(syscall::read(
dup,
slice::from_raw_parts_mut(out as *mut u8, mem::size_of::<pid_t>())
));
let _ = syscall::close(dup);
if count == !0 {
return -1;
}
0
},
TIOCSPGRP => {
let dup = e(syscall::dup(fd as usize, b"pgrp"));
if dup == !0 {
return -1;
}
let count = e(syscall::write(
dup,
slice::from_raw_parts(out as *const u8, mem::size_of::<pid_t>())
));
let _ = syscall::close(dup);
if count == !0 {
return -1;
}
0
},
TIOCGWINSZ => {
let dup = e(syscall::dup(fd as usize, b"winsize"));
if dup == !0 {
return -1;
}
let count = e(syscall::read(
dup,
slice::from_raw_parts_mut(out as *mut u8, mem::size_of::<winsize>())
));
let _ = syscall::close(dup);
if count == !0 {
return -1;
}
0
},
TIOCSWINSZ => {
let dup = e(syscall::dup(fd as usize, b"winsize"));
if dup == !0 {
return -1;
}
let count = e(syscall::write(
dup,
slice::from_raw_parts(out as *const u8, mem::size_of::<winsize>())
));
let _ = syscall::close(dup);
if count == !0 {
return -1;
}
0
},
_ => {
platform::errno = errno::EINVAL;
-1
}
}
}
pub const TIOCGPGRP: c_ulong = 0x540F;
pub const TIOCSPGRP: c_ulong = 0x5410;
pub const TIOCGWINSZ: c_ulong = 0x5413;
pub const TIOCSWINSZ: c_ulong = 0x5414;
+14 -13
View File
@@ -6,6 +6,7 @@ use c_str::CStr;
use header::errno;
use header::limits;
use header::stdlib::getenv;
use header::sys_ioctl;
use header::sys_time;
use header::time::timespec;
use platform;
@@ -565,14 +566,21 @@ pub extern "C" fn sync() {
unimplemented!();
}
// #[no_mangle]
pub extern "C" fn tcgetpgrp() -> pid_t {
unimplemented!();
#[no_mangle]
pub extern "C" fn tcgetpgrp(fd: c_int) -> pid_t {
let mut pgrp = 0;
if unsafe { sys_ioctl::ioctl(fd, sys_ioctl::TIOCGPGRP, &mut pgrp as *mut pid_t as _) } < 0 {
return -1;
}
pgrp
}
// #[no_mangle]
pub extern "C" fn tcsetpgrp(fildes: c_int, pgid_id: pid_t) -> c_int {
unimplemented!();
#[no_mangle]
pub extern "C" fn tcsetpgrp(fd: c_int, pgrp: pid_t) -> c_int {
if unsafe { sys_ioctl::ioctl(fd, sys_ioctl::TIOCSPGRP, &pgrp as *const pid_t as _) } < 0 {
return -1;
}
pgrp
}
// #[no_mangle]
@@ -643,10 +651,3 @@ pub extern "C" fn write(fildes: c_int, buf: *const c_void, nbyte: size_t) -> ssi
let buf = unsafe { slice::from_raw_parts(buf as *const u8, nbyte as usize) };
Sys::write(fildes, buf)
}
/*
#[no_mangle]
pub extern "C" fn func(args) -> c_int {
unimplemented!();
}
*/
+1 -1
View File
@@ -50,7 +50,7 @@ struct linux_statfs {
f_spare: [c_long; 4],
}
fn e(sys: usize) -> usize {
pub fn e(sys: usize) -> usize {
if (sys as isize) < 0 && (sys as isize) >= -256 {
unsafe {
errno = -(sys as isize) as c_int;
+1 -1
View File
@@ -16,7 +16,7 @@ pub use self::pal::{Pal, PalSignal, PalSocket};
mod pal;
pub use self::sys::Sys;
pub use self::sys::{e, Sys};
#[cfg(all(not(feature = "no_std"), target_os = "linux"))]
#[path = "linux/mod.rs"]
+1 -1
View File
@@ -34,7 +34,7 @@ mod extra;
mod signal;
mod socket;
fn e(sys: Result<usize>) -> usize {
pub fn e(sys: Result<usize>) -> usize {
match sys {
Ok(ok) => ok,
Err(err) => {