You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@nuttx.apache.org by gn...@apache.org on 2020/02/09 13:34:59 UTC

[incubator-nuttx] 01/03: syscall: Expose sched_getaffinity and sched_setaffinity

This is an automated email from the ASF dual-hosted git repository.

gnutt pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-nuttx.git

commit c34a73e78049d15cd82458faf71664c4415f8bb3
Author: Xiang Xiao <xi...@xiaomi.com>
AuthorDate: Sun Feb 9 15:38:50 2020 +0800

    syscall: Expose sched_getaffinity and sched_setaffinity
---
 include/sys/syscall.h        | 7 +++++--
 syscall/syscall.csv          | 2 ++
 syscall/syscall_lookup.h     | 3 +++
 syscall/syscall_stublookup.c | 5 +++++
 4 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/include/sys/syscall.h b/include/sys/syscall.h
index ec5cbf5..4bf5d8b 100644
--- a/include/sys/syscall.h
+++ b/include/sys/syscall.h
@@ -81,9 +81,12 @@
 #define SYS_sched_setscheduler         (CONFIG_SYS_RESERVED + 10)
 #define SYS_sched_unlock               (CONFIG_SYS_RESERVED + 11)
 #define SYS_sched_yield                (CONFIG_SYS_RESERVED + 12)
+
 #ifdef CONFIG_SMP
-#  define SYS_sched_getcpu             (CONFIG_SYS_RESERVED + 13)
-#  define __SYS_set_errno              (CONFIG_SYS_RESERVED + 14)
+#  define SYS_sched_getaffinity        (CONFIG_SYS_RESERVED + 13)
+#  define SYS_sched_getcpu             (CONFIG_SYS_RESERVED + 14)
+#  define SYS_sched_setaffinity        (CONFIG_SYS_RESERVED + 15)
+#  define __SYS_set_errno              (CONFIG_SYS_RESERVED + 16)
 #else
 #  define __SYS_set_errno              (CONFIG_SYS_RESERVED + 13)
 #endif
diff --git a/syscall/syscall.csv b/syscall/syscall.csv
index 2f2c9e0..85ec82e 100644
--- a/syscall/syscall.csv
+++ b/syscall/syscall.csv
@@ -119,6 +119,7 @@
 "rewinddir","dirent.h","","void","FAR DIR*"
 "rmdir","unistd.h","!defined(CONFIG_DISABLE_MOUNTPOINT)","int","FAR const char*"
 "rmmod","nuttx/module.h","defined(CONFIG_MODULE)","int","FAR void *"
+"sched_getaffinity","sched.h","defined(CONFIG_SMP)","int","pid_t","size_t","FAR cpu_set_t*"
 "sched_getcpu","sched.h","defined(CONFIG_SMP)","int"
 "sched_getparam","sched.h","","int","pid_t","struct sched_param*"
 "sched_getscheduler","sched.h","","int","pid_t"
@@ -126,6 +127,7 @@
 "sched_lock","sched.h","","int"
 "sched_lockcount","sched.h","","int32_t"
 "sched_rr_get_interval","sched.h","","int","pid_t","struct timespec*"
+"sched_setaffinity","sched.h","defined(CONFIG_SMP)","int","pid_t","size_t","FAR const cpu_set_t*"
 "sched_setparam","sched.h","","int","pid_t","const struct sched_param*"
 "sched_setscheduler","sched.h","","int","pid_t","int","const struct sched_param*"
 "sched_unlock","sched.h","","int"
diff --git a/syscall/syscall_lookup.h b/syscall/syscall_lookup.h
index 00f7fb0..e4a48c0 100644
--- a/syscall/syscall_lookup.h
+++ b/syscall/syscall_lookup.h
@@ -57,8 +57,11 @@ SYSCALL_LOOKUP(sched_setparam,             2, STUB_sched_setparam)
 SYSCALL_LOOKUP(sched_setscheduler,         3, STUB_sched_setscheduler)
 SYSCALL_LOOKUP(sched_unlock,               0, STUB_sched_unlock)
 SYSCALL_LOOKUP(sched_yield,                0, STUB_sched_yield)
+
 #ifdef CONFIG_SMP
+SYSCALL_LOOKUP(sched_getaffinity,          3, STUB_sched_getaffinity)
 SYSCALL_LOOKUP(sched_getcpu,               0, STUB_sched_getcpu)
+SYSCALL_LOOKUP(sched_setaffinity,          3, STUB_sched_setaffinity)
 #endif
 
 SYSCALL_LOOKUP(set_errno,                  1, STUB_set_errno)
diff --git a/syscall/syscall_stublookup.c b/syscall/syscall_stublookup.c
index 11276e7..70f8736 100644
--- a/syscall/syscall_stublookup.c
+++ b/syscall/syscall_stublookup.c
@@ -72,7 +72,12 @@ uintptr_t STUB_sched_setscheduler(int nbr, uintptr_t parm1, uintptr_t parm2,
             uintptr_t parm3);
 uintptr_t STUB_sched_unlock(int nbr);
 uintptr_t STUB_sched_yield(int nbr);
+
+uintptr_t STUB_sched_getaffinity(int nbr, uintptr_t parm1, uintptr_t parm2,
+            uintptr_t parm3);
 uintptr_t STUB_sched_getcpu(int nbr);
+uintptr_t STUB_sched_setaffinity(int nbr, uintptr_t parm1, uintptr_t parm2,
+            uintptr_t parm3);
 
 uintptr_t STUB_set_errno(int nbr, uintptr_t parm1);
 uintptr_t STUB_uname(int nbr, uintptr_t parm1);