2022-06-10 16:14:32 +08:00
|
|
|
#ifndef _MESA_SHM_RING_QUEUE_H_
|
|
|
|
|
#define _MESA_SHM_RING_QUEUE_H_
|
2022-06-17 18:14:24 +08:00
|
|
|
|
|
|
|
|
#include <pthread.h>
|
2022-06-22 09:44:55 +08:00
|
|
|
#define MESA_SHM_LOG_PATH_LEN 1024
|
2022-06-10 16:14:32 +08:00
|
|
|
#define MESA_SHM_RING_QUEUE_NUM 128
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_BLOCK_NUM 8192
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_BLOCK_BUFLEN 4096
|
2022-06-22 09:44:55 +08:00
|
|
|
#define MESA_SHM_RING_QUEUE_BLOCK_SIZE (MESA_SHM_LOG_PATH_LEN + sizeof(int) + MESA_SHM_RING_QUEUE_BLOCK_BUFLEN) /*log file + (int)payload len + payload*/
|
2022-06-10 16:14:32 +08:00
|
|
|
#define MESA_SHM_KEY_OVERVIEW 35720
|
|
|
|
|
#define MESA_SHM_KEY_MIN (MESA_SHM_KEY_OVERVIEW + 1)
|
|
|
|
|
#define MESA_SHM_KEY_MAX (MESA_SHM_KEY_MIN + MESA_SHM_RING_QUEUE_NUM -1)
|
2022-06-22 09:44:55 +08:00
|
|
|
#define MESA_SHM_LOG_BUF_PREFIX_LEN 1024
|
2022-06-10 16:14:32 +08:00
|
|
|
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_INITIAL 0
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_IDLE 1
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_HALF_IDLE 2
|
|
|
|
|
#define MESA_SHM_RING_QUEUE_USED 3
|
|
|
|
|
|
|
|
|
|
struct MESA_shm_overview *MESA_shm_alloc_overview();
|
|
|
|
|
struct MESA_shm_queue_head *MESA_shm_get_ring_queue();
|
|
|
|
|
void MESA_shm_init_mutex();
|
|
|
|
|
void MESA_shm_init_overview();
|
|
|
|
|
void MESA_shm_recycle_ring_queue(struct MESA_shm_queue_head *ring_queue_head);
|
2022-06-22 09:44:55 +08:00
|
|
|
int MESA_shm_copy_buf_to_ring_queue(char *buf, int buflen, struct MESA_shm_queue_head *head, char *log_file, int log_file_len);
|
|
|
|
|
int MESA_shm_ring_queue_is_empty(struct MESA_shm_queue_head *head);
|
|
|
|
|
int MESA_shm_ring_queue_is_full(struct MESA_shm_queue_head *head);
|
2022-06-22 17:49:58 +08:00
|
|
|
void MESA_shm_ring_queue_set_empty(struct MESA_shm_queue_head *head);
|
2022-06-10 16:14:32 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
struct MESA_shm_overview{
|
|
|
|
|
int shmkey;
|
|
|
|
|
int shmid;
|
|
|
|
|
int idx;
|
2022-06-22 09:44:55 +08:00
|
|
|
int producer_pid;
|
2022-06-17 18:14:24 +08:00
|
|
|
pthread_mutex_t mutex;
|
2022-06-10 16:14:32 +08:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
struct MESA_shm_queue_head{
|
|
|
|
|
unsigned int blksize;
|
|
|
|
|
unsigned int blknum;
|
|
|
|
|
volatile unsigned int rd_idx;
|
|
|
|
|
volatile unsigned int wr_idx;
|
|
|
|
|
int ovw_idx;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|