vhost: add vDPA resource cleanup callback
[dpdk.git] / lib / cmdline / cmdline_rdline.c
index 2cb53e3..d92b1cd 100644 (file)
@@ -13,6 +13,7 @@
 #include <ctype.h>
 
 #include "cmdline_cirbuf.h"
+#include "cmdline_private.h"
 #include "cmdline_rdline.h"
 
 static void rdline_puts(struct rdline *rdl, const char *buf);
@@ -37,9 +38,10 @@ isblank2(char c)
 
 int
 rdline_init(struct rdline *rdl,
-                rdline_write_char_t *write_char,
-                rdline_validate_t *validate,
-                rdline_complete_t *complete)
+           rdline_write_char_t *write_char,
+           rdline_validate_t *validate,
+           rdline_complete_t *complete,
+           void *opaque)
 {
        if (!rdl || !write_char || !validate || !complete)
                return -EINVAL;
@@ -47,10 +49,33 @@ rdline_init(struct rdline *rdl,
        rdl->validate = validate;
        rdl->complete = complete;
        rdl->write_char = write_char;
+       rdl->opaque = opaque;
        rdl->status = RDLINE_INIT;
        return cirbuf_init(&rdl->history, rdl->history_buf, 0, RDLINE_HISTORY_BUF_SIZE);
 }
 
+struct rdline *
+rdline_new(rdline_write_char_t *write_char,
+          rdline_validate_t *validate,
+          rdline_complete_t *complete,
+          void *opaque)
+{
+       struct rdline *rdl;
+
+       rdl = malloc(sizeof(*rdl));
+       if (rdline_init(rdl, write_char, validate, complete, opaque) < 0) {
+               free(rdl);
+               rdl = NULL;
+       }
+       return rdl;
+}
+
+void
+rdline_free(struct rdline *rdl)
+{
+       free(rdl);
+}
+
 void
 rdline_newline(struct rdline *rdl, const char *prompt)
 {
@@ -564,6 +589,18 @@ rdline_get_history_item(struct rdline * rdl, unsigned int idx)
        return NULL;
 }
 
+size_t
+rdline_get_history_buffer_size(struct rdline *rdl)
+{
+       return sizeof(rdl->history_buf);
+}
+
+void *
+rdline_get_opaque(struct rdline *rdl)
+{
+       return rdl != NULL ? rdl->opaque : NULL;
+}
+
 int
 rdline_add_history(struct rdline * rdl, const char * buf)
 {