Subversion Repositories HelenOS

Rev

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

Rev 4337 Rev 4338
Line 49... Line 49...
49
#include <macros.h>
49
#include <macros.h>
50
#include <debug.h>
50
#include <debug.h>
51
#include <func.h>
51
#include <func.h>
52
#include <symtab.h>
52
#include <symtab.h>
53
#include <macros.h>
53
#include <macros.h>
-
 
54
#include <sysinfo/sysinfo.h>
-
 
55
#include <ddi/device.h>
54
 
56
 
55
/** Simple kernel console.
57
/** Simple kernel console.
56
 *
58
 *
57
 * The console is realized by kernel thread kconsole.
59
 * The console is realized by kernel thread kconsole.
58
 * It doesn't understand any useful command on its own,
60
 * It doesn't understand any useful command on its own,
Line 81... Line 83...
81
static cmd_info_t *parse_cmdline(char *cmdline, size_t len);
83
static cmd_info_t *parse_cmdline(char *cmdline, size_t len);
82
static bool parse_argument(char *cmdline, size_t len, index_t *start,
84
static bool parse_argument(char *cmdline, size_t len, index_t *start,
83
    index_t *end);
85
    index_t *end);
84
static char history[KCONSOLE_HISTORY][MAX_CMDLINE] = {};
86
static char history[KCONSOLE_HISTORY][MAX_CMDLINE] = {};
85
 
87
 
-
 
88
/*
-
 
89
 * For now, we use 0 as INR.
-
 
90
 * However, it is therefore desirable to have architecture specific
-
 
91
 * definition of KCONSOLE_VIRT_INR in the future.
-
 
92
 */
-
 
93
#define KCONSOLE_VIRT_INR  0
-
 
94
 
-
 
95
bool kconsole_notify = false;
-
 
96
irq_t kconsole_irq;
-
 
97
 
-
 
98
 
-
 
99
/** Allways refuse IRQ ownership.
-
 
100
 *
-
 
101
 * This is not a real IRQ, so we always decline.
-
 
102
 *
-
 
103
 * @return Always returns IRQ_DECLINE.
-
 
104
 *
-
 
105
 */
-
 
106
static irq_ownership_t kconsole_claim(void)
-
 
107
{
-
 
108
    return IRQ_DECLINE;
-
 
109
}
-
 
110
 
-
 
111
 
86
/** Initialize kconsole data structures. */
112
/** Initialize kconsole data structures
-
 
113
 *
-
 
114
 * This is the most basic initialization, almost no
-
 
115
 * other kernel subsystem is ready yet.
-
 
116
 *
-
 
117
 */
87
void kconsole_init(void)
118
void kconsole_init(void)
88
{
119
{
89
    int i;
120
    unsigned int i;
90
 
121
 
91
    cmd_init();
122
    cmd_init();
92
    for (i = 0; i < KCONSOLE_HISTORY; i++)
123
    for (i = 0; i < KCONSOLE_HISTORY; i++)
93
        history[i][0] = '\0';
124
        history[i][0] = '\0';
94
}
125
}
95
 
126
 
96
 
127
 
-
 
128
/** Initialize kconsole notification mechanism
-
 
129
 *
-
 
130
 * Initialize the virtual IRQ notification mechanism.
-
 
131
 *
-
 
132
 */
-
 
133
void kconsole_notify_init(void)
-
 
134
{
-
 
135
    devno_t devno = device_assign_devno();
-
 
136
   
-
 
137
    sysinfo_set_item_val("kconsole.present", NULL, true);
-
 
138
    sysinfo_set_item_val("kconsole.devno", NULL, devno);
-
 
139
    sysinfo_set_item_val("kconsole.inr", NULL, KCONSOLE_VIRT_INR);
-
 
140
   
-
 
141
    irq_initialize(&kconsole_irq);
-
 
142
    kconsole_irq.devno = devno;
-
 
143
    kconsole_irq.inr = KCONSOLE_VIRT_INR;
-
 
144
    kconsole_irq.claim = kconsole_claim;
-
 
145
    irq_register(&kconsole_irq);
-
 
146
   
-
 
147
    kconsole_notify = true;
-
 
148
}
-
 
149
 
-
 
150
 
97
/** Register kconsole command.
151
/** Register kconsole command.
98
 *
152
 *
99
 * @param cmd Structure describing the command.
153
 * @param cmd Structure describing the command.
100
 *
154
 *
101
 * @return 0 on failure, 1 on success.
155
 * @return 0 on failure, 1 on success.