source: mainline/generic/include/console/kconsole.h@ f7f6f25

lfn serial ticket/834-toolchain-update topic/msim-upgrade topic/simplify-dev-export
Last change on this file since f7f6f25 was 91c78c9, checked in by Ondrej Palkovsky <ondrap@…>, 20 years ago

String constants without spaces are now supported by call commands.
For more we would need some lexer.
The call? commands are not compatibile with stdarg functions on AMD
architectures, because of the calling sequence.

  • Property mode set to 100644
File size: 2.7 KB
Line 
1/*
2 * Copyright (C) 2005 Jakub Jermar
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
29#ifndef __KCONSOLE_H__
30#define __KCONSOLE_H__
31
32#include <typedefs.h>
33#include <list.h>
34#include <synch/spinlock.h>
35
36enum cmd_arg_type {
37 ARG_TYPE_INVALID = 0,
38 ARG_TYPE_INT,
39 ARG_TYPE_STRING,
40 ARG_TYPE_VAR /**< Variable type - either symbol or string */
41};
42
43/** Structure representing one argument of kconsole command line. */
44struct cmd_arg {
45 cmd_arg_type_t type; /**< Type descriptor. */
46 void *buffer; /**< Buffer where to store data. */
47 size_t len; /**< Size of the buffer. */
48 __native intval; /**< Integer value */
49 cmd_arg_type_t vartype; /**< Resulting type of variable arg */
50};
51
52/** Structure representing one kconsole command. */
53struct cmd_info {
54 link_t link; /**< Command list link. */
55 spinlock_t lock; /**< This lock protects everything below. */
56 const char *name; /**< Command name. */
57 const char *description; /**< Textual description. */
58 int (* func)(cmd_arg_t *); /**< Function implementing the command. */
59 count_t argc; /**< Number of arguments. */
60 cmd_arg_t *argv; /**< Argument vector. */
61 void (* help)(void); /**< Function for printing detailed help. */
62};
63
64extern spinlock_t cmd_lock;
65extern link_t cmd_head;
66
67extern void kconsole_init(void);
68extern void kconsole(void *arg);
69
70extern int cmd_register(cmd_info_t *cmd);
71
72#endif
Note: See TracBrowser for help on using the repository browser.