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