sim-se: ignore all scheduler related syscalls for arm
authorCiro Santilli <ciro.santilli@arm.com>
Mon, 4 Nov 2019 19:10:30 +0000 (19:10 +0000)
committerCiro Santilli <ciro.santilli@arm.com>
Wed, 20 May 2020 07:58:05 +0000 (07:58 +0000)
With the simplistic syscall emulation fork algorithm that we currently have
of running one thread per call, those calls simply cannot be reasonably
implemented.

However, content can often still work without them.

Change-Id: Iac88dfd055564c47b7a7b6898b7582cf4087f708
Reviewed-on: https://gem5-review.googlesource.com/c/public/gem5/+/28591
Maintainer: Giacomo Travaglini <giacomo.travaglini@arm.com>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Jason Lowe-Power <power.jg@gmail.com>
src/arch/arm/linux/process.cc

index 55141ba1104b42e78eb9871918c5165e1fe01cd4..4c679b3ca31be8df3d361e8d9fb7a07e106e984c 100644 (file)
@@ -290,14 +290,14 @@ class SyscallTable32 :
         { base + 151, "munlock" },
         { base + 152, "mlockall" },
         { base + 153, "munlockall" },
-        { base + 154, "sched_setparam" },
-        { base + 155, "sched_getparam" },
-        { base + 156, "sched_setscheduler" },
-        { base + 157, "sched_getscheduler" },
-        { base + 158, "sched_yield" },
-        { base + 159, "sched_get_priority_max" },
-        { base + 160, "sched_get_priority_min" },
-        { base + 161, "sched_rr_get_interval" },
+        { base + 154, "sched_setparam", ignoreWarnOnceFunc },
+        { base + 155, "sched_getparam", ignoreWarnOnceFunc },
+        { base + 156, "sched_setscheduler", ignoreWarnOnceFunc },
+        { base + 157, "sched_getscheduler", ignoreWarnOnceFunc },
+        { base + 158, "sched_yield", ignoreWarnOnceFunc },
+        { base + 159, "sched_get_priority_max", ignoreWarnOnceFunc },
+        { base + 160, "sched_get_priority_min", ignoreWarnOnceFunc },
+        { base + 161, "sched_rr_get_interval", ignoreWarnOnceFunc },
         { base + 162, "nanosleep", ignoreWarnOnceFunc },
         { base + 163, "mremap", mremapFunc<ArmLinux32> }, // ARM-specific
         { base + 164, "setresuid" },
@@ -375,7 +375,7 @@ class SyscallTable32 :
         { base + 238, "tkill" },
         { base + 239, "sendfile64" },
         { base + 240, "futex", futexFunc<ArmLinux32> },
-        { base + 241, "sched_setaffinity" },
+        { base + 241, "sched_setaffinity", ignoreWarnOnceFunc },
         { base + 242, "sched_getaffinity", ignoreFunc },
         { base + 243, "io_setup" },
         { base + 244, "io_destroy" },
@@ -631,16 +631,16 @@ class SyscallTable64 :
         {  base + 115, "clock_nanosleep" },
         {  base + 116, "syslog" },
         {  base + 117, "ptrace" },
-        {  base + 118, "sched_setparam" },
-        {  base + 119, "sched_setscheduler" },
-        {  base + 120, "sched_getscheduler" },
-        {  base + 121, "sched_getparam" },
-        {  base + 122, "sched_setaffinity" },
+        {  base + 118, "sched_setparam", ignoreWarnOnceFunc },
+        {  base + 119, "sched_setscheduler", ignoreWarnOnceFunc },
+        {  base + 120, "sched_getscheduler", ignoreWarnOnceFunc },
+        {  base + 121, "sched_getparam", ignoreWarnOnceFunc },
+        {  base + 122, "sched_setaffinity", ignoreWarnOnceFunc },
         {  base + 123, "sched_getaffinity", ignoreFunc },
-        {  base + 124, "sched_yield" },
-        {  base + 125, "sched_get_priority_max" },
-        {  base + 126, "sched_get_priority_min" },
-        {  base + 127, "sched_rr_get_interval" },
+        {  base + 124, "sched_yield", ignoreWarnOnceFunc },
+        {  base + 125, "sched_get_priority_max", ignoreWarnOnceFunc },
+        {  base + 126, "sched_get_priority_min", ignoreWarnOnceFunc },
+        {  base + 127, "sched_rr_get_interval", ignoreWarnOnceFunc },
         {  base + 128, "restart_syscall" },
         {  base + 129, "kill", ignoreFunc },
         {  base + 130, "tkill" },