Index: uspace/app/klog/klog.c
===================================================================
--- uspace/app/klog/klog.c	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/app/klog/klog.c	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -36,13 +36,12 @@
 
 #include <stdio.h>
-#include <ipc/ns.h>
 #include <async.h>
-#include <ipc/services.h>
 #include <as.h>
-#include <sysinfo.h>
+#include <ddi.h>
 #include <event.h>
 #include <errno.h>
 #include <str_error.h>
 #include <io/klog.h>
+#include <sysinfo.h>
 
 #define NAME       "klog"
@@ -79,13 +78,42 @@
 int main(int argc, char *argv[])
 {
-	klog = service_klog_share_in(&klog_length);
-	if (klog == NULL) {
-		printf("%s: Error accessing to klog\n", NAME);
-		return -1;
+	size_t pages;
+	int rc = sysinfo_get_value("klog.pages", &pages);
+	if (rc != EOK) {
+		fprintf(stderr, "%s: Unable to get number of klog pages\n",
+		    NAME);
+		return rc;
 	}
 	
-	if (event_subscribe(EVENT_KLOG, 0) != EOK) {
-		printf("%s: Error registering klog notifications\n", NAME);
-		return -1;
+	uintptr_t faddr;
+	rc = sysinfo_get_value("klog.faddr", &faddr);
+	if (rc != EOK) {
+		fprintf(stderr, "%s: Unable to get klog physical address\n",
+		    NAME);
+		return rc;
+	}
+	
+	size_t size = pages * PAGE_SIZE;
+	klog_length = size / sizeof(wchar_t);
+	
+	klog = (wchar_t *) as_get_mappable_page(size);
+	if (klog == NULL) {
+		fprintf(stderr, "%s: Unable to allocate virtual memory area\n",
+		    NAME);
+		return ENOMEM;
+	}
+	
+	rc = physmem_map((void *) faddr, (void *) klog, pages,
+	    AS_AREA_READ | AS_AREA_CACHEABLE);
+	if (rc != EOK) {
+		fprintf(stderr, "%s: Unable to map klog\n", NAME);
+		return rc;
+	}
+	
+	rc = event_subscribe(EVENT_KLOG, 0);
+	if (rc != EOK) {
+		fprintf(stderr, "%s: Unable to register klog notifications\n",
+		    NAME);
+		return rc;
 	}
 	
Index: uspace/lib/c/generic/ipc/ns.c
===================================================================
--- uspace/lib/c/generic/ipc/ns.c	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/lib/c/generic/ipc/ns.c	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -34,10 +34,5 @@
 
 #include <async.h>
-#include <ipc/services.h>
 #include <ipc/ns.h>
-#include <sysinfo.h>
-#include <errno.h>
-#include <as.h>
-#include <macros.h>
 
 int service_register(sysarg_t service)
@@ -56,43 +51,4 @@
 }
 
-wchar_t *service_klog_share_in(size_t *length)
-{
-	size_t pages;
-	if (sysinfo_get_value("klog.pages", &pages) != EOK)
-		return NULL;
-	
-	size_t size = pages * PAGE_SIZE;
-	*length = size / sizeof(wchar_t);
-	
-	wchar_t *klog = (wchar_t *) as_get_mappable_page(size);
-	if (klog == NULL)
-		return NULL;
-	
-	int res = async_share_in_start_1_0(PHONE_NS, (void *) klog, size,
-	    SERVICE_MEM_KLOG);
-	if (res != EOK) {
-		as_area_destroy((void *) klog);
-		return NULL;
-	}
-	
-	return klog;
-}
-
-void *service_realtime_share_in(void)
-{
-	void *rtime = as_get_mappable_page(PAGE_SIZE);
-	if (rtime == NULL)
-		return NULL;
-	
-	int res = async_share_in_start_1_0(PHONE_NS, rtime, PAGE_SIZE,
-	    SERVICE_MEM_REALTIME);
-	if (res != EOK) {
-		as_area_destroy((void *) rtime);
-		return NULL;
-	}
-	
-	return rtime;
-}
-
 /** @}
  */
Index: uspace/lib/c/generic/time.c
===================================================================
--- uspace/lib/c/generic/time.c	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/lib/c/generic/time.c	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -34,11 +34,13 @@
 
 #include <sys/time.h>
-#include <unistd.h>
+#include <time.h>
 #include <bool.h>
-#include <ipc/ns.h>
 #include <arch/barrier.h>
 #include <macros.h>
+#include <errno.h>
+#include <sysinfo.h>
+#include <as.h>
+#include <ddi.h>
 #include <libc.h>
-#include <time.h>
 
 /** Pointer to kernel shared variables with time */
@@ -137,8 +139,27 @@
 int gettimeofday(struct timeval *tv, struct timezone *tz)
 {
-	if (!ktime) {
-		ktime = service_realtime_share_in();
-		if (!ktime)
+	if (ktime == NULL) {
+		uintptr_t faddr;
+		int rc = sysinfo_get_value("clock.faddr", &faddr);
+		if (rc != EOK) {
+			errno = rc;
 			return -1;
+		}
+		
+		void *addr = as_get_mappable_page(PAGE_SIZE);
+		if (addr == NULL) {
+			errno = ENOMEM;
+			return -1;
+		}
+		
+		rc = physmem_map((void *) faddr, addr, 1,
+		    AS_AREA_READ | AS_AREA_CACHEABLE);
+		if (rc != EOK) {
+			as_area_destroy(addr);
+			errno = rc;
+			return -1;
+		}
+		
+		ktime = addr;
 	}
 	
Index: uspace/lib/c/include/ipc/ns.h
===================================================================
--- uspace/lib/c/include/ipc/ns.h	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/lib/c/include/ipc/ns.h	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -50,7 +50,4 @@
 extern int service_connect_blocking(sysarg_t, sysarg_t, sysarg_t);
 
-extern wchar_t *service_klog_share_in(size_t *);
-extern void *service_realtime_share_in(void);
-
 #endif
 
Index: uspace/lib/c/include/ipc/services.h
===================================================================
--- uspace/lib/c/include/ipc/services.h	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/lib/c/include/ipc/services.h	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -66,10 +66,4 @@
 } services_t;
 
-/* Memory areas to be received from NS */
-typedef enum {
-	SERVICE_MEM_REALTIME = 1,
-	SERVICE_MEM_KLOG = 2
-} mem_services_t;
-
 #endif
 
Index: uspace/srv/ns/ns.c
===================================================================
--- uspace/srv/ns/ns.c	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/srv/ns/ns.c	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -37,75 +37,12 @@
 
 #include <ipc/ipc.h>
-#include <ipc/services.h>
 #include <ipc/ns.h>
-#include <unistd.h>
 #include <stdio.h>
 #include <errno.h>
-#include <as.h>
-#include <ddi.h>
-#include <event.h>
 #include <macros.h>
-#include <sysinfo.h>
 #include "ns.h"
 #include "service.h"
 #include "clonable.h"
 #include "task.h"
-
-static void *clockaddr = NULL;
-static void *klogaddr = NULL;
-
-static void get_as_area(ipc_callid_t callid, ipc_call_t *call, void *faddr,
-    size_t pages, void **addr)
-{
-	if ((faddr == NULL) || (pages == 0)) {
-		ipc_answer_0(callid, ENOENT);
-		return;
-	}
-	
-	if (*addr == NULL) {
-		*addr = as_get_mappable_page(pages * PAGE_SIZE);
-		
-		if (*addr == NULL) {
-			ipc_answer_0(callid, ENOENT);
-			return;
-		}
-		
-		if (physmem_map(faddr, *addr, pages,
-		    AS_AREA_READ | AS_AREA_CACHEABLE) != 0) {
-			ipc_answer_0(callid, ENOENT);
-			return;
-		}
-	}
-	
-	ipc_answer_2(callid, EOK, (sysarg_t) *addr, AS_AREA_READ);
-}
-
-static void setup_clock_area(ipc_callid_t callid, ipc_call_t *call, void **addr)
-{
-	uintptr_t faddr;
-	int err = sysinfo_get_value("clock.faddr", &faddr);
-	
-	if (err != EOK)
-		ipc_answer_0(callid, err);
-	
-	get_as_area(callid, call, (void *) faddr, 1, addr);
-}
-
-static void setup_klog_area(ipc_callid_t callid, ipc_call_t *call, void **addr)
-{
-	uintptr_t faddr;
-	int err = sysinfo_get_value("klog.faddr", &faddr);
-	
-	if (err != EOK)
-		ipc_answer_0(callid, err);
-	
-	size_t pages;
-	err = sysinfo_get_value("klog.pages", &pages);
-	
-	if (err != EOK)
-		ipc_answer_0(callid, err);
-	
-	get_as_area(callid, call, (void *) faddr, pages, addr);
-}
 
 int main(int argc, char **argv)
@@ -138,16 +75,4 @@
 		
 		switch (IPC_GET_IMETHOD(call)) {
-		case IPC_M_SHARE_IN:
-			switch (IPC_GET_ARG3(call)) {
-			case SERVICE_MEM_REALTIME:
-				setup_clock_area(callid, &call, &clockaddr);
-				break;
-			case SERVICE_MEM_KLOG:
-				setup_klog_area(callid, &call, &klogaddr);
-				break;
-			default:
-				ipc_answer_0(callid, ENOENT);
-			}
-			continue;
 		case IPC_M_PHONE_HUNGUP:
 			retval = ns_task_disconnect(&call);
Index: uspace/srv/ns/task.h
===================================================================
--- uspace/srv/ns/task.h	(revision d7533c7a0181109196018556b0ffcb2435426ce2)
+++ uspace/srv/ns/task.h	(revision 6119f247f3183c16bdfe692a5c235f69d6c726ff)
@@ -35,4 +35,5 @@
 
 #include <ipc/common.h>
+#include <task.h>
 
 extern int task_init(void);
