1*b2441318SGreg Kroah-Hartman /* SPDX-License-Identifier: GPL-2.0 */ 27fe2f639SDominik Brodowski #ifndef __CPUPOWER_BITMASK__ 37fe2f639SDominik Brodowski #define __CPUPOWER_BITMASK__ 47fe2f639SDominik Brodowski 57fe2f639SDominik Brodowski /* Taken over from libbitmask, a project initiated from sgi: 67fe2f639SDominik Brodowski * Url: http://oss.sgi.com/projects/cpusets/ 77fe2f639SDominik Brodowski * Unfortunately it's not very widespread, therefore relevant parts are 87fe2f639SDominik Brodowski * pasted here. 97fe2f639SDominik Brodowski */ 107fe2f639SDominik Brodowski 117fe2f639SDominik Brodowski struct bitmask { 127fe2f639SDominik Brodowski unsigned int size; 137fe2f639SDominik Brodowski unsigned long *maskp; 147fe2f639SDominik Brodowski }; 157fe2f639SDominik Brodowski 167fe2f639SDominik Brodowski struct bitmask *bitmask_alloc(unsigned int n); 177fe2f639SDominik Brodowski void bitmask_free(struct bitmask *bmp); 187fe2f639SDominik Brodowski 197fe2f639SDominik Brodowski struct bitmask *bitmask_setbit(struct bitmask *bmp, unsigned int i); 207fe2f639SDominik Brodowski struct bitmask *bitmask_setall(struct bitmask *bmp); 217fe2f639SDominik Brodowski struct bitmask *bitmask_clearall(struct bitmask *bmp); 227fe2f639SDominik Brodowski 237fe2f639SDominik Brodowski unsigned int bitmask_first(const struct bitmask *bmp); 247fe2f639SDominik Brodowski unsigned int bitmask_next(const struct bitmask *bmp, unsigned int i); 257fe2f639SDominik Brodowski unsigned int bitmask_last(const struct bitmask *bmp); 267fe2f639SDominik Brodowski int bitmask_isallclear(const struct bitmask *bmp); 277fe2f639SDominik Brodowski int bitmask_isbitset(const struct bitmask *bmp, unsigned int i); 287fe2f639SDominik Brodowski 297fe2f639SDominik Brodowski int bitmask_parselist(const char *buf, struct bitmask *bmp); 307fe2f639SDominik Brodowski int bitmask_displaylist(char *buf, int len, const struct bitmask *bmp); 317fe2f639SDominik Brodowski 327fe2f639SDominik Brodowski 337fe2f639SDominik Brodowski 347fe2f639SDominik Brodowski #endif /*__CPUPOWER_BITMASK__ */ 35