ROFL-pipeline  v0.6.0dev
port_queue.c
1 #include "port_queue.h"
2 #include "platform/lock.h"
3 #include "platform/memory.h"
4 
5 #include <string.h>
6 
7 
8 rofl_result_t __port_queue_init(port_queue_t* queue, uint32_t id, char* name, uint16_t length, uint16_t min_rate, uint16_t max_rate){
9 
10  //Put 0 stats
11  platform_memset(&queue->stats,0,sizeof(queue_stats_t));
12 
13  //Init stats mutex
14  queue->stats.mutex = platform_mutex_init(NULL);
15 
16  if(!queue->stats.mutex){
17  return ROFL_FAILURE;
18  }
19 
20  //Fill in values
21  queue->set = true;
22  queue->id = id;
23  queue->length = length;
24  strncpy(queue->name, name, PORT_QUEUE_MAX_LEN_NAME);
25  queue->min_rate = min_rate;
26  queue->max_rate = max_rate;
27 
28  queue->platform_queue_state = NULL;
29 
30  return ROFL_SUCCESS;
31 }
32 
33 rofl_result_t __port_queue_destroy(port_queue_t* queue){
34  //Destroy
35  platform_mutex_destroy(queue->stats.mutex);
36  platform_memset(queue,0,sizeof(port_queue_t));
37  return ROFL_SUCCESS;
38 }
queue_stats_t stats
Queue statistics.
Definition: port_queue.h:81
Defines the locking interface used by the library. The user of the library MUST provide an implementa...
Defines the memory management interface used by the library. The user of the library MUST provide an ...
ROFL_BEGIN_DECLS platform_mutex_t * platform_mutex_init(void *params)
Allocates and initializes a mutex.
void * platform_memset(void *src, int c, size_t length)
Sets 'c' to the whole chunk of memory.
uint32_t id
Queue id.
Definition: port_queue.h:56
uint16_t max_rate
Maximum rate (0 when unknown)
Definition: port_queue.h:76
char name[PORT_QUEUE_MAX_LEN_NAME]
Queue name.
Definition: port_queue.h:61
uint16_t length
Length of the queue (slot num.)
Definition: port_queue.h:66
void platform_mutex_destroy(platform_mutex_t *mutex)
Destroys and deallocates a mutex previously inited by platform_mutex_init().
Switch queue abstraction.
Definition: port_queue.h:49
Queue stats.
Definition: port_queue.h:30
uint16_t min_rate
Minimum rate (0 when unknown)
Definition: port_queue.h:71
Port queue abstraction.