Index: uspace/lib/drv/Makefile
===================================================================
--- uspace/lib/drv/Makefile	(revision 41b560841ff4c03028824e18335dc4f0b7cea1bd)
+++ uspace/lib/drv/Makefile	(revision 8871dba5729d36839c3aaeb2aa0f78bfac20d2a0)
@@ -35,6 +35,6 @@
 	generic/driver.c \
 	generic/dev_iface.c \
-	generic/remote_res.c \
-	generic/remote_char.c
+	generic/remote_hw_res.c \
+	generic/remote_char_dev.c
 
 include $(USPACE_PREFIX)/Makefile.common
Index: pace/lib/drv/generic/remote_char.c
===================================================================
--- uspace/lib/drv/generic/remote_char.c	(revision 41b560841ff4c03028824e18335dc4f0b7cea1bd)
+++ 	(revision )
@@ -1,162 +1,0 @@
-/*
- * Copyright (c) 2010 Lenka Trochtova
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup libdrv
- * @{
- */
-/** @file
- */
-
-#include <ipc/ipc.h>
-#include <async.h>
-#include <errno.h>
-
-#include "ops/char_dev.h"
-#include "driver.h"
-
-#define MAX_CHAR_RW_COUNT 256
-
-static void remote_char_read(device_t *, void *, ipc_callid_t, ipc_call_t *);
-static void remote_char_write(device_t *, void *, ipc_callid_t, ipc_call_t *);
-
-/** Remote character interface operations. */
-static remote_iface_func_ptr_t remote_char_dev_iface_ops[] = {
-	&remote_char_read,
-	&remote_char_write
-};
-
-/** Remote character interface structure.
- *
- * Interface for processing request from remote clients addressed to the
- * character interface.
- */
-remote_iface_t remote_char_dev_iface = {
-	.method_count = sizeof(remote_char_dev_iface_ops) /
-	    sizeof(remote_iface_func_ptr_t),
-	.methods = remote_char_dev_iface_ops
-};
-
-/** Process the read request from the remote client.
- *
- * Receive the read request's parameters from the remote client and pass them
- * to the local interface. Return the result of the operation processed by the
- * local interface to the remote client.
- *
- * @param dev		The device from which the data are read.
- * @param iface		The local interface structure.
- */
-static void
-remote_char_read(device_t *dev, void *iface, ipc_callid_t callid,
-    ipc_call_t *call)
-{
-	char_dev_ops_t *char_iface = (char_dev_ops_t *) iface;
-	ipc_callid_t cid;
-	
-	size_t len;
-	if (!async_data_read_receive(&cid, &len)) {
-		/* TODO handle protocol error. */
-		ipc_answer_0(callid, EINVAL);
-		return;
-	}
-	
-	if (!char_iface->read) {
-		async_data_read_finalize(cid, NULL, 0);
-		ipc_answer_0(callid, ENOTSUP);
-		return;
-	}
-	
-	if (len > MAX_CHAR_RW_COUNT)
-		len = MAX_CHAR_RW_COUNT;
-	
-	char buf[MAX_CHAR_RW_COUNT];
-	int ret = (*char_iface->read)(dev, buf, len);
-	
-	if (ret < 0) {
-		/* Some error occured. */
-		async_data_read_finalize(cid, buf, 0);
-		ipc_answer_0(callid, ret);
-		return;
-	}
-	
-	/* The operation was successful, return the number of data read. */
-	async_data_read_finalize(cid, buf, ret);
-	ipc_answer_1(callid, EOK, ret);
-}
-
-/** Process the write request from the remote client.
- *
- * Receive the write request's parameters from the remote client and pass them
- * to the local interface. Return the result of the operation processed by the
- * local interface to the remote client.
- *
- * @param dev		The device to which the data are written.
- * @param iface		The local interface structure.
- */
-static void
-remote_char_write(device_t *dev, void *iface, ipc_callid_t callid,
-    ipc_call_t *call)
-{
-	char_dev_ops_t *char_iface = (char_dev_ops_t *) iface;
-	ipc_callid_t cid;
-	size_t len;
-	
-	if (!async_data_write_receive(&cid, &len)) {
-		/* TODO handle protocol error. */
-		ipc_answer_0(callid, EINVAL);
-		return;
-	}
-	
-	if (!char_iface->write) {
-		async_data_write_finalize(cid, NULL, 0);
-		ipc_answer_0(callid, ENOTSUP);
-		return;
-	}
-	
-	if (len > MAX_CHAR_RW_COUNT)
-		len = MAX_CHAR_RW_COUNT;
-	
-	char buf[MAX_CHAR_RW_COUNT];
-	
-	async_data_write_finalize(cid, buf, len);
-	
-	int ret = (*char_iface->write)(dev, buf, len);
-	if (ret < 0) {
-		/* Some error occured. */
-		ipc_answer_0(callid, ret);
-	} else {
-		/*
-		 * The operation was successful, return the number of data
-		 * written.
-		 */
-		ipc_answer_1(callid, EOK, ret);
-	}
-}
-
-/**
- * @}
- */
Index: uspace/lib/drv/generic/remote_char_dev.c
===================================================================
--- uspace/lib/drv/generic/remote_char_dev.c	(revision 8871dba5729d36839c3aaeb2aa0f78bfac20d2a0)
+++ uspace/lib/drv/generic/remote_char_dev.c	(revision 8871dba5729d36839c3aaeb2aa0f78bfac20d2a0)
@@ -0,0 +1,162 @@
+/*
+ * Copyright (c) 2010 Lenka Trochtova
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libdrv
+ * @{
+ */
+/** @file
+ */
+
+#include <ipc/ipc.h>
+#include <async.h>
+#include <errno.h>
+
+#include "ops/char_dev.h"
+#include "driver.h"
+
+#define MAX_CHAR_RW_COUNT 256
+
+static void remote_char_read(device_t *, void *, ipc_callid_t, ipc_call_t *);
+static void remote_char_write(device_t *, void *, ipc_callid_t, ipc_call_t *);
+
+/** Remote character interface operations. */
+static remote_iface_func_ptr_t remote_char_dev_iface_ops[] = {
+	&remote_char_read,
+	&remote_char_write
+};
+
+/** Remote character interface structure.
+ *
+ * Interface for processing request from remote clients addressed to the
+ * character interface.
+ */
+remote_iface_t remote_char_dev_iface = {
+	.method_count = sizeof(remote_char_dev_iface_ops) /
+	    sizeof(remote_iface_func_ptr_t),
+	.methods = remote_char_dev_iface_ops
+};
+
+/** Process the read request from the remote client.
+ *
+ * Receive the read request's parameters from the remote client and pass them
+ * to the local interface. Return the result of the operation processed by the
+ * local interface to the remote client.
+ *
+ * @param dev		The device from which the data are read.
+ * @param iface		The local interface structure.
+ */
+static void
+remote_char_read(device_t *dev, void *iface, ipc_callid_t callid,
+    ipc_call_t *call)
+{
+	char_dev_ops_t *char_iface = (char_dev_ops_t *) iface;
+	ipc_callid_t cid;
+	
+	size_t len;
+	if (!async_data_read_receive(&cid, &len)) {
+		/* TODO handle protocol error. */
+		ipc_answer_0(callid, EINVAL);
+		return;
+	}
+	
+	if (!char_iface->read) {
+		async_data_read_finalize(cid, NULL, 0);
+		ipc_answer_0(callid, ENOTSUP);
+		return;
+	}
+	
+	if (len > MAX_CHAR_RW_COUNT)
+		len = MAX_CHAR_RW_COUNT;
+	
+	char buf[MAX_CHAR_RW_COUNT];
+	int ret = (*char_iface->read)(dev, buf, len);
+	
+	if (ret < 0) {
+		/* Some error occured. */
+		async_data_read_finalize(cid, buf, 0);
+		ipc_answer_0(callid, ret);
+		return;
+	}
+	
+	/* The operation was successful, return the number of data read. */
+	async_data_read_finalize(cid, buf, ret);
+	ipc_answer_1(callid, EOK, ret);
+}
+
+/** Process the write request from the remote client.
+ *
+ * Receive the write request's parameters from the remote client and pass them
+ * to the local interface. Return the result of the operation processed by the
+ * local interface to the remote client.
+ *
+ * @param dev		The device to which the data are written.
+ * @param iface		The local interface structure.
+ */
+static void
+remote_char_write(device_t *dev, void *iface, ipc_callid_t callid,
+    ipc_call_t *call)
+{
+	char_dev_ops_t *char_iface = (char_dev_ops_t *) iface;
+	ipc_callid_t cid;
+	size_t len;
+	
+	if (!async_data_write_receive(&cid, &len)) {
+		/* TODO handle protocol error. */
+		ipc_answer_0(callid, EINVAL);
+		return;
+	}
+	
+	if (!char_iface->write) {
+		async_data_write_finalize(cid, NULL, 0);
+		ipc_answer_0(callid, ENOTSUP);
+		return;
+	}
+	
+	if (len > MAX_CHAR_RW_COUNT)
+		len = MAX_CHAR_RW_COUNT;
+	
+	char buf[MAX_CHAR_RW_COUNT];
+	
+	async_data_write_finalize(cid, buf, len);
+	
+	int ret = (*char_iface->write)(dev, buf, len);
+	if (ret < 0) {
+		/* Some error occured. */
+		ipc_answer_0(callid, ret);
+	} else {
+		/*
+		 * The operation was successful, return the number of data
+		 * written.
+		 */
+		ipc_answer_1(callid, EOK, ret);
+	}
+}
+
+/**
+ * @}
+ */
Index: uspace/lib/drv/generic/remote_hw_res.c
===================================================================
--- uspace/lib/drv/generic/remote_hw_res.c	(revision 8871dba5729d36839c3aaeb2aa0f78bfac20d2a0)
+++ uspace/lib/drv/generic/remote_hw_res.c	(revision 8871dba5729d36839c3aaeb2aa0f78bfac20d2a0)
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2010 Lenka Trochtova
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ *
+ * - Redistributions of source code must retain the above copyright
+ *   notice, this list of conditions and the following disclaimer.
+ * - Redistributions in binary form must reproduce the above copyright
+ *   notice, this list of conditions and the following disclaimer in the
+ *   documentation and/or other materials provided with the distribution.
+ * - The name of the author may not be used to endorse or promote products
+ *   derived from this software without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
+ * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+ * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+ * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
+ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+/** @addtogroup libdrv
+ * @{
+ */
+/** @file
+ */
+
+#include <ipc/ipc.h>
+#include <async.h>
+#include <errno.h>
+
+#include "ops/hw_res.h"
+#include "driver.h"
+
+static void remote_res_get_resource_list(device_t *, void *, ipc_callid_t,
+    ipc_call_t *);
+static void remote_res_enable_interrupt(device_t *, void *, ipc_callid_t,
+    ipc_call_t *);
+
+static remote_iface_func_ptr_t remote_hw_res_iface_ops [] = {
+	&remote_res_get_resource_list,
+	&remote_res_enable_interrupt
+};
+
+remote_iface_t remote_hw_res_iface = {
+	.method_count = sizeof(remote_hw_res_iface_ops) /
+	    sizeof(remote_iface_func_ptr_t),
+	.methods = remote_hw_res_iface_ops
+};
+
+static void remote_res_enable_interrupt(device_t *dev, void *iface,
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	hw_res_ops_t *ires = (hw_res_ops_t *) iface;
+	
+	if (NULL == ires->enable_interrupt)
+		ipc_answer_0(callid, ENOTSUP);
+	else if (ires->enable_interrupt(dev))
+		ipc_answer_0(callid, EOK);
+	else
+		ipc_answer_0(callid, EREFUSED);
+}
+
+static void remote_res_get_resource_list(device_t *dev, void *iface,
+    ipc_callid_t callid, ipc_call_t *call)
+{
+	hw_res_ops_t *ires = (hw_res_ops_t *) iface;
+	if (NULL == ires->get_resource_list) {
+		ipc_answer_0(callid, ENOTSUP);
+		return;
+	}
+	
+	hw_resource_list_t *hw_resources = ires->get_resource_list(dev);
+	if (NULL == hw_resources){
+		ipc_answer_0(callid, ENOENT);
+		return;
+	}	
+	
+	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);
+}
+
+/**
+ * @}
+ */
Index: pace/lib/drv/generic/remote_res.c
===================================================================
--- uspace/lib/drv/generic/remote_res.c	(revision 41b560841ff4c03028824e18335dc4f0b7cea1bd)
+++ 	(revision )
@@ -1,98 +1,0 @@
-/*
- * Copyright (c) 2010 Lenka Trochtova
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * - Redistributions of source code must retain the above copyright
- *   notice, this list of conditions and the following disclaimer.
- * - Redistributions in binary form must reproduce the above copyright
- *   notice, this list of conditions and the following disclaimer in the
- *   documentation and/or other materials provided with the distribution.
- * - The name of the author may not be used to endorse or promote products
- *   derived from this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
- * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
- * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
- * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
- * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
- * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-/** @addtogroup libdrv
- * @{
- */
-/** @file
- */
-
-#include <ipc/ipc.h>
-#include <async.h>
-#include <errno.h>
-
-#include "ops/hw_res.h"
-#include "driver.h"
-
-static void remote_res_get_resource_list(device_t *, void *, ipc_callid_t,
-    ipc_call_t *);
-static void remote_res_enable_interrupt(device_t *, void *, ipc_callid_t,
-    ipc_call_t *);
-
-static remote_iface_func_ptr_t remote_hw_res_iface_ops [] = {
-	&remote_res_get_resource_list,
-	&remote_res_enable_interrupt
-};
-
-remote_iface_t remote_hw_res_iface = {
-	.method_count = sizeof(remote_hw_res_iface_ops) /
-	    sizeof(remote_iface_func_ptr_t),
-	.methods = remote_hw_res_iface_ops
-};
-
-static void remote_res_enable_interrupt(device_t *dev, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	hw_res_ops_t *ires = (hw_res_ops_t *) iface;
-	
-	if (NULL == ires->enable_interrupt)
-		ipc_answer_0(callid, ENOTSUP);
-	else if (ires->enable_interrupt(dev))
-		ipc_answer_0(callid, EOK);
-	else
-		ipc_answer_0(callid, EREFUSED);
-}
-
-static void remote_res_get_resource_list(device_t *dev, void *iface,
-    ipc_callid_t callid, ipc_call_t *call)
-{
-	hw_res_ops_t *ires = (hw_res_ops_t *) iface;
-	if (NULL == ires->get_resource_list) {
-		ipc_answer_0(callid, ENOTSUP);
-		return;
-	}
-	
-	hw_resource_list_t *hw_resources = ires->get_resource_list(dev);
-	if (NULL == hw_resources){
-		ipc_answer_0(callid, ENOENT);
-		return;
-	}	
-	
-	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);
-}
-
-/**
- * @}
- */
