source: svn/newcon3bcm2_21bu/BSEAV/lib/utils/blifo.h @ 46

Last change on this file since 46 was 46, checked in by megakiss, 11 years ago

459Mhz로 OTC 주파수 변경

  • Property svn:executable set to *
File size: 2.2 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2007, Broadcom Corporation
3 *     All Rights Reserved
4 *     Confidential Property of Broadcom Corporation
5 *
6 *  THIS SOFTWARE MAY ONLY BE USED SUBJECT TO AN EXECUTED SOFTWARE LICENSE
7 *  AGREEMENT  BETWEEN THE USER AND BROADCOM.  YOU HAVE NO RIGHT TO USE OR
8 *  EXPLOIT THIS MATERIAL EXCEPT SUBJECT TO THE TERMS OF SUCH AN AGREEMENT.
9 *
10 * $brcm_Workfile: blifo.h $
11 * $brcm_Revision: 2 $
12 * $brcm_Date: 9/5/07 2:50p $
13 *
14 * Module Description:
15 *
16 * Utility to LIFO (e.g. stack)
17 *
18 * Revision History:
19 *
20 * $brcm_Log: /BSEAV/lib/utils/blifo.h $
21 *
22 * 2   9/5/07 2:50p vsilyaev
23 * PR 34419: Fixed warnings
24 *
25 * 1   8/17/07 3:38p vsilyaev
26 * PR 33812: LIFO container
27 *
28 *******************************************************************************/
29#ifndef BLIFO_H__
30#define BLIFO_H__
31
32#define BLIFO_HEAD(name, type) struct name { type *bl_base; type *bl_last; type *bl_write; }
33
34#define BLIFO_INIT(lifo, base, size) do { (lifo)->bl_base=(lifo)->bl_write=(base);\
35        (lifo)->bl_last=(lifo)->bl_base+(size);}while(0)
36
37#define BLIFO_WRITE(lifo) ((lifo)->bl_write)
38#define BLIFO_READ(lifo) ((lifo)->bl_write-1)
39
40#define BLIFO_WRITE_PEEK(lifo) ((lifo)->bl_last - (lifo)->bl_write)
41#define BLIFO_READ_PEEK(lifo) ((lifo)->bl_write - (lifo)->bl_base)
42#define BLIFO_WRITE_COMMIT(lifo, size) do { \
43        BDBG_ASSERT((size)>0 && BLIFO_WRITE_PEEK(lifo) >= (size));  \
44        (lifo)->bl_write += (size); \
45        } while(0)
46
47#define BLIFO_READ_COMMIT(lifo, size) do { \
48        BDBG_ASSERT((size)>0 && BLIFO_READ_PEEK(lifo) >= (size)); \
49        (lifo)->bl_write -= (size); \
50        } while(0)
51
52#define BLIFO_WRITE_LEFT(lifo)  BLIFO_WRITE_PEEK(lifo)
53
54#define BLIFO_READ_LEFT(lifo)  BLIFO_READ_PEEK(lifo)
55#define BLIFO_VALIDATE(lifo) do { \
56                BDBG_ASSERT((lifo)->bl_write>=(lifo)->bl_base && (lifo)->bl_write<=(lifo)->bl_last); \
57        } while(0)
58
59#define BLIFO_STATUS(DBG, header,lifo)  DBG((header ":(%#lx:%#lx) write (%u/%#lx), read (%u/%#lx)", (unsigned long)(lifo)->bl_base, (unsigned long)(lifo)->bl_last, BLIFO_WRITE_PEEK(lifo), (unsigned long)BLIFO_WRITE(lifo), BLIFO_READ_PEEK(lifo), (unsigned long)BLIFO_READ(lifo)))
60
61
62#endif /* BLIFO_H__ */
Note: See TracBrowser for help on using the repository browser.