From 09c62e75ee8be1b2ee05034b865a4d6ef196500a Mon Sep 17 00:00:00 2001 From: wangmengc Date: Fri, 7 Jul 2023 16:57:43 +0800 Subject: [PATCH 1/2] add UNQUEUE_SIGCHLD PSTOPPED func --- bash-5.1/r_jobs/src/lib.rs | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/bash-5.1/r_jobs/src/lib.rs b/bash-5.1/r_jobs/src/lib.rs index 07648c43..cea80a63 100644 --- a/bash-5.1/r_jobs/src/lib.rs +++ b/bash-5.1/r_jobs/src/lib.rs @@ -357,3 +357,25 @@ macro_rules! QUEUE_SIGCHLD { queue_sigchld += 1; }; } + +#[no_mangle] +pub unsafe extern "C" fn UNQUEUE_SIGCHLD(os: c_int) { + queue_sigchld -= 1; + if queue_sigchld == 0 && os != sigchld { + queue_sigchld = 1; + waitchld(-1, 0); + queue_sigchld = 0; + } +} + + + +#[no_mangle] +pub unsafe extern "C" fn PSTOPPED(p:*mut PROCESS) -> c_int +{ + if (*p).status & 0xff == 0x7f { + return 1; + } else { + return 0; + } +} -- Gitee From 8cfe55add9ddd64b5ec3feb3728539067fbf9e15 Mon Sep 17 00:00:00 2001 From: wangmengc Date: Fri, 7 Jul 2023 16:59:14 +0800 Subject: [PATCH 2/2] add DEADJOB IS_NOTIFIED JOBSTATE STOPPED macro --- bash-5.1/r_jobs/src/lib.rs | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/bash-5.1/r_jobs/src/lib.rs b/bash-5.1/r_jobs/src/lib.rs index cea80a63..7b021951 100644 --- a/bash-5.1/r_jobs/src/lib.rs +++ b/bash-5.1/r_jobs/src/lib.rs @@ -379,3 +379,32 @@ pub unsafe extern "C" fn PSTOPPED(p:*mut PROCESS) -> c_int return 0; } } + +#[macro_export] +macro_rules! DEADJOB { + ($j:expr) => { + (**jobs.offset($j as isize)).state as c_int == JDEAD + }; +} + +#[macro_export] +macro_rules! IS_NOTIFIED { + ($j:expr) => { + (**jobs.offset($j as isize)).flags & J_NOTIFIED as c_int != 0 as c_int + }; +} + + +#[macro_export] +macro_rules! JOBSTATE { + ($job:expr) => { + (**jobs.offset($job as isize)).state + }; +} + +#[macro_export] +macro_rules! STOPPED { + ($job:expr) => { + (**jobs.offset($job as isize)).state == JSTOPPED + }; +} -- Gitee