Index: uspace/lib/libdrv/generic/remote_res.c
===================================================================
--- uspace/lib/libdrv/generic/remote_res.c	(revision 52b7b1bbd4f8f9ead4e0983202eb03440f1d7450)
+++ uspace/lib/libdrv/generic/remote_res.c	(revision 57937dd6bf7466b5c022cfaf61001daece9e0a5a)
@@ -34,4 +34,5 @@
 
 #include <ipc/ipc.h>
+#include <async.h>
 #include <errno.h>
 
@@ -58,5 +59,5 @@
 	
 	if (NULL == ires->enable_interrupt) {
-		ipc_answer_0(callid, ENOENT);
+		ipc_answer_0(callid, ENOTSUP);
 	} else if (ires->enable_interrupt(dev)) {
 		ipc_answer_0(callid, EOK);
@@ -68,9 +69,24 @@
 static void remote_res_get_resources(device_t *dev, void *iface, ipc_callid_t callid, ipc_call_t *call)
 {
-	resource_iface_t *ires = (resource_iface_t *)iface;
+	resource_iface_t *ires = (resource_iface_t *)iface;	
+	if (NULL == ires->get_resources) {
+		ipc_answer_0(callid, ENOTSUP);
+		return;
+	}
 	
-	// TODO
+	hw_resource_list_t *hw_resources = ires->get_resources(dev);	
+	if (NULL == hw_resources){
+		ipc_answer_0(callid, ENOENT);
+		return;
+	}	
 	
-	ipc_answer_0(callid, EOK);
+	ipc_answer_1(callid, EOK, hw_resources->count);	
+
+	size_t len;
+	if (!async_data_read_receive(&callid, &len)) {
+		// protocol error - the recipient is not accepting data
+		return;
+	}
+	async_data_read_finalize(callid, hw_resources->resources, len);
 }
  
