source: svn/trunk/newcon3bcm2_21bu/magnum/basemodules/dbg/bdbg_fifo.h

Last change on this file was 2, checked in by jglee, 11 years ago

first commit

  • Property svn:executable set to *
File size: 2.6 KB
Line 
1/***************************************************************************
2 *     Copyright (c) 2003-2011, 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: bdbg_fifo.h $
11 * $brcm_Revision: Hydra_Software_Devel/2 $
12 * $brcm_Date: 6/6/11 3:27p $
13 *
14 * Module Description:
15 *
16 * Revision History:
17 *
18 * $brcm_Log: /magnum/basemodules/dbg/bdbg_fifo.h $
19 *
20 * Hydra_Software_Devel/2   6/6/11 3:27p vsilyaev
21 * SW7405-4477: Routed all debug output through buffer and use external
22 * application to extract and print debug output
23 *
24 * Hydra_Software_Devel/1   4/4/11 6:09p vsilyaev
25 * SW7405-5221: Implementation of lock-free multi-writer/multi-reader FIFO
26 *
27 ***************************************************************************/
28
29#ifndef BDBG_FIFO_H
30#define BDBG_FIFO_H
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36typedef struct BDBG_P_Atomic {
37        volatile long atomic;
38} BDBG_P_Atomic;
39
40typedef struct BDBG_Fifo_Token BDBG_Fifo_Token;
41
42struct BDBG_Fifo_Token {
43    BDBG_P_Atomic *marker;
44};
45
46typedef struct BDBG_Fifo *BDBG_Fifo_Handle;
47typedef const struct BDBG_Fifo *BDBG_Fifo_CHandle;
48typedef struct BDBG_FifoReader *BDBG_FifoReader_Handle;
49
50typedef struct BDBG_Fifo_CreateSettings {
51    size_t elementSize; /* size of the single element, mandatory */
52    unsigned nelements; /* [optional] number of elements */
53    size_t bufferSize; /* [optional] size of the preallocated buffer */
54    void *buffer;       /* [optional] pointer to preallocated buffer */
55} BDBG_Fifo_CreateSettings;
56
57
58
59#define BERR_FIFO_NO_DATA   17
60#define BERR_FIFO_BUSY      18
61#define BERR_FIFO_OVERFLOW  19
62
63
64void BDBG_Fifo_GetDefaultCreateSettings(BDBG_Fifo_CreateSettings *createSettings);
65BERR_Code BDBG_Fifo_Create(BDBG_Fifo_Handle *pFifo, const BDBG_Fifo_CreateSettings *createSettings);
66void BDBG_Fifo_Destroy(BDBG_Fifo_Handle fifo);
67void *BDBG_Fifo_GetBuffer(BDBG_Fifo_Handle fifo, BDBG_Fifo_Token *token);
68void BDBG_Fifo_CommitBuffer(const BDBG_Fifo_Token *token);
69BERR_Code BDBG_FifoReader_Create(BDBG_FifoReader_Handle *pReader, BDBG_Fifo_Handle fifo);
70void BDBG_FifoReader_Destroy(BDBG_FifoReader_Handle fifo);
71BERR_Code BDBG_FifoReader_Read(BDBG_FifoReader_Handle fifo, void *buffer, size_t buffer_size);
72BERR_Code BDBG_FifoReader_Resync(BDBG_FifoReader_Handle fifo);
73
74#ifdef __cplusplus
75}
76#endif
77
78#endif  /* BDBG_FIFO_H */
Note: See TracBrowser for help on using the repository browser.