diff options
Diffstat (limited to 'modules')
-rw-r--r-- | modules/devices.c | 17 | ||||
-rw-r--r-- | modules/devices/devicetree.c | 43 |
2 files changed, 60 insertions, 0 deletions
diff --git a/modules/devices.c b/modules/devices.c index 9bed002d..5966b07a 100644 --- a/modules/devices.c +++ b/modules/devices.c @@ -51,6 +51,7 @@ gchar *callback_usb(); gchar *callback_dmi(); gchar *callback_spd(); #endif +gchar *callback_dtree(); gchar *callback_device_resources(); void scan_processors(gboolean reload); @@ -66,6 +67,7 @@ void scan_usb(gboolean reload); void scan_dmi(gboolean reload); void scan_spd(gboolean reload); #endif +void scan_dtree(gboolean reload); void scan_device_resources(gboolean reload); gboolean root_required_for_resources(void); @@ -82,6 +84,7 @@ enum { ENTRY_SENSORS, ENTRY_INPUT, ENTRY_STORAGE, + ENTRY_DTREE, ENTRY_DMI, ENTRY_SPD, ENTRY_RESOURCES @@ -100,6 +103,8 @@ static ModuleEntry entries[] = { #if defined(ARCH_x86) || defined(ARCH_x86_64) [ENTRY_DMI] = {N_("DMI"), "computer.png", callback_dmi, scan_dmi, MODULE_FLAG_NONE}, [ENTRY_SPD] = {N_("Memory SPD"), "memory.png", callback_spd, scan_spd, MODULE_FLAG_NONE}, +#else + [ENTRY_DTREE] = {N_("Device Tree"), "devices.png", callback_dtree, scan_dtree, MODULE_FLAG_NONE}, #endif /* x86 or x86_64 */ [ENTRY_RESOURCES] = {N_("Resources"), "resources.png", callback_device_resources, scan_device_resources, MODULE_FLAG_NONE}, {NULL} @@ -377,6 +382,13 @@ void scan_spd(gboolean reload) } #endif +void scan_dtree(gboolean reload) +{ + SCAN_START(); + __scan_dtree(); + SCAN_END(); +} + void scan_processors(gboolean reload) { SCAN_START(); @@ -462,6 +474,11 @@ gchar *callback_spd() } #endif +gchar *callback_dtree() +{ + return g_strdup(dtree_info); +} + gchar *callback_memory() { return g_strdup_printf("[Memory]\n" diff --git a/modules/devices/devicetree.c b/modules/devices/devicetree.c new file mode 100644 index 00000000..77b2e359 --- /dev/null +++ b/modules/devices/devicetree.c @@ -0,0 +1,43 @@ +/* + * HardInfo - Displays System Information + * Copyright (C) 2003-2007 Leandro A. F. Pereira <leandro@hardinfo.org> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, version 2. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ +/* + * Device Tree support + */ +#include <unistd.h> +#include <sys/types.h> +#include "devices.h" + +gchar *dtree_info = NULL; + +static void add_to_moreinfo(const char *group, const char *key, char *value) +{ + char *new_key = g_strconcat("DTREE:", group, ":", key, NULL); + moreinfo_add_with_prefix("DEV", new_key, g_strdup(g_strstrip(value))); +} + +void __scan_dtree() +{ + char *model = NULL; + g_file_get_contents("/proc/device-tree/model", &model, NULL, NULL); + + dtree_info = g_strdup_printf( + "[%s]\n" + "%s=%s\n", + _("Device Tree"), + _("Model"), model); +} |