__bitmap_parselist — convert list format ASCII string to bitmap


int __bitmap_parselist (const char * buf,
 unsigned int buflen,
 int is_user,
 unsigned long * maskp,
 int nmaskbits);


const char * buf

read nul-terminated user string from this buffer

unsigned int buflen

buffer size in bytes. If string is smaller than this then it must be terminated with a \0.

int is_user

location of buffer, 0 indicates kernel space

unsigned long * maskp

write resulting mask here

int nmaskbits

number of bits in mask to be written


Input format is a comma-separated list of decimal numbers and ranges. Consecutively set bits are shown as two hyphen-separated decimal numbers, the smallest and largest bit numbers set in the range. Optionally each range can be postfixed to denote that only parts of it should be set. The range will divided to groups of specific size. From each group will be used only defined amount of bits. Syntax: range:used_size/group_size


   0-1023:2/256 ==> 0,1,256,257,512,513,768,769

   Returns 0 on success, -errno on invalid input strings.
   Error values:
      -EINVAL: second number in range smaller than first
      -EINVAL: invalid character in string
      -ERANGE: bit number specified too large for mask