Subversion Repositories HelenOS

Rev

Rev 4263 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4263 Rev 4581
Line 38... Line 38...
38
#include <ipc/ipc.h>
38
#include <ipc/ipc.h>
39
#include <async.h>
39
#include <async.h>
40
#include <ipc/services.h>
40
#include <ipc/services.h>
41
#include <as.h>
41
#include <as.h>
42
#include <sysinfo.h>
42
#include <sysinfo.h>
43
#include <io/stream.h>
-
 
44
#include <console.h>
-
 
45
#include <event.h>
43
#include <event.h>
46
#include <errno.h>
44
#include <errno.h>
-
 
45
#include <io/klog.h>
47
 
46
 
48
#define NAME "klog"
47
#define NAME  "klog"
49
 
48
 
50
/* Pointer to klog area */
49
/* Pointer to klog area */
51
static wchar_t *klog;
50
static wchar_t *klog;
52
static count_t klog_length;
51
static size_t klog_length;
53
 
52
 
54
static void interrupt_received(ipc_callid_t callid, ipc_call_t *call)
53
static void interrupt_received(ipc_callid_t callid, ipc_call_t *call)
55
{
54
{
56
    async_serialize_start();
-
 
57
   
-
 
58
    count_t klog_start = (count_t) IPC_GET_ARG1(*call);
55
    size_t klog_start = (size_t) IPC_GET_ARG1(*call);
59
    count_t klog_len = (count_t) IPC_GET_ARG2(*call);
56
    size_t klog_len = (size_t) IPC_GET_ARG2(*call);
60
    count_t klog_stored = (count_t) IPC_GET_ARG3(*call);
57
    size_t klog_stored = (size_t) IPC_GET_ARG3(*call);
61
    count_t i;
58
    size_t i;
62
   
59
   
63
    for (i = klog_len - klog_stored; i < klog_len; i++)
60
    for (i = klog_len - klog_stored; i < klog_len; i++)
64
        putchar(klog[(klog_start + i) % klog_length]);
61
        putchar(klog[(klog_start + i) % klog_length]);
65
   
-
 
66
    async_serialize_end();
-
 
67
}
62
}
68
 
63
 
69
int main(int argc, char *argv[])
64
int main(int argc, char *argv[])
70
{
65
{
71
    console_wait();
-
 
72
   
-
 
73
    count_t klog_pages = sysinfo_value("klog.pages");
66
    size_t klog_pages = sysinfo_value("klog.pages");
74
    size_t klog_size = klog_pages * PAGE_SIZE;
67
    size_t klog_size = klog_pages * PAGE_SIZE;
75
    klog_length = klog_size / sizeof(wchar_t);
68
    klog_length = klog_size / sizeof(wchar_t);
76
   
69
   
77
    klog = (wchar_t *) as_get_mappable_page(klog_pages);
70
    klog = (wchar_t *) as_get_mappable_page(klog_size);
78
    if (klog == NULL) {
71
    if (klog == NULL) {
79
        printf(NAME ": Error allocating memory area\n");
72
        printf(NAME ": Error allocating memory area\n");
80
        return -1;
73
        return -1;
81
    }
74
    }
82
   
75