aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog15
-rw-r--r--posix/Makefile2
-rw-r--r--posix/sched.h13
-rw-r--r--sysdeps/generic/sched_getaffinity.c35
-rw-r--r--sysdeps/generic/sched_setaffinity.c35
-rw-r--r--sysdeps/unix/sysv/linux/syscalls.list2
-rw-r--r--sysdeps/unix/utime.c14
7 files changed, 106 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 06815af3d7..35bee5e5aa 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,18 @@
+2002-05-24 Robert Love <rml@tech9.net>
+
+ * posix/Makefile (routines): Add sched_getaffinity and
+ sched_setaffinity.
+ * posix/sched.h: Add declarations for sched_getaffinity and
+ sched_setaffinity.
+ * sysdeps/generic/sched_getaffinity.c: New file.
+ * sysdeps/generic/sched_setaffinity.c: New file.
+ * sysdeps/unix/sysv/linux/syscalls.list: Add sched_getaffinity and
+ sched_setaffinity.
+
+2002-08-06 Andreas Schwab <schwab@suse.de>
+
+ * sysdeps/unix/utime.c: If TIMES is NULL pass it through to utimes.
+
2002-08-07 Ulrich Drepper <drepper@redhat.com>
* elf/dl-load.c (_dl_map_object_from_fd): Add missing \n in error
diff --git a/posix/Makefile b/posix/Makefile
index e9a46c2cf4..d6b2eb3c57 100644
--- a/posix/Makefile
+++ b/posix/Makefile
@@ -51,7 +51,7 @@ routines := \
confstr \
getopt getopt1 getopt_init \
sched_setp sched_getp sched_sets sched_gets sched_yield sched_primax \
- sched_primin sched_rr_gi \
+ sched_primin sched_rr_gi sched_getaffinity sched_setaffinity \
getaddrinfo gai_strerror wordexp \
pread pwrite pread64 pwrite64 \
spawn_faction_init spawn_faction_destroy spawn_faction_addclose \
diff --git a/posix/sched.h b/posix/sched.h
index e476928be2..fe38c10974 100644
--- a/posix/sched.h
+++ b/posix/sched.h
@@ -1,5 +1,5 @@
/* Definitions for POSIX 1003.1b-1993 (aka POSIX.4) scheduling interface.
- Copyright (C) 1996, 1997, 1999, 2001 Free Software Foundation, Inc.
+ Copyright (C) 1996, 1997, 1999, 2001, 2002 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -62,6 +62,17 @@ extern int sched_get_priority_min (int __algorithm) __THROW;
/* Get the SCHED_RR interval for the named process. */
extern int sched_rr_get_interval (__pid_t __pid, struct timespec *__t) __THROW;
+
+#ifdef __USE_GNU
+/* Set the CPU affinity for a task */
+extern int sched_setaffinity (__pid_t __pid, unsigned long int __len,
+ unsigned long int *__mask) __THROW;
+
+/* Get the CPU affinity for a task */
+extern int sched_getaffinity (__pid_t __pid, unsigned long int __len,
+ unsigned long int *__mask) __THROW;
+#endif
+
__END_DECLS
#endif /* sched.h */
diff --git a/sysdeps/generic/sched_getaffinity.c b/sysdeps/generic/sched_getaffinity.c
new file mode 100644
index 0000000000..fc3f48f9a3
--- /dev/null
+++ b/sysdeps/generic/sched_getaffinity.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sched.h>
+
+
+/* Retrieve the CPU affinity mask for a particular process. */
+int
+sched_getaffinity (pid, len, mask)
+ pid_t pid;
+ unsigned long int len;
+ unsigned long int *mask;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (sched_getaffinity)
+#include <stub-tag.h>
diff --git a/sysdeps/generic/sched_setaffinity.c b/sysdeps/generic/sched_setaffinity.c
new file mode 100644
index 0000000000..0f80184095
--- /dev/null
+++ b/sysdeps/generic/sched_setaffinity.c
@@ -0,0 +1,35 @@
+/* Copyright (C) 2002 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
+ 02111-1307 USA. */
+
+#include <errno.h>
+#include <sys/types.h>
+#include <sched.h>
+
+
+/* Retrieve the CPU affinity mask for a particular process. */
+int
+sched_setaffinity (pid, len, mask)
+ pid_t pid;
+ unsigned long int len;
+ unsigned long int *mask;
+{
+ __set_errno (ENOSYS);
+ return -1;
+}
+stub_warning (sched_setaffinity)
+#include <stub-tag.h>
diff --git a/sysdeps/unix/sysv/linux/syscalls.list b/sysdeps/unix/sysv/linux/syscalls.list
index 8f7bfa32b2..8052fc05ec 100644
--- a/sysdeps/unix/sysv/linux/syscalls.list
+++ b/sysdeps/unix/sysv/linux/syscalls.list
@@ -39,11 +39,13 @@ pivot_root EXTRA pivot_root i:ss pivot_root
prctl EXTRA prctl i:iiiii prctl
query_module EXTRA query_module i:sipip query_module
quotactl EXTRA quotactl i:isip quotactl
+sched_getaffinity - sched_getaffinity i:iip sched_getaffinity
sched_getp - sched_getparam i:ip __sched_getparam sched_getparam
sched_gets - sched_getscheduler i:i __sched_getscheduler sched_getscheduler
sched_primax - sched_get_priority_max i:i __sched_get_priority_max sched_get_priority_max
sched_primin - sched_get_priority_min i:i __sched_get_priority_min sched_get_priority_min
sched_rr_gi - sched_rr_get_interval i:ip __sched_rr_get_interval sched_rr_get_interval
+sched_setaffinity - sched_setaffinity i:iip sched_setaffinity
sched_setp - sched_setparam i:ip __sched_setparam sched_setparam
sched_sets - sched_setscheduler i:iip __sched_setscheduler sched_setscheduler
sched_yield - sched_yield i: __sched_yield sched_yield
diff --git a/sysdeps/unix/utime.c b/sysdeps/unix/utime.c
index cbfc351337..4a1815b2c7 100644
--- a/sysdeps/unix/utime.c
+++ b/sysdeps/unix/utime.c
@@ -32,21 +32,19 @@ utime (file, times)
const struct utimbuf *times;
{
struct timeval timevals[2];
+ struct timeval *tvp;
if (times != NULL)
{
- timevals[0].tv_sec = (long int) times->actime;
+ timevals[0].tv_sec = (time_t) times->actime;
timevals[0].tv_usec = 0L;
- timevals[1].tv_sec = (long int) times->modtime;
+ timevals[1].tv_sec = (time_t) times->modtime;
timevals[1].tv_usec = 0L;
+ tvp = timevals;
}
else
- {
- if (__gettimeofday (&timevals[0], NULL) < 0)
- return -1;
- timevals[1] = timevals[0];
- }
+ tvp = NULL;
- return __utimes (file, timevals);
+ return __utimes (file, tvp);
}
libc_hidden_def (utime)