On Fri, Jul 8, 2022 at 1:33 PM Cezary Rojewski cezary.rojewski@intel.com wrote:
On 2022-07-08 12:22 PM, Andy Shevchenko wrote:
On Thu, Jul 7, 2022 at 11:03 AM Cezary Rojewski cezary.rojewski@intel.com wrote:
Add strsplit_u32() and its __user variant to allow for splitting specified string into array of u32 tokens.
And I believe we have more of this done in old code. Since all callers use ',' as a delimiter, have you considered using get_options()?
Thanks for your input, Andy.
When I'd written the very first version of this function many months ago, get_options() looked as it does not fulfill our needs. It seems to be true even today: caller needs to know the number of elements in an array upfront.
Have you read a kernel doc for it? It does return the number of elements at the first pass.
Also, kstrtox() takes into account '0x' and modifies the base accordingly if that's the case. simple_strtoull() looks as not capable of doing the same thing.
How come?! It does parse all known prefixes: 0x, 0, +, -.
The goal is to be able to parse input such as:
0x1000003,0,0,0x1000004,0,0
into a sequence of 6 uints, filling the *tkns and *num_tkns for the caller.
Yes. Have you checked the test cases for get_options()?
Originally this functionality was added for the SOF sound driver. As more users are on the horizon, relocate it so it becomes a common good.
Maybe it can be fixed just there.
avs-driver, which is also part of the ASoC framework has very similar debug-interface. I believe there's no need to duplicate the functions - move them to common code instead.
Taking the above into account, please try to use get_options() and then tell me what's not working with it. If so, we will add test cases to get_options() and fix it.