Changes in uspace/srv/ns/ns.c [228e490:6119f24] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
uspace/srv/ns/ns.c
r228e490 r6119f24 37 37 38 38 #include <ipc/ipc.h> 39 #include <ipc/services.h>40 39 #include <ipc/ns.h> 41 #include <unistd.h>42 40 #include <stdio.h> 43 41 #include <errno.h> 44 #include <as.h>45 #include <ddi.h>46 #include <event.h>47 42 #include <macros.h> 48 #include <sysinfo.h>49 43 #include "ns.h" 50 44 #include "service.h" 51 45 #include "clonable.h" 52 46 #include "task.h" 53 54 static void *clockaddr = NULL;55 static void *klogaddr = NULL;56 57 static void get_as_area(ipc_callid_t callid, ipc_call_t *call, void *faddr,58 size_t pages, void **addr)59 {60 if ((faddr == NULL) || (pages == 0)) {61 ipc_answer_0(callid, ENOENT);62 return;63 }64 65 if (*addr == NULL) {66 *addr = as_get_mappable_page(pages * PAGE_SIZE);67 68 if (*addr == NULL) {69 ipc_answer_0(callid, ENOENT);70 return;71 }72 73 if (physmem_map(faddr, *addr, pages,74 AS_AREA_READ | AS_AREA_CACHEABLE) != 0) {75 ipc_answer_0(callid, ENOENT);76 return;77 }78 }79 80 ipc_answer_2(callid, EOK, (sysarg_t) *addr, AS_AREA_READ);81 }82 83 static void setup_clock_area(ipc_callid_t callid, ipc_call_t *call, void **addr)84 {85 uintptr_t faddr;86 int err = sysinfo_get_value("clock.faddr", &faddr);87 88 if (err != EOK)89 ipc_answer_0(callid, err);90 91 get_as_area(callid, call, (void *) faddr, 1, addr);92 }93 94 static void setup_klog_area(ipc_callid_t callid, ipc_call_t *call, void **addr)95 {96 uintptr_t faddr;97 int err = sysinfo_get_value("klog.faddr", &faddr);98 99 if (err != EOK)100 ipc_answer_0(callid, err);101 102 size_t pages;103 err = sysinfo_get_value("klog.pages", &pages);104 105 if (err != EOK)106 ipc_answer_0(callid, err);107 108 get_as_area(callid, call, (void *) faddr, pages, addr);109 }110 47 111 48 int main(int argc, char **argv) … … 138 75 139 76 switch (IPC_GET_IMETHOD(call)) { 140 case IPC_M_SHARE_IN:141 switch (IPC_GET_ARG3(call)) {142 case SERVICE_MEM_REALTIME:143 setup_clock_area(callid, &call, &clockaddr);144 break;145 case SERVICE_MEM_KLOG:146 setup_klog_area(callid, &call, &klogaddr);147 break;148 default:149 ipc_answer_0(callid, ENOENT);150 }151 continue;152 77 case IPC_M_PHONE_HUNGUP: 153 78 retval = ns_task_disconnect(&call);
Note:
See TracChangeset
for help on using the changeset viewer.