/* * Copyright (c) Hisilicon Technologies Co., Ltd. 2012-2019. All rights reserved. * Description: drv_rm.h * Author: sm_rm * Create: 2012-11-25 */ #ifndef __DRV_RM_H__ #define __DRV_RM_H__ #include #include "drv_rm_define.h" #include "drv_rm_ext.h" #include "osal_ext.h" #include "td_type.h" #ifdef __cplusplus #if __cplusplus extern "C" { #endif #endif /* RM上下文数据结构 */ typedef struct { td_handle rm_handle; td_void *event_handle_p; td_bool chn_enable; td_bool list_empty; td_u32 cur_index; td_u32 queue_cnt; td_u32 try_queue_cnt; td_u32 free_node; td_u32 used_node; td_u32 cur_pid; ext_drv_rm_win_event cur_event; osal_wait wait_queue; td_u32 cur_query_time; td_u32 lst_query_time; td_u32 query_time_diff; td_bool idle; } rm_drv_path_ctx; typedef struct { td_u32 rm_path_count; td_u32 wake_up_cnt; td_u32 wake_up_time; td_u32 normal_cnt; td_u32 path_recycle_cnt; td_u32 win_owner_id; td_u32 chn_create_cnt[RM_DRV_CHN_MAX_NUM]; td_u32 chn_destroy_cnt[RM_DRV_CHN_MAX_NUM]; td_s32 rm_available_win_count; osal_wait wait_queue; td_bool wake_up_flags; td_bool waiting_event; ext_drv_win_owner wind_owner; } rm_drv_golbal_ctx; #define check_rm_null_ptr(pointer) \ do { \ if ((pointer) == TD_NULL) { \ soc_log_err("pointer %s is null ptr.\n", #pointer); \ return SOC_ERR_RM_NULL_PTR; \ } \ } while (0) td_void rm_drv_comm_get_golbal_ctx(rm_drv_golbal_ctx **rm_drv_golbal_ctx_p); td_void rm_drv_comm_get_path_ctx(td_u32 rm_path_id, rm_drv_path_ctx **rm_drv_path_ctx_p); #ifdef __cplusplus #if __cplusplus } #endif #endif #endif /* __DRV_RM_H__ */