summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/timer.cc
diff options
context:
space:
mode:
authorYaakov Selkowitz <yselkowi@redhat.com>2011-05-17 17:08:10 +0000
committerYaakov Selkowitz <yselkowi@redhat.com>2011-05-17 17:08:10 +0000
commitc8ce54290ddec2e84ac94bef53c518c43140c183 (patch)
tree3aedcb9955b2a790c5a39a722dd1145cd8b8a550 /winsup/cygwin/timer.cc
parent5e3af166d7f81d96adb225f6511d08e70bb2610d (diff)
downloadcygnal-c8ce54290ddec2e84ac94bef53c518c43140c183.tar.gz
cygnal-c8ce54290ddec2e84ac94bef53c518c43140c183.tar.bz2
cygnal-c8ce54290ddec2e84ac94bef53c518c43140c183.zip
* cygwin.din (clock_getcpuclockid): Export.
(pthread_getcpuclockid): Export. * hires.h (PID_TO_CLOCKID): New macro. (CLOCKID_TO_PID): New macro. (CLOCKID_IS_PROCESS): New macro. (THREADID_TO_CLOCKID): New macro. (CLOCKID_TO_THREADID): New macro. (CLOCKID_IS_THREAD): New macro. * ntdll.h (enum _THREAD_INFORMATION_CLASS): Add ThreadTimes. * posix.sgml (std-notimpl): Add clock_getcpuclockid and pthread_getcpuclockid from here... (std-susv4): ... to here. (std-notes): Remove limitations of clock_getres and clock_gettime. Note limitation of timer_create to CLOCK_REALTIME. * sysconf.cc (sca): Set _SC_CPUTIME to _POSIX_CPUTIME, and _SC_THREAD_CPUTIME to _POSIX_THREAD_CPUTIME. * thread.cc (pthread_getcpuclockid): New function. * timer.cc (timer_create): Set errno to ENOTSUP for CPU-time clocks. * times.cc (clock_gettime): Handle CLOCK_PROCESS_CPUTIME_ID and CLOCK_THREAD_CPUTIME_ID. (clock_getres): Ditto. (clock_settime): Set errno to EPERM for CPU-time clocks. (clock_getcpuclockid): New function. * include/pthread.h (pthread_getcpuclockid): Declare. * include/cygwin/version.h (CYGWIN_VERSION_API_MINOR): Bump.
Diffstat (limited to 'winsup/cygwin/timer.cc')
-rw-r--r--winsup/cygwin/timer.cc7
1 files changed, 7 insertions, 0 deletions
diff --git a/winsup/cygwin/timer.cc b/winsup/cygwin/timer.cc
index 91e71146c..be740e07a 100644
--- a/winsup/cygwin/timer.cc
+++ b/winsup/cygwin/timer.cc
@@ -300,6 +300,13 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid)
myfault efault;
if (efault.faulted (EFAULT))
return -1;
+
+ if (CLOCKID_IS_PROCESS (clock_id) || CLOCKID_IS_THREAD (clock_id))
+ {
+ set_errno (ENOTSUP);
+ return -1;
+ }
+
if (clock_id != CLOCK_REALTIME)
{
set_errno (EINVAL);