Index: generic/include/sysinfo/sysinfo.h
===================================================================
--- generic/include/sysinfo/sysinfo.h	(revision 2666daa18c67bb71e7f781004b1f7ca11c2ba3aa)
+++ generic/include/sysinfo/sysinfo.h	(revision 2666daa18c67bb71e7f781004b1f7ca11c2ba3aa)
@@ -0,0 +1,53 @@
+#include <arch/types.h>
+
+typedef union sysinfo_item_val
+{
+	__native val;
+	void *fn; 
+}sysinfo_item_val_t;
+
+typedef struct sysinfo_item
+{
+	char *name;
+	union
+	{
+		__native val;
+		void *fn; 
+	}val;
+
+	union
+	{
+		struct sysinfo_item *table;
+		void *fn;
+	}subinfo;
+
+	struct sysinfo_item *next;
+	int val_type;
+	int subinfo_type;
+}sysinfo_item_t;
+
+#define SYSINFO_VAL_VAL 0
+#define SYSINFO_VAL_FUNCTION 1
+#define SYSINFO_VAL_UNDEFINED '?'
+
+#define SYSINFO_SUBINFO_NONE 0
+#define SYSINFO_SUBINFO_TABLE 1
+#define SYSINFO_SUBINFO_FUNCTION 2
+
+
+typedef __native (*sysinfo_val_fn_t)(sysinfo_item_t *root);
+typedef __native (*sysinfo_subinfo_fn_t)(const char *subname);
+
+typedef struct sysinfo_rettype
+{
+	__native val;
+	__native valid;
+}sysinfo_rettype_t;
+
+void sysinfo_set_item_val(const char *name,sysinfo_item_t **root,__native val);
+void sysinfo_dump(sysinfo_item_t **root,int depth);
+void sysinfo_set_item_function(const char *name,sysinfo_item_t **root,sysinfo_val_fn_t fn);
+void sysinfo_set_item_undefined(const char *name,sysinfo_item_t **root);
+
+sysinfo_rettype_t sysinfo_get_val(const char *name,sysinfo_item_t **root);
+
