xref: /openbmc/linux/tools/power/cpupower/utils/helpers/bitmask.h (revision 498495dba268b20e8eadd7fe93c140c68b6cc9d2)
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