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