This repository has been archived on 2025-09-14. You can view files and clone it, but cannot push or open issues or pull requests.
Files
mesa-framework-mesa-handle-…/inc/MESA_shm_ring_queue.h

62 lines
1.6 KiB
C
Raw Normal View History

2022-06-10 16:14:32 +08:00
#ifndef _MESA_SHM_RING_QUEUE_H_
#define _MESA_SHM_RING_QUEUE_H_
#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_SIZE 4096
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_CONSUMER_RUNNING 1
#define MESA_CONSUMER_NOT_RUNNING 0
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;
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;
};
int MESA_shm_alloc_overview(struct MESA_shm_overview **ovw, int *ovw_id, int **consumer_status);
struct MESA_shm_queue_head *MESA_shm_get_ring_queue();
void MESA_shm_init();
void MESA_shm_recycle_ring_queue(struct MESA_shm_queue_head *ring_queue_head);
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 level);
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);
void MESA_shm_ring_queue_set_empty(struct MESA_shm_queue_head *head);
int MESA_shm_get_consumer_status();
void MESA_shm_unlink(struct MESA_shm_overview *ovw, int ovw_shmid);
const char *loglevel_to_name(int level);
2022-06-10 16:14:32 +08:00
#endif