2010-02-11 15 views
6

Necesito hacer un análisis de los datos escritos en mi módulo, y el uso de la función strtok() de string.h sería útil. Sin embargo he intentado¿Puedo usar strtok() en un Módulo Kernel de Linux?

#include <string.h> 

y

#include <linux/string.h> 

sin éxito. es posible? ¿O tendré que escribir mi propia función strtok?

Gracias

Respuesta

7

No hay strtok en la API del núcleo Linux válida. Tendrás que escribir el tuyo. Consulte la sección String Manipulation en la API del kernel de Linux.

Por cierto, yo sugeriría que se mantenga alejado de strtok (o cualquier cosa strtok -like). No es reentrante y no es seguro en el código kernel (que es intrínsecamente multiproceso).

Si va a duplicar la función, considere duplicar strtok_r.

+0

Bien impresionante, al menos sé con certeza que tengo que escribir la mía ahora, ¡Gracias! – cheesysam

14

La última biblioteca de núcleo tiene esto, que puede hacer lo que se necesita:

/** 
* 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. ;) 
*/ 
Cuestiones relacionadas