1*49cdfc7eSAndroid Build Coastguard Worker // SPDX-License-Identifier: GPL-2.0-or-later 2*49cdfc7eSAndroid Build Coastguard Worker /* 3*49cdfc7eSAndroid Build Coastguard Worker * Copyright (c) 2014 Oracle and/or its affiliates. All Rights Reserved. 4*49cdfc7eSAndroid Build Coastguard Worker */ 5*49cdfc7eSAndroid Build Coastguard Worker 6*49cdfc7eSAndroid Build Coastguard Worker /* 7*49cdfc7eSAndroid Build Coastguard Worker * Some old libcs (like glibc < 2.7) do not provide interfaces for 8*49cdfc7eSAndroid Build Coastguard Worker * dynamically sized cpu sets, but provide only static cpu_set_t type 9*49cdfc7eSAndroid Build Coastguard Worker * with no more than CPU_SETSIZE cpus in it. 10*49cdfc7eSAndroid Build Coastguard Worker * 11*49cdfc7eSAndroid Build Coastguard Worker * This file is a wrapper of the dynamic interfaces using the static ones. 12*49cdfc7eSAndroid Build Coastguard Worker * 13*49cdfc7eSAndroid Build Coastguard Worker * If the number of cpus available on the system is greater than 14*49cdfc7eSAndroid Build Coastguard Worker * CPU_SETSIZE, this interface will not work. Update libc in this case :) 15*49cdfc7eSAndroid Build Coastguard Worker */ 16*49cdfc7eSAndroid Build Coastguard Worker 17*49cdfc7eSAndroid Build Coastguard Worker #define _GNU_SOURCE 18*49cdfc7eSAndroid Build Coastguard Worker #include <sched.h> 19*49cdfc7eSAndroid Build Coastguard Worker 20*49cdfc7eSAndroid Build Coastguard Worker #ifndef LAPI_CPUSET_H__ 21*49cdfc7eSAndroid Build Coastguard Worker #define LAPI_CPUSET_H__ 22*49cdfc7eSAndroid Build Coastguard Worker 23*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_ALLOC 24*49cdfc7eSAndroid Build Coastguard Worker #define CPU_ALLOC(ncpus) malloc(sizeof(cpu_set_t)); \ 25*49cdfc7eSAndroid Build Coastguard Worker if (ncpus > CPU_SETSIZE) { \ 26*49cdfc7eSAndroid Build Coastguard Worker tst_brk(TCONF, \ 27*49cdfc7eSAndroid Build Coastguard Worker "Your libc does not support masks with %ld cpus", (long)ncpus); \ 28*49cdfc7eSAndroid Build Coastguard Worker } 29*49cdfc7eSAndroid Build Coastguard Worker #endif 30*49cdfc7eSAndroid Build Coastguard Worker 31*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_FREE 32*49cdfc7eSAndroid Build Coastguard Worker #define CPU_FREE(ptr) free(ptr) 33*49cdfc7eSAndroid Build Coastguard Worker #endif 34*49cdfc7eSAndroid Build Coastguard Worker 35*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_ALLOC_SIZE 36*49cdfc7eSAndroid Build Coastguard Worker #define CPU_ALLOC_SIZE(size) sizeof(cpu_set_t) 37*49cdfc7eSAndroid Build Coastguard Worker #endif 38*49cdfc7eSAndroid Build Coastguard Worker 39*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_ZERO_S 40*49cdfc7eSAndroid Build Coastguard Worker #define CPU_ZERO_S(size, mask) CPU_ZERO(mask) 41*49cdfc7eSAndroid Build Coastguard Worker #endif 42*49cdfc7eSAndroid Build Coastguard Worker 43*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_SET_S 44*49cdfc7eSAndroid Build Coastguard Worker #define CPU_SET_S(cpu, size, mask) CPU_SET(cpu, mask) 45*49cdfc7eSAndroid Build Coastguard Worker #endif 46*49cdfc7eSAndroid Build Coastguard Worker 47*49cdfc7eSAndroid Build Coastguard Worker #ifndef CPU_ISSET_S 48*49cdfc7eSAndroid Build Coastguard Worker #define CPU_ISSET_S(cpu, size, mask) CPU_ISSET(cpu, mask) 49*49cdfc7eSAndroid Build Coastguard Worker #endif 50*49cdfc7eSAndroid Build Coastguard Worker 51*49cdfc7eSAndroid Build Coastguard Worker #endif /* LAPI_CPUSET_H__ */ 52