summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: fc76c7d)
raw | patch | inline | side by side (parent: fc76c7d)
author | Kito Cheng <kito@0xlab.org> | |
Tue, 9 Apr 2013 16:57:42 +0000 (00:57 +0800) | ||
committer | Elliott Hughes <enh@google.com> | |
Thu, 11 Apr 2013 00:44:29 +0000 (17:44 -0700) |
Change-Id: I649633c8d074def5d05bd0c8b92fb680d9d11d51
libc/Android.mk | patch | blob | history | |
libc/bionic/sched_getaffinity.cpp | [moved from libc/bionic/sched_getaffinity.c with 77% similarity] | patch | blob | history |
diff --git a/libc/Android.mk b/libc/Android.mk
index 3c387d2e11c5c5824b3e2efc52d835ff380fbde1..74175ba0d91152df6a470cb949cdfaa21ee98a2c 100644 (file)
--- a/libc/Android.mk
+++ b/libc/Android.mk
bionic/recv.c \
bionic/sched_cpualloc.c \
bionic/sched_cpucount.c \
- bionic/sched_getaffinity.c \
bionic/sched_getcpu.c \
bionic/semaphore.c \
bionic/send.c \
bionic/raise.cpp \
bionic/sbrk.cpp \
bionic/scandir.cpp \
+ bionic/sched_getaffinity.cpp \
bionic/__set_errno.cpp \
bionic/setlocale.cpp \
bionic/signalfd.cpp \
similarity index 77%
rename from libc/bionic/sched_getaffinity.c
rename to libc/bionic/sched_getaffinity.cpp
index 7313822a2214563fd1e059013495611b028d99af..26f22b110c53482d244668f7d953184e79e3f544 100644 (file)
rename from libc/bionic/sched_getaffinity.c
rename to libc/bionic/sched_getaffinity.cpp
index 7313822a2214563fd1e059013495611b028d99af..26f22b110c53482d244668f7d953184e79e3f544 100644 (file)
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
+
#define _GNU_SOURCE 1
#include <sched.h>
+#include <string.h>
+
+extern "C" int __sched_getaffinity(pid_t, size_t, cpu_set_t*);
+
+int sched_getaffinity(pid_t pid, size_t set_size, cpu_set_t* set) {
+ int rc = __sched_getaffinity(pid, set_size, set);
+ if (rc == -1) {
+ return -1;
+ }
-int sched_getaffinity(pid_t pid, size_t setsize, cpu_set_t* set)
-{
- int ret = __sched_getaffinity(pid, setsize, set);
- if (ret >= 0) {
- if ((size_t)ret < setsize) {
- memset((char*)set + ret, '\0', setsize - (size_t)ret);
- }
- ret = 0;
- }
- return ret;
+ // Clear any bytes the kernel didn't touch.
+ // (The kernel returns the number of bytes written on success.)
+ memset(reinterpret_cast<char*>(set) + rc, 0, set_size - rc);
+ return 0;
}