[解決済み] ioctl呼び出しプログラムコンパイルエラー
2022-02-09 03:10:09
質問内容
カーネルモジュールを呼び出したい
driver.ko
ioctl
コンパイル時に以下のようなエラーが発生しました。
header.h:13:38: error: expected expression before ‘char’
#define IOCTL_CMD _IORW(MAGIC_NO, 0, char *)
定義上、私は正しい引数を置く:
_IORW(int type, int number, data_type)
main.c
#include <stdio.h>
#include <fcntl.h>
#include <string.h>
#include "header.h"
int main()
{
int fd;
char * msg = "5";
fd = open(DEVICE_PATH, O_RDWR);
ioctl(fd, IOCTL_CMD, msg);
printf("ioctl executed\n");
close(fd);
return 0;
}
header.h
#include <linux/ioctl.h>
#include <linux/kdev_t.h> /* for MKDEV */
#define DEVICE_NAME "driver"
#define DEVICE_PATH "/dev/driver"
#define WRITE 0
static int major_no;
#define MAGIC_NO '4'
/*
* Set the message of the device driver
*/
#define IOCTL_CMD _IORW(MAGIC_NO, 0, char *)
解決方法は?
マクロ
_IORW
はLinuxのヘッダには存在しないようです。
_IOWR
の代わりに また、私はあなたが使っている
char *
はここでは正しいです。それは、最後のパラメータが
ioctl
のアドレスは
char *
変数で、文字列ではありません。
関連
-
[解決済み】GCC Cコードで静的宣言が非静的宣言に続くことを解決するには?
-
[解決済み] テスト
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】0LLや0x0ULの意味は何ですか?
-
[解決済み】int型配列へのポインタのスカラ・イニシャライザの過剰要素
-
[解決済み】宣言指定子で2つ以上のデータ型がある場合のエラー【非公開
-
[解決済み] '{'トークンの前に期待される式
-
[解決済み] Cプログラムで「配列の添え字が整数でない」。
-
[解決済み】whileループの時間複雑性(Big O)はどうやったらわかるの?
-
[解決済み】高放射能環境下で使用するアプリケーションのコンパイルについて
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Cコンパイルエラー。"変数サイズのオブジェクトが初期化されていない可能性がある"
-
[解決済み】Valgrind - strcpyのサイズ1の無効な書き込み
-
[解決済み】Cコンパイルエラーです。Idは1終了ステータスを返した
-
[解決済み】ポインタへの代入時に互換性のないポインタ型からの初期化警告が発生した
-
[解決済み】 strcpyとstrdupの比較
-
[解決済み】式は変更可能なL値でなければならない
-
[解決済み] struct has no member named
-
[解決済み】Linuxでexeclp()がどのように動作するのか理解できません。
-
[解決済み】Makefile:1: ***セパレータがありません。停止します。
-
[解決済み】警告:式の結果が未使用の場合