From cd2a540b2af83f057fce5a2f6ea64dd4f1d91ffb Mon Sep 17 00:00:00 2001 From: Russell King Date: Thu, 18 Oct 2012 11:54:00 +0100 Subject: Correctly type kernel_share_va/io_mem_virt_addr/vdec_obj_va This avoids a whole raft of completely unnecessary casts. --- vmeta_lib.c | 109 +++++++++++++++++++++++++++++++----------------------------- vmeta_lib.h | 6 ++-- 2 files changed, 59 insertions(+), 56 deletions(-) diff --git a/vmeta_lib.c b/vmeta_lib.c index dd588d2..fe561e5 100644 --- a/vmeta_lib.c +++ b/vmeta_lib.c @@ -400,6 +400,7 @@ static UNSG32 get_mem_addr(char *msg) // init vdec os driver SIGN32 vdec_os_driver_init(void) { + void *addr; int ret = 0; int rv; @@ -469,21 +470,23 @@ SIGN32 vdec_os_driver_init(void) dbg_printf(VDEC_DEBUG_MEM, "vdec os driver io mem phy addr: 0x%x\n", vdec_iface->io_mem_phy_addr); // mmap the io mem area - vdec_iface->io_mem_virt_addr = (SIGN32) mmap(NULL, vdec_iface->io_mem_size, - PROT_READ|PROT_WRITE, MAP_SHARED, vdec_iface->uiofd, 0); - - if(vdec_iface->io_mem_virt_addr == -1) { + addr = mmap(NULL, vdec_iface->io_mem_size, PROT_READ | PROT_WRITE, + MAP_SHARED, vdec_iface->uiofd, 0); + if(addr == MAP_FAILED) { ret = -VDEC_OS_DRIVER_MMAP_FAIL; goto err_mmap_fail; } - dbg_printf(VDEC_DEBUG_MEM, "vdec os driver io mem map to: 0x%x\n", vdec_iface->io_mem_virt_addr); + + dbg_printf(VDEC_DEBUG_MEM, "vdec os driver io mem map to: 0x%p\n", addr); + + vdec_iface->io_mem_virt_addr = addr; pthread_mutex_unlock(&pmt); return ret; err_mmap_fail: if(vdec_iface->io_mem_virt_addr > 0) - munmap((void*)vdec_iface->io_mem_virt_addr, vdec_iface->io_mem_size); + munmap(vdec_iface->io_mem_virt_addr, vdec_iface->io_mem_size); close(vdec_iface->uiofd); err_open_fail: free((void*)vdec_iface); @@ -521,22 +524,25 @@ SIGN32 vdec_os_driver_clean(void) } // unmap memory area - if(vdec_iface->io_mem_virt_addr > 0) { + if(vdec_iface->io_mem_virt_addr != NULL) { dbg_printf(VDEC_DEBUG_MEM, "munmap with io_mem_virt_addr = 0x%x\n", vdec_iface->io_mem_virt_addr); - munmap((void*)vdec_iface->io_mem_virt_addr, vdec_iface->io_mem_size); - vdec_iface->io_mem_virt_addr = vdec_iface->io_mem_size = 0; + munmap(vdec_iface->io_mem_virt_addr, vdec_iface->io_mem_size); + vdec_iface->io_mem_virt_addr = NULL; + vdec_iface->io_mem_size = 0; } - if(vdec_iface->kernel_share_va > 0) { - dbg_printf(VDEC_DEBUG_MEM, "munmap with kernel_share_va = 0x%x size=%d\n", vdec_iface->kernel_share_va,vdec_iface->kernel_share_size); - munmap((void*)vdec_iface->kernel_share_va, vdec_iface->kernel_share_size); - vdec_iface->kernel_share_va = vdec_iface->kernel_share_size = 0; + if(vdec_iface->kernel_share_va != NULL) { + dbg_printf(VDEC_DEBUG_MEM, "munmap with kernel_share_va = 0x%p size=%d\n", vdec_iface->kernel_share_va,vdec_iface->kernel_share_size); + munmap(vdec_iface->kernel_share_va, vdec_iface->kernel_share_size); + vdec_iface->kernel_share_va = NULL; + vdec_iface->kernel_share_size = 0; } - if(vdec_iface->vdec_obj_va > 0) { + if(vdec_iface->vdec_obj_va != NULL) { dbg_printf(VDEC_DEBUG_MEM, "munmap with vdec_obj_va = 0x%x size=%d\n", vdec_iface->vdec_obj_va, vdec_iface->vdec_obj_size); - munmap((void*)vdec_iface->vdec_obj_va,vdec_iface->vdec_obj_size ); - vdec_iface->vdec_obj_va = vdec_iface->vdec_obj_size = 0; + munmap(vdec_iface->vdec_obj_va,vdec_iface->vdec_obj_size ); + vdec_iface->vdec_obj_va = NULL; + vdec_iface->vdec_obj_size = 0; } // close fd @@ -610,13 +616,13 @@ SIGN32 vdec_os_api_get_hw_obj_addr(UNSG32* vaddr,UNSG32 size) { UNSG32 io_mem_size; UNSG32 io_mem_addr; - SIGN32 io_mem_virt_addr; UNSG32 ret = VDEC_OS_DRIVER_OK; + void *addr; - if(vdec_iface->vdec_obj_va > 0) + if(vdec_iface->vdec_obj_va != NULL) { dbg_printf(VDEC_DEBUG_MEM, "Already get vdec obj\n"); - *vaddr = vdec_iface->vdec_obj_va; + *vaddr = (UNSG32)vdec_iface->vdec_obj_va; return VDEC_OS_DRIVER_OK; } @@ -630,18 +636,18 @@ SIGN32 vdec_os_api_get_hw_obj_addr(UNSG32* vaddr,UNSG32 size) dbg_printf(VDEC_DEBUG_MEM, "vdec_os_api_get_hw_obj_addr: get_mem_size io_mem_size=%d, requested size=%d\n", \ io_mem_size,size); - io_mem_virt_addr = (SIGN32)mmap(NULL, size, - PROT_READ|PROT_WRITE, MAP_SHARED, vdec_iface->uiofd, UIO_IO_VMETA_OBJ_INDEX*getpagesize()); - if(io_mem_virt_addr == -1) { + addr = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_SHARED, + vdec_iface->uiofd, UIO_IO_VMETA_OBJ_INDEX*getpagesize()); + if(addr == MAP_FAILED) { ret = -VDEC_OS_DRIVER_MMAP_FAIL; dbg_printf(VDEC_DEBUG_MEM, "vdec_os_api_get_hw_obj_addr: mmap hw obj error\n"); goto get_vdec_obj_fail; } - dbg_printf(VDEC_DEBUG_MEM, "UIO_IO_VMETA_OBJ_ADDR virtual 0x%x size=%d \n", io_mem_virt_addr,io_mem_size); + dbg_printf(VDEC_DEBUG_MEM, "UIO_IO_VMETA_OBJ_ADDR virtual 0x%p size=%d \n", addr,io_mem_size); - *vaddr = io_mem_virt_addr; - vdec_iface->vdec_obj_va = io_mem_virt_addr; + *vaddr = (UNSG32)addr; + vdec_iface->vdec_obj_va = addr; vdec_iface->vdec_obj_size = size; get_vdec_obj_fail: @@ -652,8 +658,6 @@ SIGN32 vdec_os_api_get_hw_context_addr(UNSG32* paddr, UNSG32* vaddr, UNSG32 size { UNSG32 io_mem_size; UNSG32 io_mem_addr; - UNSG32 io_mem_virt_addr; - UNSG32 ret = VDEC_OS_DRIVER_OK; if(vdec_iface->hw_context_pa != 0) @@ -694,11 +698,11 @@ SIGN32 vdec_os_api_get_ks(kernel_share** pp_ks) { UNSG32 io_mem_size; UNSG32 io_mem_addr; - SIGN32 io_mem_virt_addr; + void *addr; UNSG32 ret = VDEC_OS_DRIVER_OK; - if(vdec_iface->kernel_share_va != 0) + if(vdec_iface->kernel_share_va != NULL) { dbg_printf(VDEC_DEBUG_MEM, "Already get kernel share\n"); return 0; @@ -712,19 +716,18 @@ SIGN32 vdec_os_api_get_ks(kernel_share** pp_ks) } dbg_printf(VDEC_DEBUG_MEM, "vdec_os_api_get_ks: get_mem_size io_mem_size=%d\n",io_mem_size); - io_mem_virt_addr = (SIGN32)mmap(NULL, io_mem_size, \ - PROT_READ|PROT_WRITE, MAP_SHARED, vdec_iface->uiofd, \ - UIO_IO_KERNEL_SHARE_INDEX*getpagesize()); - if(io_mem_virt_addr == -1) { + addr = mmap(NULL, io_mem_size, PROT_READ | PROT_WRITE, MAP_SHARED, + vdec_iface->uiofd, UIO_IO_KERNEL_SHARE_INDEX*getpagesize()); + if(addr == MAP_FAILED) { ret = -VDEC_OS_DRIVER_MMAP_FAIL; dbg_printf(VDEC_DEBUG_MEM, "vdec_os_api_get_ks: mmap ks error\n"); goto get_vos_fail; } - dbg_printf(VDEC_DEBUG_MEM, "kernel share virtual address: 0x%x size=%d \n", io_mem_virt_addr,io_mem_size); + dbg_printf(VDEC_DEBUG_MEM, "kernel share virtual address: 0x%p size=%d \n", addr,io_mem_size); - *pp_ks = (kernel_share *)io_mem_virt_addr; - vdec_iface->kernel_share_va = (UNSG32)io_mem_virt_addr; + *pp_ks = addr; + vdec_iface->kernel_share_va = addr; vdec_iface->kernel_share_size = io_mem_size; get_vos_fail: @@ -749,13 +752,13 @@ SIGN32 vdec_os_api_force_ini(void) vdec_os_driver_cb_t *p_cb = vdec_driver_get_cb(); int rv; - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { vdec_os_api_get_ks(&p_ks); } else { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; } vmeta_private_lock(); @@ -774,13 +777,13 @@ SIGN32 vdec_os_api_get_user_id(void) SIGN32 ret = -1; vdec_os_driver_cb_t *p_cb = vdec_driver_get_cb(); - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { vdec_os_api_get_ks(&p_ks); } else { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; } vmeta_private_lock(); @@ -799,7 +802,7 @@ SIGN32 vdec_os_api_free_user_id(SIGN32 user_id) kernel_share *p_ks; vdec_os_driver_cb_t *p_cb = vdec_driver_get_cb(); - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { dbg_printf(VDEC_DEBUG_ALL,"vdec_os_api_free_user_id error: not init yet\n"); return VDEC_OS_DRIVER_USER_ID_FAIL; @@ -809,7 +812,7 @@ SIGN32 vdec_os_api_free_user_id(SIGN32 user_id) dbg_printf(VDEC_DEBUG_ALL,"vdec_os_api_free_user_id error: exceeds max user_id\n"); return VDEC_OS_DRIVER_USER_ID_FAIL; } - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; vmeta_private_lock(); @@ -833,7 +836,7 @@ static void *vmeta_thread_monitor(void *_data) pthread_mutex_lock(&pmt); - if(p_cb->kernel_share_va==0 || pmd == NULL) + if(p_cb->kernel_share_va == NULL || pmd == NULL) { dbg_printf(VDEC_DEBUG_ALL,"vdec_os_api_free_user_id error: not init yet\n"); free(pmd); @@ -854,7 +857,7 @@ static void *vmeta_thread_monitor(void *_data) memcpy(p_md,pmd,sizeof(struct monitor_data)); dbg_printf(VDEC_DEBUG_LOCK,"ori 0x%x 0x%x pt=0x%x user_id=0x%x \n",pmd->pt, pmd->user_id, p_md->pt,p_md->user_id); - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; if(pthread_getattr_np(p_md->pt,&pat) != 0) { @@ -885,7 +888,7 @@ static void *vmeta_thread_monitor(void *_data) if(p_cb) { if(p_cb->kernel_share_va) { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; if(p_md->user_id==p_ks->active_user_id) { dbg_printf(VDEC_DEBUG_LOCK,"vmeta thread exit abnormally, instance id=%d lock flag=%d\n",p_md->user_id,p_ks->lock_flag); if( p_ks->lock_flag==VMETA_LOCK_ON ) { @@ -934,13 +937,13 @@ SIGN32 vdec_os_api_register_user_id(SIGN32 user_id) return VDEC_OS_DRIVER_USER_ID_FAIL; } - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { vdec_os_api_get_ks(&p_ks); } else { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; } if(set_bit(VMETA_STATUS_BIT_REGISTED, &(p_ks->user_id_list[user_id].status)) == 1) { @@ -976,14 +979,14 @@ SIGN32 vdec_os_api_unregister_user_id(SIGN32 user_id) return VDEC_OS_DRIVER_USER_ID_FAIL; } - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { dbg_printf(VDEC_DEBUG_ALL,"vdec_os_api_unregister_user_id error: not init yet\n"); return VDEC_OS_DRIVER_USER_ID_FAIL; } else { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; } if(clear_bit(VMETA_STATUS_BIT_REGISTED,&(p_ks->user_id_list[user_id].status)) == 0) { @@ -1019,13 +1022,13 @@ SIGN32 vdec_os_api_get_user_count(void) return -1; } - if(p_cb->kernel_share_va==0) + if(p_cb->kernel_share_va == NULL) { vdec_os_api_get_ks(&p_ks); } else { - p_ks = (kernel_share *)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; } dbg_printf(VDEC_DEBUG_ALL, "get_user_count=%d \n",p_ks->ref_count); @@ -1045,7 +1048,7 @@ SIGN32 vdec_os_api_lock(SIGN32 user_id, long to_ms) dbg_printf(VDEC_DEBUG_ALL,"vdec_os_api_lock error: point is NULL\n"); return LOCK_RET_ERROR_UNKNOWN; } - p_ks = (kernel_share*)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; if(p_ks->active_user_id == user_id) { dbg_printf(VDEC_DEBUG_LOCK,"lock same user=%d, lock_flag=%d,ref_count=%d\n",\ @@ -1083,7 +1086,7 @@ SIGN32 vdec_os_api_unlock(SIGN32 user_id) return LOCK_RET_ERROR_UNKNOWN; } - p_ks = (kernel_share*)p_cb->kernel_share_va; + p_ks = p_cb->kernel_share_va; vmeta_private_lock(); if(p_ks->active_user_id == user_id) { p_ks->active_user_id = MAX_VMETA_INSTANCE; diff --git a/vmeta_lib.h b/vmeta_lib.h index c2367e1..013d881 100644 --- a/vmeta_lib.h +++ b/vmeta_lib.h @@ -183,13 +183,13 @@ typedef struct vdec_os_driver_cb_s { int uiofd; // the uio file descriptor UNSG32 io_mem_phy_addr; // the physical addr of io register base - SIGN32 io_mem_virt_addr; // the reg base addr that maped from kernel + void *io_mem_virt_addr; // the reg base addr that maped from kernel UNSG32 io_mem_size; // the size of io mem area int refcount; // reference count in current process - SIGN32 vdec_obj_va; + void *vdec_obj_va; UNSG32 vdec_obj_size; UNSG32 hw_context_pa; - SIGN32 kernel_share_va; + struct _kernel_share *kernel_share_va; UNSG32 kernel_share_size; int kern_ver; //vmeta kernel version } vdec_os_driver_cb_t; -- cgit