PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : atoi im Kernel?



7.e.Q
18-11-2004, 13:20
Hi

also im User-Bereich kann man ja mit atoi einen String in einen Integer umwandeln. Wie macht man sowas im Kernel, bzw. in 'nem Treiber? Da sagt er mir, daß ihm atoi unbekannt ist.

Gruß, Hendrik

ExRevel
18-11-2004, 16:20
Ja, int atio(const *char) liegt in der stdlib.h, im Kernelbereich könntest du dir zum Beispiel ein eigenes atoi schreiben. Ich habe da mal was in einem spanischen Kernelprogrammierungstext gefunden. Vllt. magst du es mal ausprobieren? Ich kanns grad nicht, bin noch auf der Arbeit. :)


int n_atoi(char *str) {

int res = 0;
int mul = 1;

char *ptr;

for (ptr = str + strlen(str) - 1; ptr >= str; ptr--) {
if (*ptr < '0' || *ptr > '9')
return (-1);

res += (*ptr - '0') * mul;
mul *= 10;
}
return (res);
}

ciao Exi

7.e.Q
19-11-2004, 10:51
Hab schon was gefunden... gibt zwei Funktionen namens

simple_strtol
simple_strtoul

welche beide einen (unsigned) long zurück geben.

Funktioniert!

Danke trotzdem für deinen Tip.