summaryrefslogtreecommitdiffstats
path: root/carl9170fw/tools/include
diff options
context:
space:
mode:
Diffstat (limited to 'carl9170fw/tools/include')
-rw-r--r--carl9170fw/tools/include/frame.h401
-rw-r--r--carl9170fw/tools/include/list.h92
2 files changed, 0 insertions, 493 deletions
diff --git a/carl9170fw/tools/include/frame.h b/carl9170fw/tools/include/frame.h
deleted file mode 100644
index f753fe3..0000000
--- a/carl9170fw/tools/include/frame.h
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * 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 version 2 of the License.
- *
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- *
- * Most ideas and some code are copied from the linux' kernels
- * include/linux/skbuff.h
- */
-
-#ifndef __TOOLS_FRAME_H
-#define __TOOLS_FRAME_H
-
-#include "SDL.h"
-#include "list.h"
-
-/**
- * struct frame_queue - sk_buff_head like frame queue
- *
- * @list: pointer to head and tail
- * @lock: mutex lock for serialize access
- * @len: exact number of queued frames
- */
-
-struct frame_queue {
- struct list_head list;
- SDL_mutex *lock;
- size_t len;
-};
-
-/**
- * struct frame - frame data structure (like sk_buff)
- *
- * @list: storage for double-linked &struct frame_queue list
- * @dev: pointer to private device/driver structure
- * @timestamp: space for the current timestamp
- * @cb: private driver data
- * @dcb: more reserved space for low-level / backend driver
- * @queue: selected frame queue / priority
- * @ref: reference counter
- * @alloced: maximum available space
- * @total_len: currently consumed and reserved memory
- * @len: current frame length
- * @head: points to the buffer head
- * @data: current frame data pointer
- * @tail: frame data tail pointer
- * @payload: frame data storage container
- */
-
-struct frame {
- struct list_head list;
- void *dev;
- unsigned long timestamp;
- uint8_t cb[64];
- union {
- struct list_head list;
- uint8_t raw_data[32];
- } dcb;
-
- unsigned int queue;
- unsigned int ref;
- unsigned int alloced;
- unsigned int total_len;
- unsigned int len;
- uint8_t *head;
- uint8_t *data;
- uint8_t *tail;
-
- /* payload must be the last entry */
- uint8_t payload[0];
-};
-
-/**
- * frame_put - append more data to &struct frame
- *
- * Allocate @size bytes from &struct frame tail and
- * returns a pointer to the requested location.
- *
- * @frame: frame to alter
- * @size: extra size
- */
-static inline void *frame_put(struct frame *frame, unsigned int size)
-{
- void *tmp;
-
- BUG_ON(frame->total_len + size > frame->alloced);
-
- frame->len += size;
- frame->total_len += size;
-
- tmp = (void *) frame->tail;
- frame->tail += size;
-
- BUG_ON(frame->tail > (frame->payload + frame->alloced));
-
- return tmp;
-}
-
-/**
- * frame_push - allocate head
- *
- * returns a pointer to a newly allocate area at &struct frame head.
- *
- * @frame: frame to modify
- * @size: requested extra size
- */
-static inline void *frame_push(struct frame *frame, unsigned int size)
-{
- frame->len += size;
- frame->data -= size;
-
- BUG_ON(frame->data < frame->payload);
- return frame->data;
-}
-
-/**
- * frame_get - reference frame buffer
- *
- * grab a reference from the frame buffer, in order to
- * prevent it from being freed prematurely by a different user.
- *
- * @frame: frame pointer
- */
-static inline struct frame *frame_get(struct frame *frame)
-{
- frame->ref++;
- return frame;
-}
-
-/**
- * frame_pull - remove space from &struct frame head
- *
- * Does the opposite of frame_push() and removes freed-up
- * space at the frames's head.
- *
- * @frame: pointer to frame structure
- * @size: bytes to remove from head
- */
-static inline void *frame_pull(struct frame *frame, unsigned int size)
-{
- BUG_ON(frame->len < size);
-
- frame->len -= size;
- frame->total_len -= size;
- frame->data += size;
-
- return frame->data;
-}
-
-/**
- * frame_reserve - reserve frame headroom
- *
- * Reserve a certain amount of space to allow headroom manipulations
- * in the future.
- *
- * @frame: frame to adjust
- * @size: bytes to reserve
- */
-static inline void frame_reserve(struct frame *frame, unsigned int size)
-{
- BUG_ON(frame->total_len + size > frame->alloced);
- BUG_ON(frame->len != 0);
-
- frame->total_len += size;
- frame->data += size;
- frame->tail += size;
-}
-
-/**
- * frame_trim - set frame length
- *
- * cut the frame to @size length.
- *
- * @frame: frame to be trimmed
- * @size: new length
- */
-static inline void frame_trim(struct frame *frame, unsigned int size)
-{
- BUG_ON(size > frame->total_len);
-
- frame->len = size;
- frame->total_len = size;
- frame->data = frame->head;
- frame->tail = frame->head + size;
-}
-
-/**
- * frame_alloc - alloc and initialize new frame
- *
- * returns a newly created &struct frame object.
- *
- * @size: maximum frame size of the new frame
- */
-static inline struct frame *frame_alloc(unsigned int size)
-{
- struct frame *tmp;
-
- tmp = malloc(size + sizeof(*tmp));
- if (tmp != NULL) {
- memset(tmp, 0, sizeof(*tmp));
- init_list_head(&tmp->list);
- init_list_head(&tmp->dcb.list);
- tmp->len = 0;
- tmp->total_len = 0;
- tmp->alloced = size;
-
- tmp->head = tmp->payload;
- tmp->data = tmp->payload;
- tmp->tail = tmp->payload;
- tmp->ref = 1;
- }
- return tmp;
-}
-
-/**
- * frame_free - unref and free frame
- *
- * Unreference frame and free it up, if all users are gone.
- *
- * @frame: frame to be freed
- */
-static inline void frame_free(struct frame *frame)
-{
- if (!--frame->ref)
- free(frame);
-}
-
-/**
- * FRAME_WALK - MACRO walker
- *
- * Walks over all queued elements in &struct frame_queue
- *
- * NOTE: This function is vulnerable in concurrent access
- * scenarios without proper locking.
- *
- * @pos: current position inside the queue
- * @head: &struct frame_queue head
- */
-#define FRAME_WALK(pos, head) \
- list_for_each_entry((pos), &(head)->list, list)
-
-static inline void __frame_queue_init(struct frame_queue *queue)
-{
- queue->len = 0;
- init_list_head(&queue->list);
-}
-
-/**
- * frame_queue_init - initialize frame_queue
- *
- * Initialize the given &struct frame_queue object.
- *
- * @queue: frame_queue to be initialized
- */
-static inline void frame_queue_init(struct frame_queue *queue)
-{
- queue->lock = SDL_CreateMutex();
- __frame_queue_init(queue);
-}
-
-/**
- * frame_queue_len - returns number of queue elements
- *
- * @queue: frame_queue object
- */
-static inline unsigned int frame_queue_len(struct frame_queue *queue)
-{
- return queue->len;
-}
-
-/**
- * frame_queue_empty - returns %TRUE whenever queue is empty
- *
- * @queue: frame_queue object
- */
-static inline bool frame_queue_empty(struct frame_queue *queue)
-{
- return list_empty(&queue->list);
-}
-
-static inline void __frame_queue_head(struct frame_queue *queue, struct frame *frame)
-{
- list_add_head(&frame->list, &queue->list);
- queue->len++;
-}
-
-/**
- * frame_queue_head - queue a frame at the queues head
- * @queue: queue to use
- */
-static inline void frame_queue_head(struct frame_queue *queue, struct frame *frame)
-{
- BUG_ON((SDL_mutexP(queue->lock) != 0));
- __frame_queue_head(queue, frame);
- SDL_mutexV(queue->lock);
-}
-
-static inline void __frame_queue_tail(struct frame_queue *queue, struct frame *frame)
-{
- list_add_tail(&frame->list, &queue->list);
- queue->len++;
-}
-
-/**
- * frame_queue_head - queue a frame at the queues tail
- * @queue: queue to use
- */
-static inline void frame_queue_tail(struct frame_queue *queue, struct frame *frame)
-{
- BUG_ON((SDL_mutexP(queue->lock) != 0));
- __frame_queue_tail(queue, frame);
- SDL_mutexV(queue->lock);
-}
-
-static inline void __frame_unlink(struct frame_queue *queue, struct frame *frame)
-{
- list_del(&frame->list);
- queue->len--;
-}
-
-/**
- * frame_queue_unlink - remove a frame from the queue
- * @queue: queue to use
- * @frame: frame to remove
- */
-static inline void frame_unlink(struct frame_queue *queue, struct frame *frame)
-{
- BUG_ON((SDL_mutexP(queue->lock) != 0));
- __frame_unlink(queue, frame);
- SDL_mutexV(queue->lock);
-}
-
-
-static inline struct frame *__frame_dequeue(struct frame_queue *queue)
-{
- struct frame *tmp = NULL;
-
- if (!frame_queue_empty(queue)) {
- tmp = list_entry(queue->list.next, struct frame, list);
- __frame_unlink(queue, tmp);
- }
-
- return tmp;
-}
-
-/**
- * frame_dequeue - remove frame from the head of the queue
- *
- * @queue: queue to dequeue from
- */
-static inline struct frame *frame_dequeue(struct frame_queue *queue)
-{
- struct frame *tmp;
-
- BUG_ON((SDL_mutexP(queue->lock) != 0));
-
- tmp = __frame_dequeue(queue);
- SDL_mutexV(queue->lock);
- return tmp;
-}
-
-static inline void __frame_queue_purge(struct frame_queue *queue)
-{
- while (list_empty(&queue->list) == false)
- frame_free(__frame_dequeue(queue));
-}
-
-/**
- * frame_queue_purge - frees all queued &struct frame objects
- *
- * @queue: queue to be freed
- */
-static inline void frame_queue_purge(struct frame_queue *queue)
-{
- BUG_ON((SDL_mutexP(queue->lock) != 0));
- __frame_queue_purge(queue);
- SDL_mutexV(queue->lock);
-}
-
-/**
- * frame_queue_kill - destroys frame_queue object
- *
- * Destroy object and frees up all remaining elements
- *
- * @queue: frame_queue victim
- */
-static inline void frame_queue_kill(struct frame_queue *queue)
-{
- SDL_DestroyMutex(queue->lock);
- __frame_queue_purge(queue);
-}
-
-#endif /* __TOOLS_FRAME_H */
diff --git a/carl9170fw/tools/include/list.h b/carl9170fw/tools/include/list.h
deleted file mode 100644
index 1991d97..0000000
--- a/carl9170fw/tools/include/list.h
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * list.h List Utilities
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation version 2.1
- * of the License.
- *
- * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
- */
-
-#ifndef __LIST_H
-#define __LIST_H
-
-struct list_head {
- struct list_head *next;
- struct list_head *prev;
-};
-
-static inline void list_add(struct list_head *obj,
- struct list_head *prev,
- struct list_head *next)
-{
- prev->next = obj;
- obj->prev = prev;
- next->prev = obj;
- obj->next = next;
-}
-
-static inline void list_add_tail(struct list_head *obj,
- struct list_head *head)
-{
- list_add(obj, head->prev, head);
-}
-
-static inline void list_add_head(struct list_head *obj,
- struct list_head *head)
-{
- list_add(obj, head, head->next);
-}
-
-static inline void list_del(struct list_head *obj)
-{
- obj->prev->next = obj->next;
- obj->next->prev = obj->prev;
- obj->next = obj->prev = obj;
-}
-
-static inline void list_replace(struct list_head *old,
- struct list_head *obj)
-{
- obj->next = old->next;
- obj->next->prev = obj;
- obj->prev = old->prev;
- obj->prev->next = obj;
-}
-
-static inline int list_empty(struct list_head *head)
-{
- return head->next == head;
-}
-
-#define list_entry(ptr, type, member) \
- container_of(ptr, type, member)
-
-#define list_first_entry(ptr, type, member) \
- container_of((ptr)->next, type, member)
-
-#define list_at_tail(pos, head, member) \
- ((pos)->member.next == (head))
-
-#define list_at_head(pos, head, member) \
- ((pos)->member.prev == (head))
-
-#define LIST_HEAD(name) \
- struct list_head name = { &(name), &(name) }
-
-#define list_for_each_entry(pos, head, member) \
- for (pos = list_entry((head)->next, typeof(*pos), member); \
- &(pos)->member != (head); \
- (pos) = list_entry((pos)->member.next, typeof(*(pos)), member))
-
-#define list_for_each_entry_safe(pos, n, head, member) \
- for (pos = list_entry((head)->next, typeof(*pos), member), \
- n = list_entry(pos->member.next, typeof(*pos), member); \
- &(pos)->member != (head); \
- pos = n, n = list_entry(n->member.next, typeof(*n), member))
-
-#define init_list_head(head) \
- do { (head)->next = (head); (head)->prev = (head); } while (0)
-
-#endif /* __LIST_H */