2010-02-11 3 views
6

Мне нужно сделать синтаксический анализ данных, записанных в моем модуле, и использование функции strtok() для string.h было бы полезно. Однако я попыталсяМогу ли я использовать strtok() в модуле ядра Linux?

#include <string.h> 

и

#include <linux/string.h> 

без успеха. Это возможно? Или мне придется написать свою собственную функцию strtok?

Благодаря

ответ

7

Там не находится в действительном Linux Kernel API не strtok. Вам придется писать свои собственные. См. Раздел String Manipulation в API ядра Kernel.

BTW, я бы предложил остаться в стороне от strtok (или что-нибудь еще strtok-like). Он не реентерабелен и небезопасен в коде ядра (который по своей сути многопоточен).

Если вы собираетесь дублировать функцию, подумайте о дублировании strtok_r.

+0

Хорошо, по крайней мере, я точно знаю, что мне нужно написать свое собственное, спасибо! – cheesysam

14

последняя библиотека ядро ​​имеет это, что может делать то, что вам нужно:

/** 
* strsep - Split a string into tokens 
* @s: The string to be searched 
* @ct: The characters to search for 
* 
* strsep() updates @s to point after the token, ready for the next call. 
* 
* It returns empty tokens, too, behaving exactly like the libc function 
* of that name. In fact, it was stolen from glibc2 and de-fancy-fied. 
* Same semantics, slimmer shape. ;) 
*/ 
Смежные вопросы