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: */
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to