Index: uspace/srv/devman/main.c
===================================================================
--- uspace/srv/devman/main.c	(revision 2480e1950e6008ddc8de893c9387eea1d9ce607e)
+++ uspace/srv/devman/main.c	(revision 3843ecb7d7c7992f743d7917e8f23cddd7c7b5c9)
@@ -121,4 +121,11 @@
 }
 
+/**
+ * Receive device match ID from the device's parent driver and add it to the list of devices match ids.
+ * 
+ * @param match_ids the list of the device's match ids.
+ * 
+ * @return 0 on success, negative error code otherwise. 
+ */
 static int devman_receive_match_id(match_id_list_t *match_ids) {
 	
@@ -159,4 +166,13 @@
 }
 
+/**
+ * Receive device match IDs from the device's parent driver 
+ * and add them to the list of devices match ids.
+ * 
+ * @param match_count the number of device's match ids to be received.
+ * @param match_ids the list of the device's match ids.
+ * 
+ * @return 0 on success, negative error code otherwise.
+ */
 static int devman_receive_match_ids(ipcarg_t match_count, match_id_list_t *match_ids) 
 {	
@@ -171,5 +187,9 @@
 }
 
-static void devman_add_child(ipc_callid_t callid, ipc_call_t *call, driver_t *driver)
+/** Handle child device registration. 
+ * 
+ * Child devices are registered by their parent's device driver.
+ */
+static void devman_add_child(ipc_callid_t callid, ipc_call_t *call)
 {
 	// printf(NAME ": devman_add_child\n");
@@ -211,4 +231,10 @@
 }
 
+/**
+ * Initialize driver which has registered itself as running and ready.
+ * 
+ * The initialization is done in a separate fibril to avoid deadlocks 
+ * (if the driver needed to be served by devman during the driver's initialization). 
+ */
 static int init_running_drv(void *drv)
 {
@@ -219,6 +245,5 @@
 }
 
-/** Function for handling connections to device manager.
- *
+/** Function for handling connections from a driver to the device manager.
  */
 static void devman_connection_driver(ipc_callid_t iid, ipc_call_t *icall)
@@ -231,8 +256,11 @@
 		return;
 	
+	// Initialize the driver as running (e.g. pass assigned devices to it) in a separate fibril;
+	// the separate fibril is used to enable the driver 
+	// to use devman service during the driver's initialization.
 	fid_t fid = fibril_create(init_running_drv, driver);
 	if (fid == 0) {
 		printf(NAME ": Error creating fibril for the initialization of the newly registered running driver.\n");
-		exit(1);
+		return;
 	}
 	fibril_add_ready(fid);
@@ -254,5 +282,5 @@
 			continue;
 		case DEVMAN_ADD_CHILD_DEVICE:
-			devman_add_child(callid, &call, driver);
+			devman_add_child(callid, &call);
 			break;
 		default:
@@ -299,5 +327,6 @@
 	
 	if (driver->phone <= 0) {
-		printf(NAME ": devman_forward: cound not forward to driver %s (the driver's phone is %x).\n", driver->name, driver->phone);
+		printf(NAME ": devman_forward: cound not forward to driver %s ", driver->name);
+		printf("the driver's phone is %x).\n", driver->phone);
 		return;
 	}
