Index: kernel/generic/include/sysinfo/sysinfo.h
===================================================================
--- kernel/generic/include/sysinfo/sysinfo.h	(revision a996ae31af28626eb224d0fc0318932c1f196c19)
+++ kernel/generic/include/sysinfo/sysinfo.h	(revision 5869ce0ca5fd1906d3f917cf2a38b5a804b18b9d)
@@ -73,7 +73,7 @@
 typedef union {
 	sysarg_t val;               /**< Constant numberic value */
+	sysinfo_data_t data;        /**< Constant binary data */
 	sysinfo_fn_val_t fn_val;    /**< Generated numeric value function */
 	sysinfo_fn_data_t fn_data;  /**< Generated binary data function */
-	sysinfo_data_t data;        /**< Constant binary data */
 } sysinfo_item_val_t;
 
@@ -95,5 +95,13 @@
 
 /** Generated subtree function */
-typedef sysinfo_return_t (*sysinfo_fn_subtree_t)(const char *, bool);
+typedef sysinfo_return_t (*sysinfo_fn_subtree_t)(const char *, bool, void *);
+
+/** Sysinfo generated subtree data
+ *
+ */
+typedef struct {
+	sysinfo_fn_subtree_t fn;  /**< Generated subtree function */
+	void *data;               /**< Private data */
+} sysinfo_fn_subtree_data_t;
 
 /** Sysinfo subtree (union)
@@ -101,6 +109,6 @@
  */
 typedef union {
-	struct sysinfo_item *table;     /**< Fixed subtree (list of subitems) */
-	sysinfo_fn_subtree_t get_data;  /**< Generated subtree function */
+	struct sysinfo_item *table;           /**< Fixed subtree (list of subitems) */
+	sysinfo_fn_subtree_data_t generator;  /**< Generated subtree */
 } sysinfo_subtree_t;
 
@@ -130,5 +138,5 @@
 
 extern void sysinfo_set_subtree_fn(const char *, sysinfo_item_t **,
-    sysinfo_fn_subtree_t);
+    sysinfo_fn_subtree_t, void *);
 
 extern void sysinfo_init(void);
