Cygwin: Implement sched_[gs]etaffinity()
This patch set implements the Linux syscalls sched_getaffinity, sched_setaffinity, pthread_getaffinity_np, and pthread_setaffinity_np. Linux has a straightforward view of the cpu sets used in affinity masks. They are simply long (1024-bit) bit masks. This code emulates that view while internally dealing with Windows' distribution of available CPUs among processor groups.
This commit is contained in:
committed by
Corinna Vinschen
parent
d54edfdf81
commit
641ecb0753
@@ -509,12 +509,14 @@ details. */
|
||||
336: New Cygwin PID algorithm (yeah, not really an API change)
|
||||
337: MOUNT_BINARY -> MOUNT_TEXT
|
||||
338: Export secure_getenv.
|
||||
339: Export sched_getaffinity, sched_setaffinity, pthread_getaffinity_np,
|
||||
pthread_setaffinity_np.
|
||||
|
||||
Note that we forgot to bump the api for ualarm, strtoll, strtoull,
|
||||
sigaltstack, sethostname. */
|
||||
|
||||
#define CYGWIN_VERSION_API_MAJOR 0
|
||||
#define CYGWIN_VERSION_API_MINOR 338
|
||||
#define CYGWIN_VERSION_API_MINOR 339
|
||||
|
||||
/* There is also a compatibity version number associated with the shared memory
|
||||
regions. It is incremented when incompatible changes are made to the shared
|
||||
|
@@ -226,8 +226,10 @@ void pthread_testcancel (void);
|
||||
/* Non posix calls */
|
||||
|
||||
#if __GNU_VISIBLE
|
||||
int pthread_getaffinity_np (pthread_t, size_t, cpu_set_t *);
|
||||
int pthread_getattr_np (pthread_t, pthread_attr_t *);
|
||||
int pthread_getname_np (pthread_t, char *, size_t) __attribute__((__nonnull__(2)));
|
||||
int pthread_setaffinity_np (pthread_t, size_t, const cpu_set_t *);
|
||||
int pthread_setname_np (pthread_t, const char *) __attribute__((__nonnull__(2)));
|
||||
int pthread_sigqueue (pthread_t *, int, const union sigval);
|
||||
int pthread_timedjoin_np (pthread_t, void **, const struct timespec *);
|
||||
|
Reference in New Issue
Block a user