41ca7cebaaa9a159f270b9823fafc1b4d586d1d7
[15.05/openwrt.git] / target / linux / generic / files / crypto / ocf / kirkwood / mvHal / common / mvStack.c
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  */
43 void*   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  */
70 MV_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 */
85 void    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 }