Date: Tue, 16 Jul 2002 15:42:19 +0100 From: Antony T Curtis <antony.t.curtis@ntlworld.com> To: Marc van Kempen <marc@bowtie.nl> Cc: freebsd-java@FreeBSD.ORG Subject: Re: linux JRE 1.4 under linux compatibility only runs as root Message-ID: <3D3430CB.5000308@ntlworld.com> References: <20020711214742.C259A37B406@hub.freebsd.org> <20020711150748.B14694@alicia.nttmcl.com> <20020711174958.E32743@seaman.org> <3D2F4743.4010403@ntlworld.com> <3D33E0C3.4090405@bowtie.nl>
next in thread | previous in thread | raw e-mail | index | archive | help
Marc van Kempen wrote: > Antony T Curtis wrote: > >> >> I gave this a go patching both sched_getscheduler and sched_getparam >> on -STABLE... >> >> The result: jdk1.4 works well on non-root account (tested running >> Java2D demo and SwingSet2) >> >> Thanks! >> >> Richard Seaman, Jr. wrote: >> >>> On Thu, Jul 11, 2002 at 03:07:48PM -0700, Shannon -jj Behrens wrote: >> >> >> >> <snip> >> >>> >>> Not hard at all. The perms in sched_getscheduler in -stable are silly. >>> (also sched_getparam). Just try changing it to something like the patch >>> below (note that I don't have a stable system at the moment, so I don't >>> guarantee it works, nor that it even compiles -- take it as a guide >>> only). >> >> >> >> <snip> >> > > Hi Antony, > > Could you post your patch? I tried Richard's patch on a 4.5 system, but > unfortunately without succes. > > Marc. The following is from my 4.6-STABLE system --- p1003_1b.c.orig Thu Aug 3 02:09:59 2000 +++ p1003_1b.c Fri Jul 12 21:44:24 2002 @@ -178,15 +178,22 @@ int sched_getparam(struct proc *p, struct sched_getparam_args *uap) { - int e; + int e = 0; + struct proc *targetp; struct sched_param sched_param; - (void) (0 - || (e = p31b_proc(p, uap->pid, &p)) - || (e = ksched_getparam(&p->p_retval[0], ksched, p, &sched_param)) - ); + if (uap->pid == 0) { + targetp = p; + } else { + targetp = pfind(uap->pid); + if (targetp == NULL) + e = ESRCH; + } + + if (e == 0) + e = ksched_getparam(&p->p_retval[0], ksched, targetp, &sched_param); - if (!e) + if (e == 0) copyout(&sched_param, uap->param, sizeof(sched_param)); return e; @@ -211,13 +218,21 @@ int sched_getscheduler(struct proc *p, struct sched_getscheduler_args *uap) { - int e; - (void) (0 - || (e = p31b_proc(p, uap->pid, &p)) - || (e = ksched_getscheduler(&p->p_retval[0], ksched, p)) - ); + int e = 0; + struct proc *targetp; - return e; + if (uap->pid == 0) { + targetp = p; + } else { + targetp = pfind(uap->pid); + if (targetp == NULL) + e = ESRCH; + } + + if (e == 0) + e = ksched_getscheduler(&p->p_retval[0], ksched, targetp); + + return (e); } int sched_yield(struct proc *p, struct sched_yield_args *uap) -- Antony T Curtis BSc Unix Analyst Programmer http://homepage.ntlworld.com/antony.t.curtis/ To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-java" in the body of the message
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?3D3430CB.5000308>