source: mainline/kernel/generic/include/console/kconsole.h@ 623b49f1

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since 623b49f1 was 8be8cfa, checked in by Martin Decky <martin@…>, 19 years ago

spinlock extern declaration macro

  • Property mode set to 100644
File size: 2.8 KB
RevLine 
[2677758]1/*
[df4ed85]2 * Copyright (c) 2005 Jakub Jermar
[2677758]3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * - Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 * - Redistributions in binary form must reproduce the above copyright
12 * notice, this list of conditions and the following disclaimer in the
13 * documentation and/or other materials provided with the distribution.
14 * - The name of the author may not be used to endorse or promote products
15 * derived from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
18 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
19 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
20 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
21 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
22 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
[06e1e95]29/** @addtogroup genericconsole
[b45c443]30 * @{
31 */
32/** @file
33 */
34
[06e1e95]35#ifndef KERN_KCONSOLE_H_
36#define KERN_KCONSOLE_H_
[2677758]37
[5c9a08b]38#include <adt/list.h>
[ff3b3197]39#include <synch/spinlock.h>
40
[442d0ae]41#define MAX_CMDLINE 256
[0c8e692]42#define KCONSOLE_HISTORY 10
[442d0ae]43
[b3f8fb7]44typedef enum {
[ff3b3197]45 ARG_TYPE_INVALID = 0,
46 ARG_TYPE_INT,
[91c78c9]47 ARG_TYPE_STRING,
48 ARG_TYPE_VAR /**< Variable type - either symbol or string */
[b3f8fb7]49} cmd_arg_type_t;
[ff3b3197]50
51/** Structure representing one argument of kconsole command line. */
[b3f8fb7]52typedef struct {
[ff3b3197]53 cmd_arg_type_t type; /**< Type descriptor. */
54 void *buffer; /**< Buffer where to store data. */
[f4338d2]55 size_t len; /**< Size of the buffer. */
[7f1c620]56 unative_t intval; /**< Integer value */
[91c78c9]57 cmd_arg_type_t vartype; /**< Resulting type of variable arg */
[b3f8fb7]58} cmd_arg_t;
[ff3b3197]59
60/** Structure representing one kconsole command. */
[b3f8fb7]61typedef struct {
[ff3b3197]62 link_t link; /**< Command list link. */
[dc747e3]63 SPINLOCK_DECLARE(lock); /**< This lock protects everything below. */
[ff3b3197]64 const char *name; /**< Command name. */
65 const char *description; /**< Textual description. */
[f4338d2]66 int (* func)(cmd_arg_t *); /**< Function implementing the command. */
[ff3b3197]67 count_t argc; /**< Number of arguments. */
68 cmd_arg_t *argv; /**< Argument vector. */
[f4338d2]69 void (* help)(void); /**< Function for printing detailed help. */
[b3f8fb7]70} cmd_info_t;
[ff3b3197]71
[8be8cfa]72SPINLOCK_EXTERN(cmd_lock);
[ff3b3197]73extern link_t cmd_head;
74
75extern void kconsole_init(void);
[e07fe0c]76extern void kconsole(void *prompt);
[2677758]77
[ff3b3197]78extern int cmd_register(cmd_info_t *cmd);
79
[2677758]80#endif
[b45c443]81
[06e1e95]82/** @}
[b45c443]83 */
Note: See TracBrowser for help on using the repository browser.