From b30c33adc37a80653070e28284bb085cd42012b7 Mon Sep 17 00:00:00 2001 From: Jeremy Soller Date: Mon, 17 Oct 2022 11:37:11 -0600 Subject: [PATCH] Add getsid stub --- src/header/unistd/mod.rs | 4 ++-- src/platform/linux/mod.rs | 4 ++++ src/platform/pal/mod.rs | 2 ++ src/platform/redox/mod.rs | 8 +++++++- 4 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/header/unistd/mod.rs b/src/header/unistd/mod.rs index 35a13471a2..dd8658e11f 100644 --- a/src/header/unistd/mod.rs +++ b/src/header/unistd/mod.rs @@ -402,9 +402,9 @@ pub extern "C" fn getppid() -> pid_t { Sys::getppid() } -// #[no_mangle] +#[no_mangle] pub extern "C" fn getsid(pid: pid_t) -> pid_t { - unimplemented!(); + Sys::getsid(pid) } #[no_mangle] diff --git a/src/platform/linux/mod.rs b/src/platform/linux/mod.rs index 88c40179db..1fd7f722c8 100644 --- a/src/platform/linux/mod.rs +++ b/src/platform/linux/mod.rs @@ -267,6 +267,10 @@ impl Pal for Sys { e(syscall!(GETRLIMIT, resource, rlim)) as c_int } + fn getsid(pid: pid_t) -> pid_t { + e(unsafe { syscall!(GETSID, pid) }) as pid_t + } + fn gettid() -> pid_t { e(unsafe { syscall!(GETTID) }) as pid_t } diff --git a/src/platform/pal/mod.rs b/src/platform/pal/mod.rs index 66cae57e81..0aec5db29e 100644 --- a/src/platform/pal/mod.rs +++ b/src/platform/pal/mod.rs @@ -100,6 +100,8 @@ pub trait Pal { unsafe fn getrlimit(resource: c_int, rlim: *mut rlimit) -> c_int; + fn getsid(pid: pid_t) -> pid_t; + fn gettid() -> pid_t; fn gettimeofday(tp: *mut timeval, tzp: *mut timezone) -> c_int; diff --git a/src/platform/redox/mod.rs b/src/platform/redox/mod.rs index 42ef429f58..de3ac1453a 100644 --- a/src/platform/redox/mod.rs +++ b/src/platform/redox/mod.rs @@ -13,7 +13,7 @@ use crate::{ fs::File, header::{ dirent::dirent, - errno::{EINVAL, EIO, ENOMEM, EPERM, ERANGE}, + errno::{EINVAL, EIO, ENOMEM, ENOSYS, EPERM, ERANGE}, fcntl, string::strlen, sys_mman::{MAP_ANONYMOUS, PROT_READ, PROT_WRITE}, @@ -533,6 +533,12 @@ impl Pal for Sys { 0 } + fn getsid(pid: pid_t) -> pid_t { + //TODO + unsafe { errno = ENOSYS }; + -1 + } + fn gettid() -> pid_t { //TODO Self::getpid()