-1

私はカーネルプログラミングを学んでおり、文字列を数値に変換するために使用している kstrtol を簡単に呼び出しています。ただし、このモジュールをコンパイルして insmod を使用してカーネルに配置するたびに、「バグ: f862b026 でカーネル ページング要求を処理できません」というメッセージが表示され、レジスタとスタック ダンプが表示されます。

ここからの定義に従っています: https://www.kernel.org/doc/htmldocs/kernel-api/API-kstrtol.html。それは本当に単純な呼び出しのようです。ここで何が間違っていますか?

#include <linux/kernel.h>

static int __init convert(void)
{
    long myLong;
    char *myNumber = "342";
    myNumber[2] = '\0'; //Overwriting the '2', just so I know for sure I have a terminating '\0'

    if (kstrtol(myNumber, 10, &myLong) == 0)
    {
        printk("We have a number!\n");
    }
return 0;
}

static void __exit convert_exit(void)
{
    printk("Module unloaded\n");
}

module_init(convert);
module_exit(convert_exit); 
4

1 に答える 1