Changeset 51dbadf3 in mainline for ns/ns.c


Ignore:
Timestamp:
2006-06-06T07:42:20Z (19 years ago)
Author:
Ondrej Palkovsky <ondrap@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
1890e312
Parents:
e9073f2
Message:

Added basic klog.
Added ipc tester.
TODO add serializing functions to psthread, so that the lines in klog won't intermix.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • ns/ns.c

    re9073f2 r51dbadf3  
    3434#include <ipc/ipc.h>
    3535#include <ipc/ns.h>
     36#include <ipc/services.h>
    3637#include <stdio.h>
    3738#include <unistd.h>
     
    7778int static ping_phone;
    7879
    79 static void get_realtime_as(ipc_callid_t callid, ipc_call_t *call)
    80 {
    81         static void *addr = NULL;
     80static void *clockaddr = NULL;
     81static void *klogaddr = NULL;
     82
     83static void get_as(ipc_callid_t callid, ipc_call_t *call, char *name, void **addr)
     84{
    8285        void *ph_addr;
    8386
    84         if (!addr) {
    85                 ph_addr = (void *)sysinfo_value("clock.faddr");
     87        if (!*addr) {
     88                ph_addr = (void *)sysinfo_value(name);
    8689                if (!ph_addr) {
    8790                        ipc_answer_fast(callid, ENOENT, 0, 0);
    8891                        return;
    8992                }
    90                 addr = as_get_mappable_page(PAGE_SIZE);
    91                 map_physmem(ph_addr, addr, 1, AS_AREA_READ | AS_AREA_CACHEABLE);
    92         }
    93         ipc_answer_fast(callid, 0, (ipcarg_t)addr, AS_AREA_READ);
     93                *addr = as_get_mappable_page(PAGE_SIZE);
     94                map_physmem(ph_addr, *addr, 1, AS_AREA_READ | AS_AREA_CACHEABLE);
     95        }
     96        ipc_answer_fast(callid, 0, (ipcarg_t)*addr, AS_AREA_READ);
    9497}
    9598
     
    110113                switch (IPC_GET_METHOD(call)) {
    111114                case IPC_M_AS_AREA_RECV:
    112                         get_realtime_as(callid, &call);
     115                        switch (IPC_GET_ARG3(call)) {
     116                        case SERVICE_MEM_REALTIME:
     117                                get_as(callid, &call, "clock.faddr", &clockaddr);
     118                                break;
     119                        case SERVICE_MEM_KLOG:
     120                                get_as(callid, &call, "klog.faddr", &klogaddr);
     121                                break;
     122                        default:
     123                                ipc_answer_fast(callid, ENOENT, 0, 0);
     124                        }
    113125                        continue;
    114126                case IPC_M_PHONE_HUNGUP:
Note: See TracChangeset for help on using the changeset viewer.