Subversion Repositories HelenOS

Compare Revisions

Ignore whitespace Rev 2088 → Rev 2089

/trunk/kernel/generic/include/console/chardev.h
35,7 → 35,6
#ifndef KERN_CHARDEV_H_
#define KERN_CHARDEV_H_
 
#include <typedefs.h>
#include <arch/types.h>
#include <synch/waitq.h>
#include <synch/spinlock.h>
42,19 → 41,19
 
#define CHARDEV_BUFLEN 512
 
struct chardev;
 
/* Character device operations interface. */
struct chardev_operations {
void (* suspend)(chardev_t *); /**< Suspend pushing characters. */
void (* resume)(chardev_t *); /**< Resume pushing characters. */
void (* write)(chardev_t *, char c); /**< Write character to stream. */
typedef struct {
void (* suspend)(struct chardev *); /**< Suspend pushing characters. */
void (* resume)(struct chardev *); /**< Resume pushing characters. */
void (* write)(struct chardev *, char c); /**< Write character to stream. */
/** Read character directly from device, assume interrupts disabled */
char (* read)(chardev_t *);
};
char (* read)(struct chardev *);
} chardev_operations_t;
 
typedef struct chardev_operations chardev_operations_t;
 
/** Character input device. */
struct chardev {
typedef struct chardev {
char *name;
waitq_t wq;
64,7 → 63,7
chardev_operations_t *op; /**< Implementation of chardev operations. */
index_t index;
void *data;
};
} chardev_t;
 
extern void chardev_initialize(char *name,
chardev_t *chardev,
/trunk/kernel/generic/include/console/kconsole.h
35,7 → 35,6
#ifndef KERN_KCONSOLE_H_
#define KERN_KCONSOLE_H_
 
#include <typedefs.h>
#include <adt/list.h>
#include <synch/spinlock.h>
 
42,24 → 41,24
#define MAX_CMDLINE 256
#define KCONSOLE_HISTORY 10
 
enum cmd_arg_type {
typedef enum {
ARG_TYPE_INVALID = 0,
ARG_TYPE_INT,
ARG_TYPE_STRING,
ARG_TYPE_VAR /**< Variable type - either symbol or string */
};
} cmd_arg_type_t;
 
/** Structure representing one argument of kconsole command line. */
struct cmd_arg {
typedef struct {
cmd_arg_type_t type; /**< Type descriptor. */
void *buffer; /**< Buffer where to store data. */
size_t len; /**< Size of the buffer. */
unative_t intval; /**< Integer value */
cmd_arg_type_t vartype; /**< Resulting type of variable arg */
};
} cmd_arg_t;
 
/** Structure representing one kconsole command. */
struct cmd_info {
typedef struct {
link_t link; /**< Command list link. */
SPINLOCK_DECLARE(lock); /**< This lock protects everything below. */
const char *name; /**< Command name. */
68,7 → 67,7
count_t argc; /**< Number of arguments. */
cmd_arg_t *argv; /**< Argument vector. */
void (* help)(void); /**< Function for printing detailed help. */
};
} cmd_info_t;
 
extern spinlock_t cmd_lock;
extern link_t cmd_head;
/trunk/kernel/generic/include/console/console.h
36,7 → 36,7
#define KERN_CONSOLE_H_
 
#include <arch/types.h>
#include <typedefs.h>
#include <console/chardev.h>
 
extern chardev_t *stdin;
extern chardev_t *stdout;
/trunk/kernel/generic/include/console/cmd.h
35,7 → 35,7
#ifndef KERN_CMD_H_
#define KERN_CMD_H_
 
#include <typedefs.h>
#include <console/kconsole.h>
 
extern void cmd_initialize(cmd_info_t *cmd);
extern void cmd_init(void);