0

「疑似」デバイス ドライバを実装したばかりで、それをテストしたいと考えています。テストとしてできることは次のとおりです。

echo "something"> /dev/mydev
cat /dev/mydev

私のドライバーはより高度な機能をサポートしており、これらの機能をテストするテスト プログラムを実装しました。ただし、UML で実行できません (エラー: 浮動小数点例外)。UML 用にユーザー プログラムをコンパイルする「特別な」方法があると思いますか?

これの出発点を教えてください。テストプログラムはどのようにコンパイルすればよいですか?

ps テスト プログラムは非常に単純で、上記のエラーはプログラムのバグによるものではありません。pps モジュールをコンパイルするために Makefile を用意していたので、簡単でした :)

前もって感謝します。

編集: ホストと UML カーネルの両方が同じバージョン 2.6.35 です

編集:カーネルソースディレクトリといくつかのコンパイラオプション、さらにARCH = umのようなものを表示する必要があると思いますか?

編集:現在、オプションなしでコンパイルしています。gcc test.c. 「Hello world」プログラムでさえ、UML では動作しません。たぶん、UML コンパイルで何かを変更する必要がありますか?

4

2 に答える 2

1

問題の解決策が見つかりました(クラスメートと教授に感謝します):

コンパイル環境の glibc バージョンは UML と一致する必要があります。したがって、 --static オプションをコンパイルすると問題が解決します。

于 2010-12-27T19:20:49.013 に答える
-1

デバイスとの間で読み取り/書き込みを行う場合は、Linux 上の他のデバイスと同様に、少なくともシステム コールopen()read()write()およびを実装してからプログラムで使用する必要があります。close()あなたが与えた例では、あなたのプログラムは次のようになります(構文にはいくつかのエラーが含まれている可能性があります):

char* string = "something";
char* result = (char*)malloc(sizeof(char) * strlen(string) + 1);

int fd = open("/dev/mydev", O_RDWR);

write(fd, "something", strlen(string));

read(fd, result, strlen(string));
printf("result = %s\n", result);

close(fd);
于 2010-12-26T17:07:27.793 に答える