• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /netgear-R7800-V1.0.2.28/target/linux/generic/files/crypto/ocf/kirkwood/mvHal/common/
1/*******************************************************************************
2*                   Copyright 2003, Marvell Semiconductor Israel LTD.          *
3* THIS CODE CONTAINS CONFIDENTIAL INFORMATION OF MARVELL.                      *
4* NO RIGHTS ARE GRANTED HEREIN UNDER ANY PATENT, MASK WORK RIGHT OR COPYRIGHT  *
5* OF MARVELL OR ANY THIRD PARTY. MARVELL RESERVES THE RIGHT AT ITS SOLE        *
6* DISCRETION TO REQUEST THAT THIS CODE BE IMMEDIATELY RETURNED TO MARVELL.     *
7* THIS CODE IS PROVIDED "AS IS". MARVELL MAKES NO WARRANTIES, EXPRESSED,       *
8* IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY, COMPLETENESS OR PERFORMANCE.   *
9*                                                                              *
10* MARVELL COMPRISES MARVELL TECHNOLOGY GROUP LTD. (MTGL) AND ITS SUBSIDIARIES, *
11* MARVELL INTERNATIONAL LTD. (MIL), MARVELL TECHNOLOGY, INC. (MTI), MARVELL    *
12* SEMICONDUCTOR, INC. (MSI), MARVELL ASIA PTE LTD. (MAPL), MARVELL JAPAN K.K.  *
13* (MJKK), MARVELL SEMICONDUCTOR ISRAEL LTD (MSIL).                             *
14********************************************************************************
15* mvQueue.c
16*
17* FILENAME:    $Workfile: mvStack.c $
18* REVISION:    $Revision: 1.1 $
19* LAST UPDATE: $Modtime:  $
20*
21* DESCRIPTION:
22*     This file implements simple Stack LIFO functionality.
23*******************************************************************************/
24
25/* includes */
26#include "mvOs.h"
27#include "mvTypes.h"
28#include "mvDebug.h"
29#include "mvStack.h"
30
31/* defines  */
32
33
34/* Public functions */
35
36
37/* Purpose: Create new stack
38 * Inputs:
39 *	- MV_U32	noOfElements	- maximum number of elements in the stack.
40 *                              Each element 4 bytes size
41 * Return: void* - pointer to created stack.
42 */
43void*   mvStackCreate(int numOfElements)
44{
45	MV_STACK*   pStack;
46    MV_U32*     pStackElements;
47
48    pStack = (MV_STACK*)mvOsMalloc(sizeof(MV_STACK));
49    pStackElements = (MV_U32*)mvOsMalloc(numOfElements*sizeof(MV_U32));
50    if( (pStack == NULL) || (pStackElements == NULL) )
51    {
52	    mvOsPrintf("mvStack: Can't create new stack\n");
53        return NULL;
54    }
55    memset(pStackElements, 0, numOfElements*sizeof(MV_U32));
56    pStack->numOfElements = numOfElements;
57    pStack->stackIdx = 0;
58    pStack->stackElements = pStackElements;
59
60	return pStack;
61}
62
63/* Purpose: Delete existing stack
64 * Inputs:
65 *	- void* 	stackHndl 	- Stack handle as returned by "mvStackCreate()" function
66 *
67 * Return: MV_STATUS  	MV_NOT_FOUND - Failure. StackHandle is not valid.
68 *						MV_OK        - Success.
69 */
70MV_STATUS   mvStackDelete(void* stackHndl)
71{
72	MV_STACK*   pStack = (MV_STACK*)stackHndl;
73
74	if( (pStack == NULL) || (pStack->stackElements == NULL) )
75		return MV_NOT_FOUND;
76
77    mvOsFree(pStack->stackElements);
78    mvOsFree(pStack);
79
80    return MV_OK;
81}
82
83
84/* PrintOut status of the stack */
85void    mvStackStatus(void* stackHndl, MV_BOOL isPrintElements)
86{
87	int			i;
88    MV_STACK*   pStack = (MV_STACK*)stackHndl;
89
90    mvOsPrintf("StackHandle=%p, pElements=%p, numElements=%d, stackIdx=%d\n",
91                stackHndl, pStack->stackElements, pStack->numOfElements,
92                pStack->stackIdx);
93    if(isPrintElements == MV_TRUE)
94    {
95        for(i=0; i<pStack->stackIdx; i++)
96        {
97            mvOsPrintf("%3d. Value=0x%x\n", i, pStack->stackElements[i]);
98        }
99    }
100}
101