circbuf: Move to lib_generic and conditionally compile
authorPeter Tyser <ptyser@xes-inc.com>
Mon, 9 Nov 2009 21:17:50 +0000 (15:17 -0600)
committerWolfgang Denk <wd@denx.de>
Wed, 2 Dec 2009 22:19:32 +0000 (23:19 +0100)
circbuf could be used as a generic library and is only currently
needed when CONFIG_USB_TTY is defined.

Signed-off-by: Peter Tyser <ptyser@xes-inc.com>
common/Makefile
common/circbuf.c [deleted file]
lib_generic/Makefile
lib_generic/circbuf.c [new file with mode: 0644]

index 3781738e19ad1b5d1a802fd19e457e8e16c3ae80..47f6a71e2e1f6ee5d7cb856e38281c4480e23796 100644 (file)
@@ -29,7 +29,6 @@ AOBJS =
 
 # core
 COBJS-y += main.o
-COBJS-y += circbuf.o
 COBJS-y += console.o
 COBJS-y += command.o
 COBJS-y += dlmalloc.o
diff --git a/common/circbuf.c b/common/circbuf.c
deleted file mode 100644 (file)
index 2332c63..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * (C) Copyright 2003
- * Gerry Hamel, geh@ti.com, Texas Instruments
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307         USA
- *
- */
-
-#include <common.h>
-#include <malloc.h>
-
-#include <circbuf.h>
-
-
-int buf_init (circbuf_t * buf, unsigned int size)
-{
-       assert (buf != NULL);
-
-       buf->size = 0;
-       buf->totalsize = size;
-       buf->data = (char *) malloc (sizeof (char) * size);
-       assert (buf->data != NULL);
-
-       buf->top = buf->data;
-       buf->tail = buf->data;
-       buf->end = &(buf->data[size]);
-
-       return 1;
-}
-
-int buf_free (circbuf_t * buf)
-{
-       assert (buf != NULL);
-       assert (buf->data != NULL);
-
-       free (buf->data);
-       memset (buf, 0, sizeof (circbuf_t));
-
-       return 1;
-}
-
-int buf_pop (circbuf_t * buf, char *dest, unsigned int len)
-{
-       unsigned int i;
-       char *p = buf->top;
-
-       assert (buf != NULL);
-       assert (dest != NULL);
-
-       /* Cap to number of bytes in buffer */
-       if (len > buf->size)
-               len = buf->size;
-
-       for (i = 0; i < len; i++) {
-               dest[i] = *p++;
-               /* Bounds check. */
-               if (p == buf->end) {
-                       p = buf->data;
-               }
-       }
-
-       /* Update 'top' pointer */
-       buf->top = p;
-       buf->size -= len;
-
-       return len;
-}
-
-int buf_push (circbuf_t * buf, const char *src, unsigned int len)
-{
-       /* NOTE:  this function allows push to overwrite old data. */
-       unsigned int i;
-       char *p = buf->tail;
-
-       assert (buf != NULL);
-       assert (src != NULL);
-
-       for (i = 0; i < len; i++) {
-               *p++ = src[i];
-               if (p == buf->end) {
-                       p = buf->data;
-               }
-               /* Make sure pushing too much data just replaces old data */
-               if (buf->size < buf->totalsize) {
-                       buf->size++;
-               } else {
-                       buf->top++;
-                       if (buf->top == buf->end) {
-                               buf->top = buf->data;
-                       }
-               }
-       }
-
-       /* Update 'tail' pointer */
-       buf->tail = p;
-
-       return len;
-}
index 686601cc18932b28c2040490accdfdddd583d2ca..2ec261af4a785194fee04ab7ff49435ea528c7c3 100644 (file)
@@ -31,6 +31,7 @@ COBJS-$(CONFIG_BZIP2) += bzlib_crctable.o
 COBJS-$(CONFIG_BZIP2) += bzlib_decompress.o
 COBJS-$(CONFIG_BZIP2) += bzlib_randtable.o
 COBJS-$(CONFIG_BZIP2) += bzlib_huffman.o
+COBJS-$(CONFIG_USB_TTY) += circbuf.o
 COBJS-y += crc16.o
 COBJS-y += crc32.o
 COBJS-y += ctype.o
diff --git a/lib_generic/circbuf.c b/lib_generic/circbuf.c
new file mode 100644 (file)
index 0000000..2332c63
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+ * (C) Copyright 2003
+ * Gerry Hamel, geh@ti.com, Texas Instruments
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.         See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307         USA
+ *
+ */
+
+#include <common.h>
+#include <malloc.h>
+
+#include <circbuf.h>
+
+
+int buf_init (circbuf_t * buf, unsigned int size)
+{
+       assert (buf != NULL);
+
+       buf->size = 0;
+       buf->totalsize = size;
+       buf->data = (char *) malloc (sizeof (char) * size);
+       assert (buf->data != NULL);
+
+       buf->top = buf->data;
+       buf->tail = buf->data;
+       buf->end = &(buf->data[size]);
+
+       return 1;
+}
+
+int buf_free (circbuf_t * buf)
+{
+       assert (buf != NULL);
+       assert (buf->data != NULL);
+
+       free (buf->data);
+       memset (buf, 0, sizeof (circbuf_t));
+
+       return 1;
+}
+
+int buf_pop (circbuf_t * buf, char *dest, unsigned int len)
+{
+       unsigned int i;
+       char *p = buf->top;
+
+       assert (buf != NULL);
+       assert (dest != NULL);
+
+       /* Cap to number of bytes in buffer */
+       if (len > buf->size)
+               len = buf->size;
+
+       for (i = 0; i < len; i++) {
+               dest[i] = *p++;
+               /* Bounds check. */
+               if (p == buf->end) {
+                       p = buf->data;
+               }
+       }
+
+       /* Update 'top' pointer */
+       buf->top = p;
+       buf->size -= len;
+
+       return len;
+}
+
+int buf_push (circbuf_t * buf, const char *src, unsigned int len)
+{
+       /* NOTE:  this function allows push to overwrite old data. */
+       unsigned int i;
+       char *p = buf->tail;
+
+       assert (buf != NULL);
+       assert (src != NULL);
+
+       for (i = 0; i < len; i++) {
+               *p++ = src[i];
+               if (p == buf->end) {
+                       p = buf->data;
+               }
+               /* Make sure pushing too much data just replaces old data */
+               if (buf->size < buf->totalsize) {
+                       buf->size++;
+               } else {
+                       buf->top++;
+                       if (buf->top == buf->end) {
+                               buf->top = buf->data;
+                       }
+               }
+       }
+
+       /* Update 'tail' pointer */
+       buf->tail = p;
+
+       return len;
+}