svn commit: r356241 - in head/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux

Edward Tomasz Napierala trasz at freebsd.org
Sun Jan 5 14:37:46 UTC 2020


HNY, and sorry for the late response.

Now... I don't know.  Looking at sys/amd64/linux/linux_locore.asm,
it looks like __vdso_getcpu() should return ENOSYS, but for some
reason the getcpu(2) syscall works just fine.  The VDSO symbol
doesn't get used for some reason?

On 0101T0116, Dmitry Chagin wrote:
> Hi, HNY! What about vdso?
> 
> ср, 1 янв. 2020 г. в 01:01, Edward Tomasz Napierala <trasz at freebsd.org>:
> 
> > Author: trasz
> > Date: Tue Dec 31 22:01:08 2019
> > New Revision: 356241
> > URL: https://svnweb.freebsd.org/changeset/base/356241
> >
> > Log:
> >   Add basic getcpu(2) support to linuxulator.  The purpose of this
> >   syscall is to query the CPU number and the NUMA domain the calling
> >   thread is currently running on.  The third argument is ignored.
> >   It doesn't do anything regarding scheduling - it's literally
> >   just a way to query the current state, without any guarantees
> >   you won't get rescheduled an opcode later.
> >
> >   This unbreaks Java from CentOS 8
> >   (java-11-openjdk-11.0.5.10-0.el8_0.x86_64).
> >
> >   Reviewed by:  kib
> >   MFC after:    2 weeks
> >   Sponsored by: The FreeBSD Foundation
> >   Differential Revision:        https://reviews.freebsd.org/D22972
> >
> > Modified:
> >   head/sys/amd64/linux/linux_dummy.c
> >   head/sys/amd64/linux32/linux32_dummy.c
> >   head/sys/arm64/linux/linux_dummy.c
> >   head/sys/compat/linux/linux_misc.c
> >   head/sys/i386/linux/linux_dummy.c
> >
> > Modified: head/sys/amd64/linux/linux_dummy.c
> >
> > ==============================================================================
> > --- head/sys/amd64/linux/linux_dummy.c  Tue Dec 31 18:58:29 2019
> > (r356240)
> > +++ head/sys/amd64/linux/linux_dummy.c  Tue Dec 31 22:01:08 2019
> > (r356241)
> > @@ -102,8 +102,6 @@ DUMMY(tee);
> >  DUMMY(vmsplice);
> >  /* Linux 2.6.18: */
> >  DUMMY(move_pages);
> > -/* Linux 2.6.19: */
> > -DUMMY(getcpu);
> >  /* Linux 2.6.22: */
> >  DUMMY(signalfd);
> >  /* Linux 2.6.27: */
> >
> > Modified: head/sys/amd64/linux32/linux32_dummy.c
> >
> > ==============================================================================
> > --- head/sys/amd64/linux32/linux32_dummy.c      Tue Dec 31 18:58:29 2019
> >       (r356240)
> > +++ head/sys/amd64/linux32/linux32_dummy.c      Tue Dec 31 22:01:08 2019
> >       (r356241)
> > @@ -108,8 +108,6 @@ DUMMY(tee);
> >  DUMMY(vmsplice);
> >  /* Linux 2.6.18: */
> >  DUMMY(move_pages);
> > -/* Linux 2.6.19: */
> > -DUMMY(getcpu);
> >  /* Linux 2.6.22: */
> >  DUMMY(signalfd);
> >  /* Linux 2.6.27: */
> >
> > Modified: head/sys/arm64/linux/linux_dummy.c
> >
> > ==============================================================================
> > --- head/sys/arm64/linux/linux_dummy.c  Tue Dec 31 18:58:29 2019
> > (r356240)
> > +++ head/sys/arm64/linux/linux_dummy.c  Tue Dec 31 22:01:08 2019
> > (r356241)
> > @@ -104,8 +104,6 @@ DUMMY(tee);
> >  DUMMY(vmsplice);
> >  /* Linux 2.6.18: */
> >  DUMMY(move_pages);
> > -/* Linux 2.6.19: */
> > -DUMMY(getcpu);
> >  /* Linux 2.6.27: */
> >  DUMMY(signalfd4);
> >  DUMMY(inotify_init1);
> >
> > Modified: head/sys/compat/linux/linux_misc.c
> >
> > ==============================================================================
> > --- head/sys/compat/linux/linux_misc.c  Tue Dec 31 18:58:29 2019
> > (r356240)
> > +++ head/sys/compat/linux/linux_misc.c  Tue Dec 31 22:01:08 2019
> > (r356241)
> > @@ -2353,3 +2353,19 @@ out:
> >         td->td_retval[0] = dst - args->buf;
> >         return (error);
> >  }
> > +
> > +int
> > +linux_getcpu(struct thread *td, struct linux_getcpu_args *args)
> > +{
> > +       int cpu, error, node;
> > +
> > +       cpu = td->td_oncpu; /* Make sure it doesn't change during
> > copyout(9) */
> > +       error = 0;
> > +       node = 0; /* XXX: Fake NUMA node 0 for now */
> > +
> > +       if (args->cpu != NULL)
> > +               error = copyout(&cpu, args->cpu, sizeof(l_int));
> > +       if (args->node != NULL)
> > +               error = copyout(&node, args->node, sizeof(l_int));
> > +       return (error);
> > +}
> >
> > Modified: head/sys/i386/linux/linux_dummy.c
> >
> > ==============================================================================
> > --- head/sys/i386/linux/linux_dummy.c   Tue Dec 31 18:58:29 2019
> > (r356240)
> > +++ head/sys/i386/linux/linux_dummy.c   Tue Dec 31 22:01:08 2019
> > (r356241)
> > @@ -104,8 +104,6 @@ DUMMY(tee);
> >  DUMMY(vmsplice);
> >  /* Linux 2.6.18: */
> >  DUMMY(move_pages);
> > -/* Linux 2.6.19: */
> > -DUMMY(getcpu);
> >  /* Linux 2.6.22: */
> >  DUMMY(signalfd);
> >  /* Linux 2.6.27: */
> >


More information about the svn-src-head mailing list