numam-dpdk/lib/librte_cmdline/cmdline.h
Dmitry Kozlyuk 51fcb6a1fe cmdline: make implementation logically opaque
struct cmdline exposes platform-specific members it contains, most
notably struct termios that is only available on Unix. While ABI
considerations prevent from hinding the definition on already supported
platforms, struct cmdline is considered logically opaque from now on.
Add a deprecation notice targeted at 20.11.

* Remove tests checking struct cmdline content as meaningless.

* Fix missing cmdline_free() in unit test.

* Add cmdline_get_rdline() to access history buffer indirectly.
  The new function is currently used only in tests.

Suggested-by: Olivier Matz <olivier.matz@6wind.com>
Signed-off-by: Dmitry Kozlyuk <dmitry.kozliuk@gmail.com>
Acked-by: Ray Kinsella <mdr@ashroe.eu>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
2020-10-15 00:39:10 +02:00

81 lines
1.7 KiB
C

/* SPDX-License-Identifier: BSD-3-Clause
* Copyright(c) 2010-2014 Intel Corporation.
* Copyright (c) 2009, Olivier MATZ <zer0@droids-corp.org>
* All rights reserved.
*/
#ifndef _CMDLINE_H_
#define _CMDLINE_H_
#ifndef RTE_EXEC_ENV_WINDOWS
#include <termios.h>
#endif
#include <rte_common.h>
#include <rte_compat.h>
#include <cmdline_rdline.h>
#include <cmdline_parse.h>
/**
* @file
*
* Command line API
*/
#ifdef __cplusplus
extern "C" {
#endif
#ifndef RTE_EXEC_ENV_WINDOWS
struct cmdline {
int s_in;
int s_out;
cmdline_parse_ctx_t *ctx;
struct rdline rdl;
char prompt[RDLINE_PROMPT_SIZE];
struct termios oldterm;
};
#else
struct cmdline;
#endif /* RTE_EXEC_ENV_WINDOWS */
struct cmdline *cmdline_new(cmdline_parse_ctx_t *ctx, const char *prompt, int s_in, int s_out);
void cmdline_set_prompt(struct cmdline *cl, const char *prompt);
void cmdline_free(struct cmdline *cl);
void cmdline_printf(const struct cmdline *cl, const char *fmt, ...)
__rte_format_printf(2, 3);
int cmdline_in(struct cmdline *cl, const char *buf, int size);
int cmdline_write_char(struct rdline *rdl, char c);
__rte_experimental
struct rdline *
cmdline_get_rdline(struct cmdline *cl);
/**
* This function is nonblocking equivalent of ``cmdline_interact()``. It polls
* *cl* for one character and interpret it. If return value is *RDLINE_EXITED*
* it mean that ``cmdline_quit()`` was invoked.
*
* @param cl
* The command line object.
*
* @return
* On success return object status - one of *enum rdline_status*.
* On error return negative value.
*/
int cmdline_poll(struct cmdline *cl);
void cmdline_interact(struct cmdline *cl);
void cmdline_quit(struct cmdline *cl);
#ifdef __cplusplus
}
#endif
#endif /* _CMDLINE_SOCKET_H_ */