MediaProcessors
|
#include "fifo.h"
#include <stdio.h>
#include <stdlib.h>
#include <fcntl.h>
#include <unistd.h>
#include <string.h>
#include <sys/mman.h>
#include <sys/shm.h>
#include <sys/stat.h>
#include <pthread.h>
#include <errno.h>
#include "check_utils.h"
#include "log.h"
#include "stat_codes.h"
Go to the source code of this file.
Classes | |
struct | fifo_elem_ctx_s |
struct | fifo_ctx_s |
Macros | |
#define | SIZEOF_FIFO_ELEM_CTX_T(FLAG_USE_SHM, CHUNK_SIZE_MAX) (size_t)(sizeof(fifo_elem_ctx_t)+ (FLAG_USE_SHM== 0? 1: CHUNK_SIZE_MAX)) |
#define | FIFO_FILE_NAME_MAX_SIZE 1024 |
Typedefs | |
typedef struct fifo_elem_ctx_s | fifo_elem_ctx_t |
typedef struct fifo_ctx_s | fifo_ctx_t |
Functions | |
static void | fifo_close_internal (fifo_ctx_t **ref_fifo_ctx, int flag_deinit) |
static int | fifo_init (fifo_ctx_t *fifo_ctx, size_t slots_max, size_t chunk_size_max, uint32_t flags, const char *fifo_file_name, const fifo_elem_alloc_fxn_t *fifo_elem_alloc_fxn) |
static void | fifo_deinit (fifo_ctx_t *fifo_ctx) |
static int | fifo_input (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t elem_size, int dup_flag) |
static int | fifo_output (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t *ref_elem_size, int flush_flag, int64_t tout_usecs) |
static int | fifo_mutex_init (pthread_mutex_t *const pthread_mutex_p, int flag_use_shm, log_ctx_t *log_ctx) |
static int | fifo_cond_init (pthread_cond_t *const pthread_cond_p, int flag_use_shm, log_ctx_t *log_ctx) |
fifo_ctx_t * | fifo_open (size_t slots_max, size_t chunk_size_max, uint32_t flags, const fifo_elem_alloc_fxn_t *fifo_elem_alloc_fxn) |
fifo_ctx_t * | fifo_shm_open (size_t slots_max, size_t chunk_size_max, uint32_t flags, const char *fifo_file_name) |
fifo_ctx_t * | fifo_shm_exec_open (size_t slots_max, size_t chunk_size_max, uint32_t flags, const char *fifo_file_name) |
void | fifo_close (fifo_ctx_t **ref_fifo_ctx) |
void | fifo_set_blocking_mode (fifo_ctx_t *fifo_ctx, int do_block) |
int | fifo_put_dup (fifo_ctx_t *fifo_ctx, const void *elem, size_t elem_size) |
int | fifo_put (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t elem_size) |
int | fifo_get (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t *ref_elem_size) |
int | fifo_timedget (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t *ref_elem_size, int64_t tout_usecs) |
int | fifo_show (fifo_ctx_t *fifo_ctx, void **ref_elem, size_t *ref_elem_size) |
ssize_t | fifo_get_buffer_level (fifo_ctx_t *fifo_ctx) |
int | fifo_traverse (fifo_ctx_t *fifo_ctx, int elem_cnt, void(*it_fxn)(void *elem, ssize_t elem_size, int idx, void *it_arg, int *ref_flag_break), void *it_arg) |
void | fifo_empty (fifo_ctx_t *fifo_ctx) |
Definition in file fifo.c.
#define FIFO_FILE_NAME_MAX_SIZE 1024 |
#define SIZEOF_FIFO_ELEM_CTX_T | ( | FLAG_USE_SHM, | |
CHUNK_SIZE_MAX | |||
) | (size_t)(sizeof(fifo_elem_ctx_t)+ (FLAG_USE_SHM== 0? 1: CHUNK_SIZE_MAX)) |
Size of structure type 'fifo_elem_ctx_t'. In the case FLAG_USE_SHM flag is set, fifo_elem_ctx_t::shm_elem_pool will be actually a predefined buffer with a maximum fixed size of 'CHUNK_SIZE_MAX' octets. Otherwise, member fifo_elem_ctx_t::shm_elem_pool will not be used (giving a minimum legacy size).
typedef struct fifo_ctx_s fifo_ctx_t |
FIFO context structure.
typedef struct fifo_elem_ctx_s fifo_elem_ctx_t |
FIFO element context structure.
void fifo_close | ( | fifo_ctx_t ** | ref_fifo_ctx | ) |
|
static |
|
static |
void fifo_empty | ( | fifo_ctx_t * | fifo_ctx | ) |
int fifo_get | ( | fifo_ctx_t * | fifo_ctx, |
void ** | ref_elem, | ||
size_t * | ref_elem_size | ||
) |
ssize_t fifo_get_buffer_level | ( | fifo_ctx_t * | fifo_ctx | ) |
|
static |
fifo_ctx_t* fifo_open | ( | size_t | slots_max, |
size_t | chunk_size_max, | ||
uint32_t | flags, | ||
const fifo_elem_alloc_fxn_t * | fifo_elem_alloc_fxn | ||
) |
int fifo_put | ( | fifo_ctx_t * | fifo_ctx, |
void ** | ref_elem, | ||
size_t | elem_size | ||
) |
int fifo_put_dup | ( | fifo_ctx_t * | fifo_ctx, |
const void * | elem, | ||
size_t | elem_size | ||
) |
void fifo_set_blocking_mode | ( | fifo_ctx_t * | fifo_ctx, |
int | do_block | ||
) |
fifo_ctx_t* fifo_shm_open | ( | size_t | slots_max, |
size_t | chunk_size_max, | ||
uint32_t | flags, | ||
const char * | fifo_file_name | ||
) |
int fifo_show | ( | fifo_ctx_t * | fifo_ctx, |
void ** | elem, | ||
size_t * | elem_size | ||
) |
int fifo_timedget | ( | fifo_ctx_t * | fifo_ctx, |
void ** | ref_elem, | ||
size_t * | ref_elem_size, | ||
int64_t | tout_usecs | ||
) |
int fifo_traverse | ( | fifo_ctx_t * | fifo_ctx, |
int | elem_cnt, | ||
void(*)(void *elem, ssize_t elem_size, int idx, void *it_arg, int *ref_flag_break) | it_fxn, | ||
void * | it_arg | ||
) |