0
私はLinuxカーネルドライバを開発中です。要件の一部は、システム上のACPIデバイスのリストを取得し、それを反復することです。次のコードはユーザモードで動作しますが、カーネルではコンパイルされません。LinuxカーネルドライバでACPIデバイスのリストを取得するにはどうすればよいですか?
#include <dirent.h>
#include <stdio.h>
int main(void)
{
DIR * d;
struct dirent * dir;
d = opendir("/sys/bus/acpi/devices");
if (d)
{
while ((dir = readdir(d)) != NULL)
{
printf("%s\n", dir->d_name);
}
closedir(d);
}
return 0;
}
カーネルでACPIデバイスのリストを取得するのと同じ機能がありますか?
カーネル[ACPIに関するドキュメント](https://elixir.free-electrons.com/linux/latest/source/Documentation/acpi)を読み、[ACPIドライバコード](https:// elixir .free-electrons.com/linux/v4.15-rc2/source/drivers/acpi)、例えば 'acpi_walk_namespace'関数で起動します。 – nowaqq
最後に取得したいリストの種類によって異なります。 – 0andriy