Skip site navigation (1)Skip section navigation (2)
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>