私は組み込みシステムを持っており、ハードディスク コントローラ用のデバイス ドライバを開発しました。insmod を使用してドライバーを挿入すると、次のエラーが発生します。
警告: fs/sysfs/dir.c:455 で sysfs_add_one+0xb0/0xdc() sysfs: 重複したファイル名 '/block/xsa' を作成できません
Call Trace:
[<c00040ac>] microblaze_unwind+0x54/0x78
[<c0003db8>] show_stack+0x120/0x158
[<c0003df8>] dump_stack+0x8/0x20
[<c000fd40>] warn_slowpath_common+0x80/0xbc
[<c000fe08>] warn_slowpath_fmt+0x28/0x40
[<c00d51dc>] sysfs_add_one+0xa4/0xdc
[<c00d5cd4>] create_dir+0x80/0x100
[<c00d5fa0>] sysfs_create_dir+0x138/0x16c
[<c01586cc>] kobject_add_internal+0xc4/0x1dc
[<c0158920>] kobject_add_varg+0x4c/0x78
[<c0158e88>] kobject_add+0x68/0x80
[<c0187420>] device_add+0xac/0x56c
[<c014da98>] register_disk+0x48/0x1b8
[<c014e014>] add_disk+0x110/0x2c8
[<c805c7c4>] bean_of_probe+0x25c/0x324 [bean]
[<c018b9d0>] platform_drv_probe+0xc/0x24
[<c018a2c4>] driver_probe_device+0xe0/0x1b8
[<c018a61c>] __driver_attach+0x68/0xb4
[<c01890d4>] bus_for_each_dev+0x50/0xa8
[<c018a080>] driver_attach+0x18/0x30
[<c0189bac>] bus_add_driver+0xc4/0x2a0
[<c018aad8>] driver_register+0xf0/0x1ac
[<c018bd00>] platform_driver_register+0x58/0x70
[<c805e050>] bean_init+0x50/0xbc [bean]
[<c00002f4>] do_one_initcall+0x11c/0x220
[<c0047504>] sys_init_module+0x84/0x200
SYSCALL
---[トレース終了 56a543209f1c03c6]--- kobject_add_internal が -EEXIST を指定した xsa で失敗しました。同じディレクトリに同じ名前のものを登録しようとしないでください。カーネル スタック:
コンパクトフラッシュカードに登録済みのxsaという名前を使おうとしていることがわかりました。私の質問は、カーネルが使用する名前をどのように決定するのですか? 私はLinuxを始めたばかりなので、誰かが私を助けることができれば.
ありがとう
ジョン