Date: Sun, 5 Jan 2020 14:37:43 +0000 From: Edward Tomasz Napierala <trasz@freebsd.org> To: Dmitry Chagin <dchagin@freebsd.org> Cc: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: Re: svn commit: r356241 - in head/sys: amd64/linux amd64/linux32 arm64/linux compat/linux i386/linux Message-ID: <20200105143743.GA22122@brick> In-Reply-To: <CAC0jpUAbGw%2BZ0mC187jkHDCVudAvVngJ3FZD7=krO5BL6=S7_w@mail.gmail.com> References: <201912312201.xBVM1889057554@repo.freebsd.org> <CAC0jpUAbGw%2BZ0mC187jkHDCVudAvVngJ3FZD7=krO5BL6=S7_w@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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@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: */ > >
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20200105143743.GA22122>