1*76404edcSAsim Jamshed #ifndef __LOGGER_H_ 2*76404edcSAsim Jamshed #define __LOGGER_H_ 3*76404edcSAsim Jamshed 4*76404edcSAsim Jamshed #include <stdint.h> 5*76404edcSAsim Jamshed 6*76404edcSAsim Jamshed #define LOG_BUFF_SIZE (256*1024) 7*76404edcSAsim Jamshed #define NUM_LOG_BUFF (100) 8*76404edcSAsim Jamshed 9*76404edcSAsim Jamshed enum { 10*76404edcSAsim Jamshed IDLE_LOGT, 11*76404edcSAsim Jamshed ACTIVE_LOGT 12*76404edcSAsim Jamshed } log_thread_state; 13*76404edcSAsim Jamshed 14*76404edcSAsim Jamshed typedef struct log_buff 15*76404edcSAsim Jamshed { 16*76404edcSAsim Jamshed int tid; 17*76404edcSAsim Jamshed FILE* fid; 18*76404edcSAsim Jamshed int buff_len; 19*76404edcSAsim Jamshed char buff[LOG_BUFF_SIZE]; 20*76404edcSAsim Jamshed TAILQ_ENTRY(log_buff) buff_link; 21*76404edcSAsim Jamshed } log_buff; 22*76404edcSAsim Jamshed 23*76404edcSAsim Jamshed typedef struct log_thread_context { 24*76404edcSAsim Jamshed pthread_t thread; 25*76404edcSAsim Jamshed int cpu; 26*76404edcSAsim Jamshed int done; 27*76404edcSAsim Jamshed int sp_fd; 28*76404edcSAsim Jamshed int pair_sp_fd; 29*76404edcSAsim Jamshed int free_buff_cnt; 30*76404edcSAsim Jamshed int job_buff_cnt; 31*76404edcSAsim Jamshed 32*76404edcSAsim Jamshed uint8_t state; 33*76404edcSAsim Jamshed 34*76404edcSAsim Jamshed pthread_mutex_t mutex; 35*76404edcSAsim Jamshed pthread_mutex_t free_mutex; 36*76404edcSAsim Jamshed 37*76404edcSAsim Jamshed TAILQ_HEAD(, log_buff) working_queue; 38*76404edcSAsim Jamshed TAILQ_HEAD(, log_buff) free_queue; 39*76404edcSAsim Jamshed 40*76404edcSAsim Jamshed } log_thread_context; 41*76404edcSAsim Jamshed 42*76404edcSAsim Jamshed log_buff* DequeueFreeBuffer (log_thread_context *ctx); 43*76404edcSAsim Jamshed void EnqueueJobBuffer(log_thread_context *ctx, log_buff* working_bp); 44*76404edcSAsim Jamshed void InitLogThreadContext (log_thread_context *ctx, int cpu); 45*76404edcSAsim Jamshed void *ThreadLogMain(void* arg); 46*76404edcSAsim Jamshed 47*76404edcSAsim Jamshed #endif /* __LOGGER_H_ */ 48