Index: uspace/lib/c/generic/ipc/ns.c
===================================================================
--- uspace/lib/c/generic/ipc/ns.c	(revision 8add9ca54eed14da25f4bda28ab137bf14388de8)
+++ 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 8add9ca54eed14da25f4bda28ab137bf14388de8)
+++ 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 8add9ca54eed14da25f4bda28ab137bf14388de8)
+++ 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 8add9ca54eed14da25f4bda28ab137bf14388de8)
+++ 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
 
