173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * dspbridge/src/api/linux/DSPManager.c 373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP-BIOS Bridge driver support functions for TI OMAP processors. 573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Copyright (C) 2007 Texas Instruments, Inc. 773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is free software; you can redistribute it and/or modify it 973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * under the terms of the GNU Lesser General Public License as published 1073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * by the Free Software Foundation version 2.1 of the License. 1173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 1273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This program is distributed .as is. WITHOUT ANY WARRANTY of any kind, 1373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * whether express or implied; without even the implied warranty of 1473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Lesser General Public License for more details. 1673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 1773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 1873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 1973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager.c ======== 2073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Description: 2173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * This is the source for the DSP/BIOS Bridge API manager module. The 2273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * parameters are validated at the API level, but the bulk of the 2373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * work is done at the driver level through the RM MGR module. 2473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 2573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Public Functions: 2673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_EnumNodeInfo 2773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_EnumProcessorInfo 2873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_Open 2973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_Close 3073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_WaitForEvents 3173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 3273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * OEM Functions: 3373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_RegisterObject 3473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSPManager_UnregisterObject 3573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 3673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! Revision History 3773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! ================ 3873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 07-Jul-2003 swa: Validate arguments in RegisterObject and UnregisterObject 3973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 15-Oct-2002 kc: Removed DSPManager_GetPerfData. 4073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 16-Aug-2002 map: Added DSPManager_RegisterObject/UnregisterObject 4173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 29-Nov-2000 rr: Use of DSP_ValidWritePtr. Code review changes incorporated. 4273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 22-Nov-2000 kc: Added DSPManager_GetPerfData(). 4373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 25-Sep-2000 rr: Updated to Version 0.9 4473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 04-Aug-2000 rr: Name changed to DSPManager.c 4573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 20-Jul-2000 rr: Updated to Version 0.8 4673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 27-Jun-2000 rr: Modified to call into the Class driver. 4773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *! 12-Apr-2000 ww: Created based on DirectDSP API specification, Version 0.6. 4873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * 4973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 5073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 5173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- Host OS */ 5273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <host_os.h> 5373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 5473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- DSP/BIOS Bridge */ 5573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <dbdefs.h> 5673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <errbase.h> 5773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 5873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- Trace & Debug */ 5973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <dbg.h> 6073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <dbg_zones.h> 6173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- Others */ 6373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <dsptrap.h> 6473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- This */ 6673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include "_dbdebug.h" 6773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include "_dbpriv.h" 6873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 6973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <DSPManager.h> 7073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 7173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef DEBUG_BRIDGE_PERF 7273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#include <perfutils.h> 7373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 7473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 7573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- Globals */ 7673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinint hMediaFile = -1; /* class driver handle */ 7773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstatic ULONG usage_count; 7873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstatic sem_t semOpenClose; 7973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavinstatic bool bridge_sem_initialized = false; 8073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 8173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* ----------------------------------- Definitions */ 8273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* #define BRIDGE_DRIVER_NAME "/dev/dspbridge"*/ 8373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#define BRIDGE_DRIVER_NAME "/dev/DspBridge" 8473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 8573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 8673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DspManager_Open ======== 8773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 8873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Open handle to the DSP/BIOS Bridge driver 8973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 9073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DspManager_Open(UINT argc, PVOID argp) 9173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 9273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin int status = 0; 9373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 9473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (!bridge_sem_initialized) { 9573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (sem_init(&semOpenClose, 0, 1) == -1) { 9673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_ERROR, 9773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: Failed to Initialize" 9873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin "the bridge semaphore\n"))); 9973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return DSP_EFAIL; 10073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else 10173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin bridge_sem_initialized = true; 10273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 10373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 10473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin sem_wait(&semOpenClose); 10573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (usage_count == 0) { /* try opening handle to Bridge driver */ 10673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = open(BRIDGE_DRIVER_NAME, O_RDWR); 10773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (status >= 0) 10873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin hMediaFile = status; 10973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 11073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 11173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (status >= 0) { 11273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Success in opening handle to Bridge driver */ 11373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin usage_count++; 11473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_SOK; 11573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else 11673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EFAIL; 11773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 11873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 11973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /*printf ("argc = %d, hMediaFile[%x] = %d\n", argc, &hMediaFile, 12073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin hMediaFile); */ 12173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin sem_post(&semOpenClose); 12373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 12573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 12673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 12773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 12873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DspManager_Close ======== 12973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: Close handle to the DSP/BIOS Bridge driver 13073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 13173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DspManager_Close(UINT argc, PVOID argp) 13273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 13373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin int status = 0; 13473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 13573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin sem_wait(&semOpenClose); 13673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 13773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (usage_count == 1) { 13873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = close(hMediaFile); 13973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (status >= 0) 14073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin hMediaFile = -1; 14173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 14273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 14373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (status >= 0) { 14473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Success in opening handle to Bridge driver */ 14573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin usage_count--; 14673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_SOK; 14773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else 14873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EFAIL; 14973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin sem_post(&semOpenClose); 15173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /*printf ("close status = %d, hMediaFile[%x] = %d\n", status, 15373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin &hMediaFile, hMediaFile); */ 15473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 15673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 15773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 15873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 15973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_EnumNodeInfo ======== 16073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 16173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Enumerate and get configuration information about nodes configured 16273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * in the node database. 16373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 16473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_EnumNodeInfo(UINT uNode, OUT struct DSP_NDBPROPS *pNDBProps, 16573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT uNDBPropsSize, OUT UINT *puNumNodes) 16673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 16773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 16873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 16973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 17173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_EnumNodeInfo\r\n"))); 17273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (!DSP_ValidWritePtr(pNDBProps, sizeof(struct DSP_NDBPROPS)) && 17473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin !DSP_ValidWritePtr(puNumNodes, sizeof(UINT))) { 17573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 17673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (uNDBPropsSize >= sizeof(struct DSP_NDBPROPS)) { 17773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Set up the structure */ 17873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 17973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMNODE_INFO.uNode = uNode; 18073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMNODE_INFO.pNDBProps = pNDBProps; 18173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMNODE_INFO.uNDBPropsSize = 18273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin uNDBPropsSize; 18373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMNODE_INFO.puNumNodes = 18473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin puNumNodes; 18573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, 18673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin CMD_MGR_ENUMNODE_INFO_OFFSET); 18773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else { 18873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_ESIZE; 18973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_ERROR, 19073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: pNDBProps is too Small \r\n"))); 19173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 19273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else { 19373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Invalid pointer */ 19473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EPOINTER; 19573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_ERROR, 19673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: pNDBProps is Invalid \r\n"))); 19773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 19873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 19973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 20073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 20173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 20273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 20373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_EnumProcessorInfo ======== 20473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 20573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Enumerate and get configuration information about available 20673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * DSP processors. 20773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 20873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_EnumProcessorInfo(UINT uProcessor, 20973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin OUT struct DSP_PROCESSORINFO *pProcessorInfo, 21073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT uProcessorInfoSize, OUT UINT *puNumProcs) 21173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 21273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 21373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 21473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 21573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 21673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_EnumProcessorInfo\r\n"))); 21773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 21873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (!DSP_ValidWritePtr(pProcessorInfo, sizeof(struct DSP_PROCESSORINFO)) 21973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin && !DSP_ValidWritePtr(puNumProcs, sizeof(UINT))) { 22073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 22173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (uProcessorInfoSize >= sizeof(struct DSP_PROCESSORINFO)) { 22273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 22373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMPROC_INFO.uProcessor = 22473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin uProcessor; 22573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMPROC_INFO.pProcessorInfo = 22673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin pProcessorInfo; 22773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMPROC_INFO.uProcessorInfoSize = 22873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin uProcessorInfoSize; 22973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_ENUMPROC_INFO.puNumProcs = 23073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin puNumProcs; 23173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 23273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, 23373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin CMD_MGR_ENUMPROC_INFO_OFFSET); 23473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else { 23573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_ESIZE; 23673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_ERROR, 23773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: uProcessorInfoSize is too Small \r\n"))); 23873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 23973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else { 24073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Invalid pointer */ 24173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EPOINTER; 24273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_ERROR, 24373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: pProcessorInfo is Invalid \r\n"))); 24473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 24573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 24773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 24873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 24973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 25073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_WaitForEvents ======== 25173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 25273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Block on Bridge event(s) 25373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 25473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_WaitForEvents(struct DSP_NOTIFICATION **aNotifications, 25573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin UINT uCount, OUT UINT *puIndex, UINT uTimeout) 25673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 25773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 25873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 25973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 26073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 26173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_WaitForEvents\r\n"))); 26273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 26373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if ((aNotifications) && (puIndex)) { 26473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 26573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (uCount) { 26673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Set up the structure */ 26773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 26873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_WAIT.aNotifications = 26973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin aNotifications; 27073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_WAIT.uCount = uCount; 27173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_WAIT.puIndex = puIndex; 27273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_WAIT.uTimeout = uTimeout; 27373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 27473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, CMD_MGR_WAIT_OFFSET); 27573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else 27673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* nStreams == 0 */ 27773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin *puIndex = (UINT) -1; 27873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 27973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } else 28073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Invalid pointer */ 28173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EPOINTER; 28273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 28373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 28473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 28573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 28673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 28773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 28873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_RegisterObject ======== 28973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 29073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Register object with DCD module 29173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 29273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_RegisterObject(IN struct DSP_UUID *pUuid, 29373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin IN DSP_DCDOBJTYPE objType, IN CHAR *pszPathName) 29473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 29573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 29673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 29773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef DEBUG_BRIDGE_PERF 29873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timeval tv_beg; 29973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timeval tv_end; 30073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timezone tz; 30173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin int timeRetVal = 0; 30273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 30373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin timeRetVal = getTimeStamp(&tv_beg); 30473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 30573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 30673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 30773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_RegisterObject\r\n"))); 30873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 30973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if ((pUuid == NULL) || (objType > DSP_DCDDELETELIBTYPE) || 31073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (pszPathName == NULL)) { 31173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EINVALIDARG; 31273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 31373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 31473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 31573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 31673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_REGISTEROBJECT.pUuid = pUuid; 31773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_REGISTEROBJECT.objType = objType; 31873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_REGISTEROBJECT.pszPathName = pszPathName; 31973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, 32073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin CMD_MGR_REGISTEROBJECT_OFFSET); 32173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 32273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef DEBUG_BRIDGE_PERF 32373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin timeRetVal = getTimeStamp(&tv_end); 32473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin PrintStatistics(&tv_beg, &tv_end, "DSPManager_RegisterObject", 0); 32573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 32673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 32773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 32873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 32973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 33073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 33173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_UnregisterObject ======== 33273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 33373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Unregister object with DCD module 33473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 33573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_UnregisterObject(IN struct DSP_UUID *pUuid, 33673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin IN DSP_DCDOBJTYPE objType) 33773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 33873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 33973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 34073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef DEBUG_BRIDGE_PERF 34173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timeval tv_beg; 34273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timeval tv_end; 34373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin struct timezone tz; 34473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin int timeRetVal = 0; 34573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 34673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin timeRetVal = getTimeStamp(&tv_beg); 34773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 34873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 34973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 35073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_RegisterObject\r\n"))); 35173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 35273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if ((pUuid == NULL) || (objType > DSP_DCDDELETELIBTYPE)) 35373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EINVALIDARG; 35473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 35573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 35673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 35773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 35873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_UNREGISTEROBJECT.pUuid = pUuid; 35973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_MGR_UNREGISTEROBJECT.objType = objType; 36073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, 36173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin CMD_MGR_UNREGISTEROBJECT_OFFSET); 36273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 36373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifdef DEBUG_BRIDGE_PERF 36473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin timeRetVal = getTimeStamp(&tv_end); 36573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin PrintStatistics(&tv_beg, &tv_end, "DSPManager_UnregisterObject", 0); 36673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 36773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 36873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 36973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 37073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 37173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 37273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#ifndef RES_CLEANUP_DISABLE 37373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin/* 37473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * ======== DSPManager_GetProcResourceInfo ======== 37573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Purpose: 37673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin * Get GPP process resource info 37773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin */ 37873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz ZavinDBAPI DSPManager_GetProcResourceInfo(UINT *pBuf, UINT *pSize) 37973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin{ 38073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DSP_STATUS status = DSP_SOK; 38173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin Trapped_Args tempStruct; 38273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin DEBUGMSG(DSPAPI_ZONE_FUNCTION, 38373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin (TEXT("MGR: DSPManager_RegisterObject\r\n"))); 38473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 38573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (pBuf == NULL) 38673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSP_EINVALIDARG; 38773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 38873b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin if (DSP_SUCCEEDED(status)) { 38973b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin /* Call DSP Trap */ 39073b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin tempStruct.ARGS_PROC_GETTRACE.pBuf = (BYTE *)pBuf; 39173b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin status = DSPTRAP_Trap(&tempStruct, CMD_MGR_RESOUCES_OFFSET); 39273b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin } 39373b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 39473b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin return status; 39573b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin} 39673b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin#endif 39773b11d6e96b6d49896738a1a1c87b295c1b96be2Rebecca Schultz Zavin 398