Subversion Repositories HelenOS

Rev

Rev 4260 | Rev 4495 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 4260 Rev 4488
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();
55
    async_serialize_start();
57
   
56
   
58
    count_t klog_start = (count_t) IPC_GET_ARG1(*call);
57
    size_t klog_start = (size_t) IPC_GET_ARG1(*call);
59
    count_t klog_len = (count_t) IPC_GET_ARG2(*call);
58
    size_t klog_len = (size_t) IPC_GET_ARG2(*call);
60
    count_t klog_stored = (count_t) IPC_GET_ARG3(*call);
59
    size_t klog_stored = (size_t) IPC_GET_ARG3(*call);
61
    count_t i;
60
    size_t i;
62
   
61
   
63
    for (i = klog_len - klog_stored; i < klog_len; i++)
62
    for (i = klog_len - klog_stored; i < klog_len; i++)
64
        putchar(klog[(klog_start + i) % klog_length]);
63
        putchar(klog[(klog_start + i) % klog_length]);
65
   
64
   
66
    async_serialize_end();
65
    async_serialize_end();
67
}
66
}
68
 
67
 
69
int main(int argc, char *argv[])
68
int main(int argc, char *argv[])
70
{
69
{
71
    console_wait();
-
 
72
   
-
 
73
    count_t klog_pages = sysinfo_value("klog.pages");
70
    size_t klog_pages = sysinfo_value("klog.pages");
74
    size_t klog_size = klog_pages * PAGE_SIZE;
71
    size_t klog_size = klog_pages * PAGE_SIZE;
75
    klog_length = klog_size / sizeof(wchar_t);
72
    klog_length = klog_size / sizeof(wchar_t);
76
   
73
   
77
    klog = (wchar_t *) as_get_mappable_page(klog_pages);
74
    klog = (wchar_t *) as_get_mappable_page(klog_pages);
78
    if (klog == NULL) {
75
    if (klog == NULL) {