FreeCalypso > hg > freecalypso-sw
diff gsm-fw/g23m-aci/gdd_dio/gdd_sys.c @ 775:eedbf248bac0
gsm-fw/g23m-aci subtree: initial import from LoCosto source
author | Michael Spacefalcon <msokolov@ivan.Harhan.ORG> |
---|---|
date | Sun, 12 Oct 2014 01:45:14 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gsm-fw/g23m-aci/gdd_dio/gdd_sys.c Sun Oct 12 01:45:14 2014 +0000 @@ -0,0 +1,120 @@ +/* ++----------------------------------------------------------------------------- +| Project : +| Modul : ++----------------------------------------------------------------------------- +| Copyright 2004 Texas Instruments Berlin, AG +| All rights reserved. +| +| This file is confidential and a trade secret of Texas +| Instruments Berlin, AG +| The receipt of or possession of this file does not convey +| any rights to reproduce or disclose its contents or to +| manufacture, use, or sell anything it may describe, in +| whole, or in part, without the specific written consent of +| Texas Instruments Berlin, AG. ++----------------------------------------------------------------------------- +| Purpose : Implementation of the GDD system interface ++----------------------------------------------------------------------------- +*/ + +#define GDD_SYS_C + +/*==== INCLUDES =============================================================*/ + +#include <string.h> +#include <stdlib.h> +#include <stddef.h> +#include "typedefs.h" +#include "pcm.h" +#include "vsi.h" +#include "custom.h" +#include "gsm.h" + +#include "gdd_dio.h" + +#include "gdd_sys.h" + +/*==== DEFINITIONS===========================================================*/ + +#ifdef GDD_DIO_USE_EXTERNAL_MEM_POOL +#define EXT_ALLOC(S) (void*)vsi_m_new(S,ExtGroupHandle FILE_LINE_MACRO) +#define EXT_FREE(P) vsi_m_free((T_VOID_STRUCT **)&P FILE_LINE_MACRO) + +/* Handle to external memory pool dediated to GDD_SYS */ +T_HANDLE ExtGroupHandle = 3; + +#endif /* GDD_DIO_USE_EXTERNAL_MEM_POOL */ + + +/*==== TYPES ================================================================*/ + +/*==== PROTOTYPES ===========================================================*/ + +/*==== GLOBAL VARS ==========================================================*/ + +/*==== LOCAL FUNCTIONS=======================================================*/ + +/*==== EXPORTED FUNCTIONS====================================================*/ + +void * gdd_sys_mem_malloc(int size) +{ + void * p; + + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_mem_malloc(size=%d)", size); + +#ifdef GDD_DIO_USE_EXTERNAL_MEM_POOL + p = EXT_ALLOC(size); +#else /* GDD_DIO_USE_EXTERNAL_MEM_POOL */ + p = M_ALLOC(size); +#endif /* GDD_DIO_USE_EXTERNAL_MEM_POOL */ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] allocated buffer: 0x%4x", p); + + return p; +} + +void gdd_sys_mem_free(void * p) +{ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_mem_free(p=0x%4x)", p); + +#ifdef GDD_DIO_USE_EXTERNAL_MEM_POOL + EXT_FREE(p); +#else /* GDD_DIO_USE_EXTERNAL_MEM_POOL */ + M_FREE(p); +#endif /* GDD_DIO_USE_EXTERNAL_MEM_POOL */ +} + +T_GDD_SEM gdd_sys_sem_open(char * name, unsigned short count) +{ + TRACE_USER_CLASS_P2(TC_SYS_INTERFACE, "[GDD] gdd_sys_sem_open(name=%s, count=%d)", name, count); + + return vsi_s_open(VSI_CALLER name, count); +} + +int gdd_sys_sem_close(T_GDD_SEM sem) +{ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_sem_close(sem=%d)", sem); + + return vsi_s_close(VSI_CALLER sem); +} + +int gdd_sys_sem_down(T_GDD_SEM sem) +{ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_sem_down(sem=%d)", sem); + + return vsi_s_get(VSI_CALLER sem); +} + +int gdd_sys_sem_up(T_GDD_SEM sem) +{ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_sem_up(sem=%d)", sem); + + return vsi_s_release(VSI_CALLER sem); +} + +int gdd_sys_sem_status(T_GDD_SEM sem, /*out*/ unsigned short * count) +{ + TRACE_USER_CLASS_P1(TC_SYS_INTERFACE, "[GDD] gdd_sys_sem_status(sem=%d)", sem); + + return vsi_s_status(VSI_CALLER sem, count); +}