asmlinkage int sunos_setpgrp(pid_t pid, pid_t pgid) { /* So stupid... */ if((!pid || pid == current->pid) && !pgid) { sys_setsid(); return 0; } else { return sys_setpgid(pid, pgid); } }
int ultrix_sys_setpgrp(struct lwp *l, const struct ultrix_sys_setpgrp_args *uap, register_t *retval) { struct proc *p = l->l_proc; struct sys_setpgid_args ap; SCARG(&ap, pid) = SCARG(uap, pid); SCARG(&ap, pgid) = SCARG(uap, pgid); /* * difference to our setpgid call is to include backwards * compatibility to pre-setsid() binaries. Do setsid() * instead of setpgid() in those cases where the process * tries to create a new session the old way. */ if (!SCARG(&ap, pgid) && (!SCARG(&ap, pid) || SCARG(&ap, pid) == p->p_pid)) return sys_setsid(l, &ap, retval); else return sys_setpgid(l, &ap, retval); }
/* Note: it is necessary to treat pid and pgid as unsigned ints, * with the corresponding cast to a signed int to insure that the * proper conversion (sign extension) between the register representation of a signed int (msr in 32-bit mode) * and the register representation of a signed int (msr in 64-bit mode) is performed. */ asmlinkage long compat_sys_setpgid(u32 pid, u32 pgid) { return sys_setpgid((int)pid, (int)pgid); }
int hpux_setpgrp(void) { return sys_setpgid(0,0); }
int hpux_setpgrp(void) { extern int sys_setpgid(int, int); return sys_setpgid(0,0); }