jobctl: jobctl_getsession

This commit is contained in:
Matheus
2026-06-29 00:45:11 -03:00
parent f8752e7fac
commit 73d60efd53
2 changed files with 14 additions and 0 deletions
+1
View File
@@ -13,6 +13,7 @@ pid_t jobctl_getpgid(proc_t *proc);
pid_t jobctl_getsid(proc_t *proc);
int jobctl_setctty(proc_t *proc, void *ctty, bool steal);
void *jobctl_getctty(proc_t *proc);
proc_t *jobctl_getsession(proc_t *proc);
int jobctl_signal(proc_t *proc, int signal, proc_t *sender);
proc_t *jobctl_getforeground(proc_t *proc);
int jobctl_setforeground(proc_t *session, proc_t *pgrp);
+13
View File
@@ -115,6 +115,19 @@ void *jobctl_getctty(proc_t *proc) {
return tty;
}
proc_t *jobctl_getsession(proc_t *proc) {
bool intstatus = interrupt_set(false);
spinlock_acquire(&proc->jobctllock);
proc_t *session = proc->session.leader ? proc->session.leader : proc;
PROC_HOLD(session);
spinlock_release(&proc->jobctllock);
interrupt_set(intstatus);
return session;
}
pid_t jobctl_getpgid(proc_t *proc) {
bool intstatus = interrupt_set(false);
spinlock_acquire(&proc->jobctllock);