1 /*
2  * pthread_attr_setaffinity_np.c
3  *
4  * Description:
5  * POSIX thread functions that deal with thread CPU affinity.
6  *
7  * --------------------------------------------------------------------------
8  *
9  *      Pthreads4w - POSIX Threads for Windows
10  *      Copyright 1998 John E. Bossom
11  *      Copyright 1999-2018, Pthreads4w contributors
12  *
13  *      Homepage: https://sourceforge.net/projects/pthreads4w/
14  *
15  *      The current list of contributors is contained
16  *      in the file CONTRIBUTORS included with the source
17  *      code distribution. The list can also be seen at the
18  *      following World Wide Web location:
19  *
20  *      https://sourceforge.net/p/pthreads4w/wiki/Contributors/
21  *
22  * Licensed under the Apache License, Version 2.0 (the "License");
23  * you may not use this file except in compliance with the License.
24  * You may obtain a copy of the License at
25  *
26  *     http://www.apache.org/licenses/LICENSE-2.0
27  *
28  * Unless required by applicable law or agreed to in writing, software
29  * distributed under the License is distributed on an "AS IS" BASIS,
30  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
31  * See the License for the specific language governing permissions and
32  * limitations under the License.
33  */
34 
35 #ifdef HAVE_CONFIG_H
36 # include <config.h>
37 #endif
38 
39 #include "pthread.h"
40 #include "implement.h"
41 #include "sched.h"
42 
43 int
pthread_attr_setaffinity_np(pthread_attr_t * attr,size_t cpusetsize,const cpu_set_t * cpuset)44 pthread_attr_setaffinity_np (pthread_attr_t * attr, size_t cpusetsize, const cpu_set_t * cpuset)
45 {
46   if (__ptw32_is_attr (attr) != 0 || cpuset == NULL)
47     {
48       return EINVAL;
49     }
50 
51   (*attr)->cpuset = ((_sched_cpu_set_vector_*)cpuset)->_cpuset;
52 
53   return 0;
54 }
55