* [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c
@ 2010-01-23 3:23 Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
0 siblings, 2 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-23 3:23 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Nishanth Menon,
Andy Shevchenko
From: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
* Remove LST_Init() and LST_Exit() calls because they are doing nothing except
tracing, Thus, remove tracing as well.
* Remove DBC_* calls. It's internal kernel business whether to have those
assertions.
* Move methods from list.c as inline functions to the list.h.
* Switch to list_head structure instead of LST_ELEM:
- define LST_ELEM as list_head via macro
- substitute LST_ELEM by list_head
- remove redudant code that uses head->self pointer
* Remove extra local variables.
* Use native list methods where it's possible inside the list.h.
Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
---
arch/arm/plat-omap/include/dspbridge/list.h | 128 ++++++++------
drivers/dsp/bridge/Makefile | 2 +-
drivers/dsp/bridge/services/list.c | 246 ---------------------------
drivers/dsp/bridge/services/mem.c | 2 -
drivers/dsp/bridge/services/services.c | 9 +-
5 files changed, 78 insertions(+), 309 deletions(-)
delete mode 100644 drivers/dsp/bridge/services/list.c
diff --git a/arch/arm/plat-omap/include/dspbridge/list.h b/arch/arm/plat-omap/include/dspbridge/list.h
index 63412ab..10b3ab0 100644
--- a/arch/arm/plat-omap/include/dspbridge/list.h
+++ b/arch/arm/plat-omap/include/dspbridge/list.h
@@ -22,17 +22,16 @@
#include <dspbridge/host_os.h>
-#define LST_IsEmpty(l) (((l)->head.next == &(l)->head))
+/* MEM_Calloc(), MEM_NONPAGED, MEM_Free() */
+#include <dspbridge/mem.h>
+#include <linux/list.h>
- struct LST_ELEM {
- struct LST_ELEM *next;
- struct LST_ELEM *prev;
- struct LST_ELEM *self;
- } ;
+#define LST_ELEM list_head
+#define LST_IsEmpty(l) list_empty(&(l)->head)
- struct LST_LIST {
- struct LST_ELEM head;
- } ;
+struct LST_LIST {
+ struct list_head head;
+};
/*
* ======== LST_Create ========
@@ -56,7 +55,17 @@
* "empty" element, because its "next" and "prev" pointers point at
* the same location (the element itself).
*/
- extern struct LST_LIST *LST_Create(void);
+static inline struct LST_LIST *LST_Create(void)
+{
+ struct LST_LIST *pList;
+
+ pList = (struct LST_LIST *) MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
+ if (pList != NULL)
+ INIT_LIST_HEAD(&pList->head);
+
+ return pList;
+}
/*
* ======== LST_Delete ========
@@ -78,21 +87,11 @@
* chain of list elements. Calling this function on a non-empty list
* will cause a memory leak.
*/
- extern void LST_Delete(IN struct LST_LIST *pList);
-
-/*
- * ======== LST_Exit ========
- * Purpose:
- * Discontinue usage of module; free resources when reference count
- * reaches 0.
- * Parameters:
- * Returns:
- * Requires:
- * LST initialized.
- * Ensures:
- * Resources used by module are freed when cRef reaches zero.
- */
- extern void LST_Exit(void);
+static inline void LST_Delete(struct LST_LIST *pList)
+{
+ if (pList != NULL)
+ MEM_Free(pList);
+}
/*
* ======== LST_First ========
@@ -108,7 +107,12 @@
* - pList != NULL.
* Ensures:
*/
- extern struct LST_ELEM *LST_First(IN struct LST_LIST *pList);
+static inline struct list_head *LST_First(struct LST_LIST *pList)
+{
+ if (pList && !list_empty(&pList->head))
+ return pList->head.next;
+ return NULL;
+}
/*
* ======== LST_GetHead ========
@@ -130,7 +134,6 @@
* Pointer to element that was at the head of the list (success)
* NULL No elements in list
* Requires:
- * - head.self must be correctly set to &head.
* - LST initialized.
* - pList != NULL.
* Ensures:
@@ -139,20 +142,19 @@
* the head of the list, and the head of the list points backward (its
* "prev" pointer) to the tail of the list, this list is circular.
*/
- extern struct LST_ELEM *LST_GetHead(IN struct LST_LIST *pList);
+static inline struct list_head *LST_GetHead(struct LST_LIST *pList)
+{
+ struct list_head *pElem;
-/*
- * ======== LST_Init ========
- * Purpose:
- * Initializes private state of LST module.
- * Parameters:
- * Returns:
- * TRUE if initialized; FALSE otherwise.
- * Requires:
- * Ensures:
- * LST initialized.
- */
- extern bool LST_Init(void);
+ if (!pList || list_empty(&pList->head))
+ return NULL;
+
+ pElem = pList->head.next;
+ pList->head.next = pElem->next;
+ pElem->next->prev = &pList->head;
+
+ return pElem;
+}
/*
* ======== LST_InitElem ========
@@ -170,7 +172,13 @@
* of a list chain -- that would break the chain.
*
*/
- extern void LST_InitElem(IN struct LST_ELEM *pListElem);
+static inline void LST_InitElem(struct list_head *pElem)
+{
+ if (pElem) {
+ pElem->next = NULL;
+ pElem->prev = NULL;
+ }
+}
/*
* ======== LST_InsertBefore ========
@@ -188,9 +196,13 @@
* - pElemExisting != NULL.
* Ensures:
*/
- extern void LST_InsertBefore(IN struct LST_LIST *pList,
- IN struct LST_ELEM *pElem,
- IN struct LST_ELEM *pElemExisting);
+static inline void LST_InsertBefore(struct LST_LIST *pList,
+ struct list_head *pElem,
+ struct list_head *pElemExisting)
+{
+ if (pList && pElem && pElemExisting)
+ list_add_tail(pElem, pElemExisting);
+}
/*
* ======== LST_Next ========
@@ -208,8 +220,14 @@
* - pCurElem != NULL.
* Ensures:
*/
- extern struct LST_ELEM *LST_Next(IN struct LST_LIST *pList,
- IN struct LST_ELEM *pCurElem);
+static inline struct list_head *LST_Next(struct LST_LIST *pList,
+ struct list_head *pCurElem)
+{
+ if (pList && !list_empty(&pList->head) && pCurElem &&
+ (pCurElem->next != &pList->head))
+ return pCurElem->next;
+ return NULL;
+}
/*
* ======== LST_PutTail ========
@@ -232,18 +250,18 @@
* Void
* Requires:
* *pElem and *pList must both exist.
- * pElem->self = pElem before pElem is passed to this function.
* LST initialized.
* Ensures:
* Notes:
* Because the tail is always "just before" the head of the list (the
* tail's "next" pointer points at the head of the list, and the head's
* "prev" pointer points at the tail of the list), the list is circular.
- * Warning: if pElem->self is not set beforehand, LST_GetHead() will
- * return an erroneous pointer when it is called for this element.
*/
- extern void LST_PutTail(IN struct LST_LIST *pList,
- IN struct LST_ELEM *pListElem);
+static inline void LST_PutTail(struct LST_LIST *pList, struct list_head *pElem)
+{
+ if (pList && pElem)
+ list_add_tail(pElem, &pList->head);
+}
/*
* ======== LST_RemoveElem ========
@@ -260,7 +278,11 @@
* - pCurElem != NULL.
* Ensures:
*/
-extern void LST_RemoveElem(IN struct LST_LIST *pList,
- IN struct LST_ELEM *pCurElem);
+static inline void LST_RemoveElem(struct LST_LIST *pList,
+ struct list_head *pCurElem)
+{
+ if (pList && !list_empty(&pList->head) && pCurElem)
+ list_del_init(pCurElem);
+}
#endif /* LIST_ */
diff --git a/drivers/dsp/bridge/Makefile b/drivers/dsp/bridge/Makefile
index 0fa9245..8aeb6a5 100644
--- a/drivers/dsp/bridge/Makefile
+++ b/drivers/dsp/bridge/Makefile
@@ -1,7 +1,7 @@
obj-$(CONFIG_MPU_BRIDGE) += bridgedriver.o
libgen = gen/gb.o gen/gt.o gen/gs.o gen/gh.o gen/_gt_para.o gen/uuidutil.o
-libservices = services/mem.o services/list.o services/sync.o \
+libservices = services/mem.o services/sync.o \
services/clk.o services/cfg.o services/reg.o \
services/regsup.o services/ntfy.o \
services/dbg.o services/services.o
diff --git a/drivers/dsp/bridge/services/list.c b/drivers/dsp/bridge/services/list.c
deleted file mode 100644
index f13ffc3..0000000
--- a/drivers/dsp/bridge/services/list.c
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- * list.c
- *
- * DSP-BIOS Bridge driver support functions for TI OMAP processors.
- *
- * Copyright (C) 2005-2006 Texas Instruments, Inc.
- *
- * This package is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
- * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
- * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
- */
-
-/* ----------------------------------- DSP/BIOS Bridge */
-#include <dspbridge/std.h>
-#include <dspbridge/dbdefs.h>
-
-/* ----------------------------------- Trace & Debug */
-#include <dspbridge/dbc.h>
-#include <dspbridge/gt.h>
-
-/* ----------------------------------- OS Adaptation Layer */
-#include <dspbridge/mem.h>
-
-/* ----------------------------------- This */
-#include <dspbridge/list.h>
-
-/* ----------------------------------- Globals */
-#if GT_TRACE
-static struct GT_Mask LST_debugMask = { NULL, NULL }; /* GT trace var. */
-#endif
-
-/*
- * ======== LST_Create ========
- * Purpose:
- * Allocates and initializes a circular list.
- */
-struct LST_LIST *LST_Create(void)
-{
- struct LST_LIST *pList;
-
- GT_0trace(LST_debugMask, GT_ENTER, "LST_Create: entered\n");
-
- pList = (struct LST_LIST *) MEM_Calloc(sizeof(struct LST_LIST),
- MEM_NONPAGED);
- if (pList != NULL) {
- pList->head.next = &pList->head;
- pList->head.prev = &pList->head;
- pList->head.self = NULL;
- }
-
- return pList;
-}
-
-/*
- * ======== LST_Delete ========
- * Purpose:
- * Removes a list by freeing its control structure's memory space.
- */
-void LST_Delete(struct LST_LIST *pList)
-{
- GT_1trace(LST_debugMask, GT_ENTER, "LST_Delete: pList 0x%x\n", pList);
-
- if (pList != NULL)
- MEM_Free(pList);
-}
-
-/*
- * ======== LST_Exit ========
- * Purpose:
- * Discontinue usage of the LST module.
- */
-void LST_Exit(void)
-{
- GT_0trace(LST_debugMask, GT_5CLASS, "LST_Exit\n");
-}
-
-/*
- * ======== LST_First ========
- * Purpose:
- * Returns a pointer to the first element of the list, or NULL if the
- * list is empty.
- */
-struct LST_ELEM *LST_First(struct LST_LIST *pList)
-{
- struct LST_ELEM *pElem = NULL;
-
- GT_1trace(LST_debugMask, GT_ENTER, "LST_First: pList 0x%x\n", pList);
-
- if (pList && !LST_IsEmpty(pList))
- pElem = pList->head.next;
-
- return pElem;
-}
-
-/*
- * ======== LST_GetHead ========
- * Purpose:
- * "Pops" the head off the list and returns a pointer to it.
- */
-struct LST_ELEM *LST_GetHead(struct LST_LIST *pList)
-{
- struct LST_ELEM *pElem;
-
- GT_1trace(LST_debugMask, GT_ENTER, "LST_GetHead: pList 0x%x\n", pList);
-
- if (!pList || LST_IsEmpty(pList))
- return NULL;
-
- /* pElem is always valid because the list cannot be empty
- * at this point */
- pElem = pList->head.next;
- pList->head.next = pElem->next;
- pElem->next->prev = &pList->head;
-
- return pElem->self;
-}
-
-/*
- * ======== LST_Init ========
- * Purpose:
- * Initialize LST module private state.
- */
-bool LST_Init(void)
-{
- GT_create(&LST_debugMask, "LS"); /* LS for LSt module */
-
- GT_0trace(LST_debugMask, GT_5CLASS, "LST_Init\n");
-
- return true;
-}
-
-/*
- * ======== LST_InitElem ========
- * Purpose:
- * Initializes a list element to default (cleared) values
- */
-void LST_InitElem(struct LST_ELEM *pElem)
-{
- DBC_Require(pElem != NULL);
-
- GT_1trace(LST_debugMask, GT_ENTER, "LST_InitElem: pElem 0x%x\n", pElem);
-
- if (pElem) {
- pElem->next = NULL;
- pElem->prev = NULL;
- pElem->self = pElem;
- }
-}
-
-/*
- * ======== LST_InsertBefore ========
- * Purpose:
- * Insert the element before the existing element.
- */
-void LST_InsertBefore(struct LST_LIST *pList, struct LST_ELEM *pElem,
- struct LST_ELEM *pElemExisting)
-{
- GT_3trace(LST_debugMask, GT_ENTER, "LST_InsertBefore: pList 0x%x, "
- "pElem 0x%x pElemExisting 0x%x\n", pList, pElem,
- pElemExisting);
-
- if (!pList || !pElem || !pElemExisting)
- return;
-
- pElemExisting->prev->next = pElem;
- pElem->prev = pElemExisting->prev;
- pElem->next = pElemExisting;
- pElemExisting->prev = pElem;
-}
-
-/*
- * ======== LST_Next ========
- * Purpose:
- * Returns a pointer to the next element of the list, or NULL if the
- * next element is the head of the list or the list is empty.
- */
-struct LST_ELEM *LST_Next(struct LST_LIST *pList, struct LST_ELEM *pCurElem)
-{
- struct LST_ELEM *pNextElem = NULL;
-
- if (!pList || !pCurElem)
- return NULL;
-
- GT_2trace(LST_debugMask, GT_ENTER,
- "LST_Next: pList 0x%x, pCurElem 0x%x\n",
- pList, pCurElem);
-
- if (!LST_IsEmpty(pList)) {
- if (pCurElem->next != &pList->head)
- pNextElem = pCurElem->next;
- }
-
- return pNextElem;
-}
-
-/*
- * ======== LST_PutTail ========
- * Purpose:
- * Adds the specified element to the tail of the list
- */
-void LST_PutTail(struct LST_LIST *pList, struct LST_ELEM *pElem)
-{
- GT_2trace(LST_debugMask, GT_ENTER,
- "LST_PutTail: pList 0x%x, pElem 0x%x\n",
- pList, pElem);
-
- if (!pList || !pElem)
- return;
-
- pElem->prev = pList->head.prev;
- pElem->next = &pList->head;
- pList->head.prev = pElem;
- pElem->prev->next = pElem;
-
- DBC_Ensure(!LST_IsEmpty(pList));
-}
-
-/*
- * ======== LST_RemoveElem ========
- * Purpose:
- * Removes (unlinks) the given element from the list, if the list is not
- * empty. Does not free the list element.
- */
-void LST_RemoveElem(struct LST_LIST *pList, struct LST_ELEM *pCurElem)
-{
- if (!pList || !pCurElem)
- return;
-
- GT_2trace(LST_debugMask, GT_ENTER,
- "LST_RemoveElem: pList 0x%x, pCurElem "
- "0x%x\n", pList, pCurElem);
-
- if (!LST_IsEmpty(pList)) {
- pCurElem->prev->next = pCurElem->next;
- pCurElem->next->prev = pCurElem->prev;
-
- /* set elem fields to NULL to prevent illegal references */
- pCurElem->next = NULL;
- pCurElem->prev = NULL;
- }
-}
-
diff --git a/drivers/dsp/bridge/services/mem.c b/drivers/dsp/bridge/services/mem.c
index 2aff2d2..710ee8a 100644
--- a/drivers/dsp/bridge/services/mem.c
+++ b/drivers/dsp/bridge/services/mem.c
@@ -90,7 +90,6 @@ static inline void MLST_PutTail(struct LST_LIST *pList, struct LST_ELEM *pElem)
pElem->next = &pList->head;
pList->head.prev = pElem;
pElem->prev->next = pElem;
- pElem->self = pElem;
}
static inline void MLST_RemoveElem(struct LST_LIST *pList,
@@ -573,7 +572,6 @@ bool MEM_Init(void)
#ifdef MEM_CHECK
mMan.lst.head.next = &mMan.lst.head;
mMan.lst.head.prev = &mMan.lst.head;
- mMan.lst.head.self = NULL;
spin_lock_init(&mMan.lock);
#endif
diff --git a/drivers/dsp/bridge/services/services.c b/drivers/dsp/bridge/services/services.c
index efedb00..1e01c21 100644
--- a/drivers/dsp/bridge/services/services.c
+++ b/drivers/dsp/bridge/services/services.c
@@ -66,7 +66,6 @@ void SERVICES_Exit(void)
SYNC_Exit();
CLK_Exit();
REG_Exit();
- LST_Exit();
DBG_Exit();
CFG_Exit();
MEM_Exit();
@@ -85,7 +84,7 @@ void SERVICES_Exit(void)
bool SERVICES_Init(void)
{
bool fInit = true;
- bool fCFG, fDBG, fLST, fMEM;
+ bool fCFG, fDBG, fMEM;
bool fREG, fSYNC, fCLK, fNTFY;
DBC_Require(cRefs >= 0);
@@ -103,13 +102,12 @@ bool SERVICES_Init(void)
fREG = REG_Init();
fCFG = CFG_Init();
fDBG = DBG_Init();
- fLST = LST_Init();
fSYNC = SYNC_Init();
fCLK = CLK_Init();
fNTFY = NTFY_Init();
fInit = fCFG && fDBG &&
- fLST && fMEM && fREG && fSYNC && fCLK;
+ fMEM && fREG && fSYNC && fCLK;
if (!fInit) {
if (fNTFY)
@@ -124,9 +122,6 @@ bool SERVICES_Init(void)
if (fREG)
REG_Exit();
- if (fLST)
- LST_Exit();
-
if (fDBG)
DBG_Exit();
--
1.6.2.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely
2010-01-23 3:23 [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
@ 2010-01-23 3:23 ` Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
1 sibling, 2 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-23 3:23 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Nishanth Menon,
Andy Shevchenko
From: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
* Change struct LST_ELEM to struct list_head in whole dsp bridge driver
* Remove useless commentaries
* Minor change in the services/mem.c:
...
struct list_head *last = &mMan.lst.head;
struct list_head *curr = last->next; /* was: mMan.lst.head.next */
...
Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
---
arch/arm/plat-omap/include/dspbridge/_chnl_sm.h | 2 +-
arch/arm/plat-omap/include/dspbridge/list.h | 1 -
drivers/dsp/bridge/pmgr/cmm.c | 51 +++++++++++------------
drivers/dsp/bridge/pmgr/dev.c | 8 ++--
drivers/dsp/bridge/rmgr/drv.c | 14 +++---
drivers/dsp/bridge/rmgr/node.c | 10 ++--
drivers/dsp/bridge/rmgr/proc.c | 2 +-
drivers/dsp/bridge/rmgr/rmm.c | 16 ++++----
drivers/dsp/bridge/services/cfg.c | 2 +-
drivers/dsp/bridge/services/mem.c | 26 ++++++------
drivers/dsp/bridge/services/ntfy.c | 12 +++---
drivers/dsp/bridge/wmd/_msg_sm.h | 4 +-
drivers/dsp/bridge/wmd/chnl_sm.c | 10 ++--
drivers/dsp/bridge/wmd/io_sm.c | 10 ++--
drivers/dsp/bridge/wmd/msg_sm.c | 20 ++++----
15 files changed, 93 insertions(+), 95 deletions(-)
diff --git a/arch/arm/plat-omap/include/dspbridge/_chnl_sm.h b/arch/arm/plat-omap/include/dspbridge/_chnl_sm.h
index eb5adc2..6e812b2 100644
--- a/arch/arm/plat-omap/include/dspbridge/_chnl_sm.h
+++ b/arch/arm/plat-omap/include/dspbridge/_chnl_sm.h
@@ -164,7 +164,7 @@ struct loadMonStruct {
/* I/O Request/completion packet: */
struct CHNL_IRP {
- struct LST_ELEM link; /* Link to next CHIRP in queue. */
+ struct list_head link; /* Link to next CHIRP in queue. */
/* Buffer to be filled/emptied. (User) */
u8 *pHostUserBuf;
/* Buffer to be filled/emptied. (System) */
diff --git a/arch/arm/plat-omap/include/dspbridge/list.h b/arch/arm/plat-omap/include/dspbridge/list.h
index 10b3ab0..2cdc4e4 100644
--- a/arch/arm/plat-omap/include/dspbridge/list.h
+++ b/arch/arm/plat-omap/include/dspbridge/list.h
@@ -26,7 +26,6 @@
#include <dspbridge/mem.h>
#include <linux/list.h>
-#define LST_ELEM list_head
#define LST_IsEmpty(l) list_empty(&(l)->head)
struct LST_LIST {
diff --git a/drivers/dsp/bridge/pmgr/cmm.c b/drivers/dsp/bridge/pmgr/cmm.c
index 556749f..f0efc89 100644
--- a/drivers/dsp/bridge/pmgr/cmm.c
+++ b/drivers/dsp/bridge/pmgr/cmm.c
@@ -136,7 +136,7 @@ static struct CMM_XLATORATTRS CMM_DFLTXLATORATTRS = {
/* SM node representing a block of memory. */
struct CMM_MNODE {
- struct LST_ELEM link; /* must be 1st element */
+ struct list_head link; /* must be 1st element */
u32 dwPA; /* Phys addr */
u32 dwVA; /* Virtual address in device process context */
u32 ulSize; /* SM block size in bytes */
@@ -226,7 +226,7 @@ void *CMM_CallocBuf(struct CMM_OBJECT *hCmmMgr, u32 uSize,
/* put our node on InUse list */
LST_PutTail(pAllocator->pInUseListHead,
- (struct LST_ELEM *)pNode);
+ (struct list_head *)pNode);
pBufPA = (void *)pNode->dwPA; /* physical address */
/* clear mem */
pByte = (u8 *)pNode->dwVA;
@@ -365,8 +365,6 @@ DSP_STATUS CMM_Destroy(struct CMM_OBJECT *hCmmMgr, bool bForce)
if (pCmmMgr->pNodeFreeListHead != NULL) {
/* Free the free nodes */
while (!LST_IsEmpty(pCmmMgr->pNodeFreeListHead)) {
- /* (struct LST_ELEM*) pNode =
- * LST_GetHead(pCmmMgr->pNodeFreeListHead);*/
pNode = (struct CMM_MNODE *)LST_GetHead(pCmmMgr->
pNodeFreeListHead);
MEM_Free(pNode);
@@ -433,7 +431,7 @@ DSP_STATUS CMM_FreeBuf(struct CMM_OBJECT *hCmmMgr, void *pBufPA, u32 ulSegId)
if ((u32)pBufPA == pCurNode->dwPA) {
/* Found it */
LST_RemoveElem(pAllocator->pInUseListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
/* back to freelist */
AddToFreeList(pAllocator, pCurNode);
status = DSP_SOK; /* all right! */
@@ -441,7 +439,8 @@ DSP_STATUS CMM_FreeBuf(struct CMM_OBJECT *hCmmMgr, void *pBufPA, u32 ulSegId)
}
/* next node. */
pCurNode = (struct CMM_MNODE *)LST_Next(pAllocator->
- pInUseListHead, (struct LST_ELEM *)pCurNode);
+ pInUseListHead,
+ (struct list_head *)pCurNode);
}
SYNC_LeaveCS(pCmmMgr->hCmmLock);
}
@@ -527,7 +526,7 @@ DSP_STATUS CMM_GetInfo(struct CMM_OBJECT *hCmmMgr,
/* next node. */
pCurNode = (struct CMM_MNODE *)LST_Next(pAltr->
pInUseListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
}
}
} /* end for */
@@ -663,7 +662,7 @@ DSP_STATUS CMM_RegisterGPPSMSeg(struct CMM_OBJECT *hCmmMgr, u32 dwGPPBasePA,
/* Place node on the SM allocator's free list */
if (pNewNode) {
LST_PutTail(pSMA->pFreeListHead,
- (struct LST_ELEM *)pNewNode);
+ (struct list_head *)pNewNode);
} else {
status = DSP_EMEMORY;
goto func_end;
@@ -757,9 +756,9 @@ static void UnRegisterGPPSMSeg(struct CMM_ALLOCATOR *pSMA)
while (pCurNode) {
pNextNode = (struct CMM_MNODE *)LST_Next(pSMA->
pFreeListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
LST_RemoveElem(pSMA->pFreeListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
MEM_Free((void *) pCurNode);
/* next node. */
pCurNode = pNextNode;
@@ -770,9 +769,9 @@ static void UnRegisterGPPSMSeg(struct CMM_ALLOCATOR *pSMA)
while (pCurNode) {
pNextNode = (struct CMM_MNODE *)LST_Next(pSMA->
pInUseListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
LST_RemoveElem(pSMA->pInUseListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
MEM_Free((void *) pCurNode);
/* next node. */
pCurNode = pNextNode;
@@ -830,15 +829,13 @@ static struct CMM_MNODE *GetNode(struct CMM_OBJECT *pCmmMgr, u32 dwPA,
MEM_PAGED);
} else {
/* surely a valid element */
- /* (struct LST_ELEM*) pNode = LST_GetHead(pCmmMgr->
- * pNodeFreeListHead);*/
pNode = (struct CMM_MNODE *)LST_GetHead(pCmmMgr->
pNodeFreeListHead);
}
if (pNode == NULL) {
GT_0trace(CMM_debugMask, GT_7CLASS, "GetNode: Out Of Memory\n");
} else {
- LST_InitElem((struct LST_ELEM *) pNode); /* set self */
+ LST_InitElem((struct list_head *) pNode); /* set self */
pNode->dwPA = dwPA; /* Physical addr of start of block */
pNode->dwVA = dwVA; /* Virtual " " */
pNode->ulSize = ulSize; /* Size of block */
@@ -855,8 +852,8 @@ static struct CMM_MNODE *GetNode(struct CMM_OBJECT *pCmmMgr, u32 dwPA,
static void DeleteNode(struct CMM_OBJECT *pCmmMgr, struct CMM_MNODE *pNode)
{
DBC_Require(pNode != NULL);
- LST_InitElem((struct LST_ELEM *) pNode); /* init .self ptr */
- LST_PutTail(pCmmMgr->pNodeFreeListHead, (struct LST_ELEM *) pNode);
+ LST_InitElem((struct list_head *) pNode); /* init .self ptr */
+ LST_PutTail(pCmmMgr->pNodeFreeListHead, (struct list_head *) pNode);
}
/*
@@ -874,12 +871,13 @@ static struct CMM_MNODE *GetFreeBlock(struct CMM_ALLOCATOR *pAllocator,
while (pCurNode) {
if (uSize <= (u32) pCurNode->ulSize) {
LST_RemoveElem(pAllocator->pFreeListHead,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pCurNode);
return pCurNode;
}
/* next node. */
pCurNode = (struct CMM_MNODE *)LST_Next(pAllocator->
- pFreeListHead, (struct LST_ELEM *)pCurNode);
+ pFreeListHead,
+ (struct list_head *)pCurNode);
}
}
return NULL;
@@ -914,7 +912,8 @@ static void AddToFreeList(struct CMM_ALLOCATOR *pAllocator,
if ((pNodePrev == NULL) || (pNodeNext == NULL)) {
/* next node. */
pCurNode = (struct CMM_MNODE *)LST_Next(pAllocator->
- pFreeListHead, (struct LST_ELEM *)pCurNode);
+ pFreeListHead,
+ (struct list_head *)pCurNode);
} else {
/* got 'em */
break;
@@ -923,7 +922,7 @@ static void AddToFreeList(struct CMM_ALLOCATOR *pAllocator,
if (pNodePrev != NULL) {
/* combine with previous block */
LST_RemoveElem(pAllocator->pFreeListHead,
- (struct LST_ELEM *)pNodePrev);
+ (struct list_head *)pNodePrev);
/* grow node to hold both */
pNode->ulSize += pNodePrev->ulSize;
pNode->dwPA = pNodePrev->dwPA;
@@ -934,7 +933,7 @@ static void AddToFreeList(struct CMM_ALLOCATOR *pAllocator,
if (pNodeNext != NULL) {
/* combine with next block */
LST_RemoveElem(pAllocator->pFreeListHead,
- (struct LST_ELEM *)pNodeNext);
+ (struct list_head *)pNodeNext);
/* grow da node */
pNode->ulSize += pNodeNext->ulSize;
/* place node on mgr nodeFreeList */
@@ -948,17 +947,17 @@ static void AddToFreeList(struct CMM_ALLOCATOR *pAllocator,
/* next node. */
pCurNode = (struct CMM_MNODE *)LST_Next(pAllocator->
- pFreeListHead, (struct LST_ELEM *)pCurNode);
+ pFreeListHead, (struct list_head *)pCurNode);
}
/* if pCurNode is NULL then add our pNode to the end of the freelist */
if (pCurNode == NULL) {
LST_PutTail(pAllocator->pFreeListHead,
- (struct LST_ELEM *)pNode);
+ (struct list_head *)pNode);
} else {
/* insert our node before the current traversed node */
LST_InsertBefore(pAllocator->pFreeListHead,
- (struct LST_ELEM *)pNode,
- (struct LST_ELEM *)pCurNode);
+ (struct list_head *)pNode,
+ (struct list_head *)pCurNode);
}
}
diff --git a/drivers/dsp/bridge/pmgr/dev.c b/drivers/dsp/bridge/pmgr/dev.c
index 5c5e056..3decf32 100644
--- a/drivers/dsp/bridge/pmgr/dev.c
+++ b/drivers/dsp/bridge/pmgr/dev.c
@@ -65,7 +65,7 @@
/* The WMD device object: */
struct DEV_OBJECT {
/* LST requires "link" to be first field! */
- struct LST_ELEM link; /* Link to next DEV_OBJECT. */
+ struct list_head link; /* Link to next DEV_OBJECT. */
u32 devType; /* Device Type */
u32 dwSignature; /* Used for object validation. */
struct CFG_DEVNODE *hDevNode; /* Platform specific device id */
@@ -948,7 +948,7 @@ DSP_STATUS DEV_NotifyClients(struct DEV_OBJECT *hDevObject, u32 ulStatus)
for (hProcObject = (DSP_HPROCESSOR)LST_First(pDevObject->procList);
hProcObject != NULL;
hProcObject = (DSP_HPROCESSOR)LST_Next(pDevObject->procList,
- (struct LST_ELEM *)hProcObject))
+ (struct list_head *)hProcObject))
PROC_NotifyClients(hProcObject, (u32) ulStatus);
return status;
@@ -1205,7 +1205,7 @@ DSP_STATUS DEV_InsertProcObject(struct DEV_OBJECT *hDevObject,
*pbAlreadyAttached = true;
/* Add DevObject to tail. */
- LST_PutTail(pDevObject->procList, (struct LST_ELEM *)hProcObject);
+ LST_PutTail(pDevObject->procList, (struct list_head *)hProcObject);
GT_1trace(debugMask, GT_ENTER,
"Exiting DEV_InsetProcObject status 0x%x\n", status);
@@ -1236,7 +1236,7 @@ DSP_STATUS DEV_RemoveProcObject(struct DEV_OBJECT *hDevObject,
u32 hProcObject)
{
DSP_STATUS status = DSP_EFAIL;
- struct LST_ELEM *pCurElem;
+ struct list_head *pCurElem;
struct DEV_OBJECT *pDevObject = (struct DEV_OBJECT *)hDevObject;
DBC_Require(IsValidHandle(pDevObject));
diff --git a/drivers/dsp/bridge/rmgr/drv.c b/drivers/dsp/bridge/rmgr/drv.c
index 9b07f25..17f8b1c 100644
--- a/drivers/dsp/bridge/rmgr/drv.c
+++ b/drivers/dsp/bridge/rmgr/drv.c
@@ -61,7 +61,7 @@ struct DRV_OBJECT {
* DRV_ since it is living in this module
*/
struct DRV_EXT {
- struct LST_ELEM link;
+ struct list_head link;
char szString[MAXREGPATHLENGTH];
};
@@ -812,7 +812,7 @@ u32 DRV_GetNextDevObject(u32 hDevObject)
if ((pDrvObject->devList != NULL) &&
!LST_IsEmpty(pDrvObject->devList)) {
dwNextDevObject = (u32)LST_Next(pDrvObject->devList,
- (struct LST_ELEM *)hDevObject);
+ (struct list_head *)hDevObject);
}
}
return dwNextDevObject;
@@ -839,7 +839,7 @@ u32 DRV_GetNextDevExtension(u32 hDevExtension)
!LST_IsEmpty(pDrvObject->devNodeString)) {
dwDevExtension = (u32)LST_Next(pDrvObject->
devNodeString,
- (struct LST_ELEM *)hDevExtension);
+ (struct list_head *)hDevExtension);
}
}
@@ -888,7 +888,7 @@ DSP_STATUS DRV_InsertDevObject(struct DRV_OBJECT *hDRVObject,
"Entering DRV_InsertProcObject hDRVObject "
"0x%x\n, hDevObject 0x%x\n", hDRVObject, hDevObject);
- LST_PutTail(pDRVObject->devList, (struct LST_ELEM *)hDevObject);
+ LST_PutTail(pDRVObject->devList, (struct list_head *)hDevObject);
GT_1trace(curTrace, GT_ENTER,
"Exiting InsertDevObject status 0x%x\n", status);
@@ -909,7 +909,7 @@ DSP_STATUS DRV_RemoveDevObject(struct DRV_OBJECT *hDRVObject,
{
DSP_STATUS status = DSP_EFAIL;
struct DRV_OBJECT *pDRVObject = (struct DRV_OBJECT *)hDRVObject;
- struct LST_ELEM *pCurElem;
+ struct list_head *pCurElem;
DBC_Require(cRefs > 0);
DBC_Require(MEM_IsValidHandle(pDRVObject, SIGNATURE));
@@ -974,7 +974,7 @@ DSP_STATUS DRV_RequestResources(u32 dwContext, u32 *pDevNodeString)
/* Update the Driver Object List */
*pDevNodeString = (u32)pszdevNode->szString;
LST_PutTail(pDRVObject->devNodeString,
- (struct LST_ELEM *)pszdevNode);
+ (struct list_head *)pszdevNode);
} else {
GT_0trace(curTrace, GT_7CLASS,
"Failed to Allocate Memory devNodeString ");
@@ -1048,7 +1048,7 @@ DSP_STATUS DRV_ReleaseResources(u32 dwContext, struct DRV_OBJECT *hDrvObject)
/* Found it */
/* Delete from the Driver object list */
LST_RemoveElem(pDRVObject->devNodeString,
- (struct LST_ELEM *)pszdevNode);
+ (struct list_head *)pszdevNode);
MEM_Free((void *) pszdevNode);
break;
}
diff --git a/drivers/dsp/bridge/rmgr/node.c b/drivers/dsp/bridge/rmgr/node.c
index 51156bd..016c788 100644
--- a/drivers/dsp/bridge/rmgr/node.c
+++ b/drivers/dsp/bridge/rmgr/node.c
@@ -190,7 +190,7 @@ struct STREAM {
* ======== NODE_OBJECT ========
*/
struct NODE_OBJECT {
- struct LST_ELEM listElem;
+ struct list_head listElem;
u32 dwSignature; /* For object validation */
struct NODE_MGR *hNodeMgr; /* The manager of this node */
struct PROC_OBJECT *hProcessor; /* Back pointer to processor */
@@ -665,14 +665,14 @@ func_cont:
if (DSP_SUCCEEDED(status)) {
/* Add the node to the node manager's list of allocated
* nodes. */
- LST_InitElem((struct LST_ELEM *)pNode);
+ LST_InitElem((struct list_head *)pNode);
NODE_SetState(pNode, NODE_ALLOCATED);
status = SYNC_EnterCS(hNodeMgr->hSync);
if (DSP_SUCCEEDED(status)) {
LST_PutTail(hNodeMgr->nodeList,
- (struct LST_ELEM *) pNode);
+ (struct list_head *) pNode);
++(hNodeMgr->uNumNodes);
}
@@ -1632,7 +1632,7 @@ func_cont1:
}
/* Free host side resources even if a failure occurred */
/* Remove node from hNodeMgr->nodeList */
- LST_RemoveElem(hNodeMgr->nodeList, (struct LST_ELEM *) hNode);
+ LST_RemoveElem(hNodeMgr->nodeList, (struct list_head *) hNode);
hNodeMgr->uNumNodes--;
/* Decrement count of nodes created on DSP */
if ((state != NODE_ALLOCATED) || ((state == NODE_ALLOCATED) &&
@@ -1725,7 +1725,7 @@ DSP_STATUS NODE_EnumNodes(struct NODE_MGR *hNodeMgr, IN DSP_HNODE *aNodeTab,
aNodeTab[i] = hNode;
hNode = (struct NODE_OBJECT *)LST_Next
(hNodeMgr->nodeList,
- (struct LST_ELEM *)hNode);
+ (struct list_head *)hNode);
}
*puAllocated = *puNumNodes = hNodeMgr->uNumNodes;
}
diff --git a/drivers/dsp/bridge/rmgr/proc.c b/drivers/dsp/bridge/rmgr/proc.c
index cd32561..491661f 100644
--- a/drivers/dsp/bridge/rmgr/proc.c
+++ b/drivers/dsp/bridge/rmgr/proc.c
@@ -80,7 +80,7 @@ static struct GT_Mask PROC_DebugMask = { NULL, NULL }; /* WCD MGR Mask */
/* The PROC_OBJECT structure. */
struct PROC_OBJECT {
- struct LST_ELEM link; /* Link to next PROC_OBJECT */
+ struct list_head link; /* Link to next PROC_OBJECT */
u32 dwSignature; /* Used for object validation */
struct DEV_OBJECT *hDevObject; /* Device this PROC represents */
u32 hProcess; /* Process owning this Processor */
diff --git a/drivers/dsp/bridge/rmgr/rmm.c b/drivers/dsp/bridge/rmgr/rmm.c
index 43f78f0..acdd124 100644
--- a/drivers/dsp/bridge/rmgr/rmm.c
+++ b/drivers/dsp/bridge/rmgr/rmm.c
@@ -70,7 +70,7 @@ struct RMM_Header {
* Keeps track of memory occupied by overlay section.
*/
struct RMM_OvlySect {
- struct LST_ELEM listElem;
+ struct list_head listElem;
u32 addr; /* Start of memory section */
u32 size; /* Length (target MAUs) of section */
s32 page; /* Memory page */
@@ -147,7 +147,7 @@ DSP_STATUS RMM_alloc(struct RMM_TargetObj *target, u32 segid, u32 size,
}
prevSect = sect;
sect = (struct RMM_OvlySect *)LST_Next(target->ovlyList,
- (struct LST_ELEM *)sect);
+ (struct list_head *)sect);
}
if (DSP_SUCCEEDED(status)) {
/* No overlap - allocate list element for new section. */
@@ -155,19 +155,19 @@ DSP_STATUS RMM_alloc(struct RMM_TargetObj *target, u32 segid, u32 size,
if (newSect == NULL) {
status = DSP_EMEMORY;
} else {
- LST_InitElem((struct LST_ELEM *)newSect);
+ LST_InitElem((struct list_head *)newSect);
newSect->addr = addr;
newSect->size = size;
newSect->page = segid;
if (sect == NULL) {
/* Put new section at the end of the list */
LST_PutTail(target->ovlyList,
- (struct LST_ELEM *)newSect);
+ (struct list_head *)newSect);
} else {
/* Put new section just before sect */
LST_InsertBefore(target->ovlyList,
- (struct LST_ELEM *)newSect,
- (struct LST_ELEM *)sect);
+ (struct list_head *)newSect,
+ (struct list_head *)sect);
}
}
}
@@ -374,12 +374,12 @@ bool RMM_free(struct RMM_TargetObj *target, u32 segid, u32 addr, u32 size,
DBC_Assert(size == sect->size);
/* Remove from list */
LST_RemoveElem(target->ovlyList,
- (struct LST_ELEM *)sect);
+ (struct list_head *)sect);
MEM_Free(sect);
break;
}
sect = (struct RMM_OvlySect *)LST_Next(target->ovlyList,
- (struct LST_ELEM *)sect);
+ (struct list_head *)sect);
}
if (sect == NULL)
retVal = false;
diff --git a/drivers/dsp/bridge/services/cfg.c b/drivers/dsp/bridge/services/cfg.c
index 7df98d1..ceddfe4 100644
--- a/drivers/dsp/bridge/services/cfg.c
+++ b/drivers/dsp/bridge/services/cfg.c
@@ -33,7 +33,7 @@
#include <dspbridge/list.h>
struct DRV_EXT {
- struct LST_ELEM link;
+ struct list_head link;
char szString[MAXREGPATHLENGTH];
};
diff --git a/drivers/dsp/bridge/services/mem.c b/drivers/dsp/bridge/services/mem.c
index 710ee8a..4d01917 100644
--- a/drivers/dsp/bridge/services/mem.c
+++ b/drivers/dsp/bridge/services/mem.c
@@ -60,7 +60,7 @@ static struct extPhysMemPool extMemPool;
/* Information about each element allocated on heap */
struct memInfo {
- struct LST_ELEM link; /* Must be first */
+ struct list_head link; /* Must be first */
size_t size;
void *caller;
u32 dwSignature; /* Should be last */
@@ -84,7 +84,7 @@ static struct memMan mMan;
* These functions are similar to LST_PutTail and LST_RemoveElem and are
* duplicated here to make MEM independent of LST
*/
-static inline void MLST_PutTail(struct LST_LIST *pList, struct LST_ELEM *pElem)
+static inline void MLST_PutTail(struct LST_LIST *pList, struct list_head *pElem)
{
pElem->prev = pList->head.prev;
pElem->next = &pList->head;
@@ -93,7 +93,7 @@ static inline void MLST_PutTail(struct LST_LIST *pList, struct LST_ELEM *pElem)
}
static inline void MLST_RemoveElem(struct LST_LIST *pList,
- struct LST_ELEM *pCurElem)
+ struct list_head *pCurElem)
{
pCurElem->prev->next = pCurElem->next;
pCurElem->next->prev = pCurElem->prev;
@@ -104,8 +104,8 @@ static inline void MLST_RemoveElem(struct LST_LIST *pList,
static void MEM_Check(void)
{
struct memInfo *pMem;
- struct LST_ELEM *last = &mMan.lst.head;
- struct LST_ELEM *curr = mMan.lst.head.next;
+ struct list_head *last = &mMan.lst.head;
+ struct list_head *curr = last->next;
if (!LST_IsEmpty(&mMan.lst)) {
GT_0trace(MEM_debugMask, GT_7CLASS, "*** MEMORY LEAK ***\n");
@@ -121,7 +121,7 @@ static void MEM_Check(void)
(u32) pMem + sizeof(struct memInfo),
pMem->size, pMem->caller);
MLST_RemoveElem(&mMan.lst,
- (struct LST_ELEM *) pMem);
+ (struct list_head *)pMem);
kfree(pMem);
} else {
GT_1trace(MEM_debugMask, GT_7CLASS,
@@ -257,7 +257,7 @@ void *MEM_Alloc(u32 cBytes, enum MEM_POOLATTRS type)
spin_lock(&mMan.lock);
MLST_PutTail(&mMan.lst,
- (struct LST_ELEM *)pMem);
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem = (void *)((u32)pMem +
@@ -277,7 +277,7 @@ void *MEM_Alloc(u32 cBytes, enum MEM_POOLATTRS type)
spin_lock(&mMan.lock);
MLST_PutTail(&mMan.lst,
- (struct LST_ELEM *) pMem);
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem = (void *)((u32)pMem +
@@ -367,7 +367,7 @@ void *MEM_Calloc(u32 cBytes, enum MEM_POOLATTRS type)
pMem->dwSignature = memInfoSign;
spin_lock(&mMan.lock);
MLST_PutTail(&mMan.lst,
- (struct LST_ELEM *) pMem);
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem = (void *)((u32)pMem +
sizeof(struct memInfo));
@@ -388,8 +388,8 @@ void *MEM_Calloc(u32 cBytes, enum MEM_POOLATTRS type)
pMem->caller = __builtin_return_address(0);
pMem->dwSignature = memInfoSign;
spin_lock(&mMan.lock);
- MLST_PutTail(&mMan.lst, (struct LST_ELEM *)
- pMem);
+ MLST_PutTail(&mMan.lst,
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem = (void *)((u32)pMem +
sizeof(struct memInfo));
@@ -484,7 +484,7 @@ void MEM_VFree(IN void *pMemBuf)
if (pMem->dwSignature == memInfoSign) {
spin_lock(&mMan.lock);
MLST_RemoveElem(&mMan.lst,
- (struct LST_ELEM *) pMem);
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem->dwSignature = 0;
vfree(pMem);
@@ -523,7 +523,7 @@ void MEM_Free(IN void *pMemBuf)
if (pMem->dwSignature == memInfoSign) {
spin_lock(&mMan.lock);
MLST_RemoveElem(&mMan.lst,
- (struct LST_ELEM *) pMem);
+ (struct list_head *)pMem);
spin_unlock(&mMan.lock);
pMem->dwSignature = 0;
kfree(pMem);
diff --git a/drivers/dsp/bridge/services/ntfy.c b/drivers/dsp/bridge/services/ntfy.c
index e86672e..42ebb0f 100644
--- a/drivers/dsp/bridge/services/ntfy.c
+++ b/drivers/dsp/bridge/services/ntfy.c
@@ -53,7 +53,7 @@ struct NTFY_OBJECT {
* This object will be created when a client registers for events.
*/
struct NOTIFICATION {
- struct LST_ELEM listElem;
+ struct list_head listElem;
u32 uEventMask; /* Events to be notified about */
u32 uNotifyType; /* Type of notification to be sent */
@@ -192,7 +192,7 @@ void NTFY_Notify(struct NTFY_OBJECT *hNtfy, u32 uEventMask)
}
pNotify = (struct NOTIFICATION *)LST_Next(hNtfy->notifyList,
- (struct LST_ELEM *)pNotify);
+ (struct list_head *)pNotify);
}
(void) SYNC_LeaveCS(hNtfy->hSync);
@@ -241,7 +241,7 @@ DSP_STATUS NTFY_Register(struct NTFY_OBJECT *hNtfy,
break;
}
pNotify = (struct NOTIFICATION *)LST_Next(hNtfy->notifyList,
- (struct LST_ELEM *)pNotify);
+ (struct list_head *)pNotify);
}
if (pNotify == NULL) {
/* Not registered */
@@ -256,7 +256,7 @@ DSP_STATUS NTFY_Register(struct NTFY_OBJECT *hNtfy,
}
if (DSP_SUCCEEDED(status)) {
- LST_InitElem((struct LST_ELEM *) pNotify);
+ LST_InitElem((struct list_head *)pNotify);
/* If there is more than one notification type, each
* type may require its own handler code. */
status = SYNC_OpenEvent(&pNotify->hSync, &syncAttrs);
@@ -266,7 +266,7 @@ DSP_STATUS NTFY_Register(struct NTFY_OBJECT *hNtfy,
pNotify->uEventMask = uEventMask;
pNotify->uNotifyType = uNotifyType;
LST_PutTail(hNtfy->notifyList,
- (struct LST_ELEM *)pNotify);
+ (struct list_head *)pNotify);
} else {
DeleteNotify(pNotify);
}
@@ -276,7 +276,7 @@ DSP_STATUS NTFY_Register(struct NTFY_OBJECT *hNtfy,
if (uEventMask == 0) {
/* Remove from list and free */
LST_RemoveElem(hNtfy->notifyList,
- (struct LST_ELEM *)pNotify);
+ (struct list_head *)pNotify);
DeleteNotify(pNotify);
} else {
/* Update notification mask (type shouldn't change) */
diff --git a/drivers/dsp/bridge/wmd/_msg_sm.h b/drivers/dsp/bridge/wmd/_msg_sm.h
index 8b283c8..7de632b 100644
--- a/drivers/dsp/bridge/wmd/_msg_sm.h
+++ b/drivers/dsp/bridge/wmd/_msg_sm.h
@@ -106,7 +106,7 @@ struct MSG_MGR {
* The MSG_QUEUE's hSynEvent gets posted when a message is ready.
*/
struct MSG_QUEUE {
- struct LST_ELEM listElem;
+ struct list_head listElem;
u32 dwSignature;
struct MSG_MGR *hMsgMgr;
u32 uMaxMsgs; /* Node message depth */
@@ -135,7 +135,7 @@ struct MSG_DSPMSG {
* ======== MSG_FRAME ========
*/
struct MSG_FRAME {
- struct LST_ELEM listElem;
+ struct list_head listElem;
struct MSG_DSPMSG msgData;
} ;
diff --git a/drivers/dsp/bridge/wmd/chnl_sm.c b/drivers/dsp/bridge/wmd/chnl_sm.c
index ae2e3ec..00ed088 100644
--- a/drivers/dsp/bridge/wmd/chnl_sm.c
+++ b/drivers/dsp/bridge/wmd/chnl_sm.c
@@ -209,7 +209,7 @@ func_cont:
pChirp->dwArg = dwArg;
pChirp->status = (fIsEOS ? CHNL_IOCSTATEOS :
CHNL_IOCSTATCOMPLETE);
- LST_PutTail(pChnl->pIORequests, (struct LST_ELEM *)pChirp);
+ LST_PutTail(pChnl->pIORequests, (struct list_head *)pChirp);
pChnl->cIOReqs++;
DBC_Assert(pChnl->cIOReqs <= pChnl->cChirps);
/*
@@ -296,7 +296,7 @@ DSP_STATUS WMD_CHNL_CancelIO(struct CHNL_OBJECT *hChnl)
pChirp->cBytes = 0;
pChirp->status |= CHNL_IOCSTATCANCEL;
LST_PutTail(pChnl->pIOCompletions,
- (struct LST_ELEM *)pChirp);
+ (struct list_head *)pChirp);
pChnl->cIOCs++;
pChnl->cIOReqs--;
DBC_Assert(pChnl->cIOReqs >= 0);
@@ -641,8 +641,8 @@ DSP_STATUS WMD_CHNL_GetIOC(struct CHNL_OBJECT *hChnl, u32 dwTimeOut,
ioc.dwArg = pChirp->dwArg;
ioc.status |= pChirp->status;
/* Place the used chirp on the free list: */
- LST_PutTail(pChnl->pFreeList, (struct LST_ELEM *)
- pChirp);
+ LST_PutTail(pChnl->pFreeList,
+ (struct list_head *)pChirp);
} else {
ioc.pBuf = NULL;
ioc.cBytes = 0;
@@ -948,7 +948,7 @@ static struct LST_LIST *CreateChirpList(u32 uChirps)
/* Make N chirps and place on queue. */
for (i = 0; (i < uChirps) && ((pChirp = MakeNewChirp()) !=
NULL); i++) {
- LST_PutTail(pChirpList, (struct LST_ELEM *)pChirp);
+ LST_PutTail(pChirpList, (struct list_head *)pChirp);
}
/* If we couldn't allocate all chirps, free those allocated: */
diff --git a/drivers/dsp/bridge/wmd/io_sm.c b/drivers/dsp/bridge/wmd/io_sm.c
index e35ce57..b86e498 100644
--- a/drivers/dsp/bridge/wmd/io_sm.c
+++ b/drivers/dsp/bridge/wmd/io_sm.c
@@ -1382,8 +1382,8 @@ static void InputMsg(struct IO_MGR *pIOMgr, struct MSG_MGR *hMsgMgr)
if (hMsgQueue->msgUsedList && pMsg) {
pMsg->msgData = msg;
LST_PutTail(hMsgQueue->
- msgUsedList,
- (struct LST_ELEM *)pMsg);
+ msgUsedList,
+ (struct list_head *)pMsg);
NTFY_Notify(hMsgQueue->hNtfy,
DSP_NODEMESSAGEREADY);
SYNC_SetEvent(hMsgQueue->
@@ -1404,7 +1404,7 @@ static void InputMsg(struct IO_MGR *pIOMgr, struct MSG_MGR *hMsgMgr)
if (!hMsgMgr->queueList || !hMsgQueue)
goto func_end;
hMsgQueue = (struct MSG_QUEUE *)LST_Next(hMsgMgr->
- queueList, (struct LST_ELEM *)hMsgQueue);
+ queueList, (struct list_head *)hMsgQueue);
}
}
/* Set the post SWI flag */
@@ -1442,7 +1442,7 @@ static void NotifyChnlComplete(struct CHNL_OBJECT *pChnl,
*/
fSignalEvent = LST_IsEmpty(pChnl->pIOCompletions);
/* Enqueue the IO completion info for the client */
- LST_PutTail(pChnl->pIOCompletions, (struct LST_ELEM *) pChirp);
+ LST_PutTail(pChnl->pIOCompletions, (struct list_head *)pChirp);
pChnl->cIOCs++;
if (pChnl->cIOCs > pChnl->cChirps)
@@ -1600,7 +1600,7 @@ static void OutputMsg(struct IO_MGR *pIOMgr, struct MSG_MGR *hMsgMgr)
if (!hMsgMgr->msgFreeList)
goto func_end;
LST_PutTail(hMsgMgr->msgFreeList,
- (struct LST_ELEM *) pMsg);
+ (struct list_head *)pMsg);
SYNC_SetEvent(hMsgMgr->hSyncEvent);
} else {
DBG_Trace(DBG_LEVEL3, "pMsg is NULL\n");
diff --git a/drivers/dsp/bridge/wmd/msg_sm.c b/drivers/dsp/bridge/wmd/msg_sm.c
index 4b5f742..d8d2257 100644
--- a/drivers/dsp/bridge/wmd/msg_sm.c
+++ b/drivers/dsp/bridge/wmd/msg_sm.c
@@ -134,7 +134,7 @@ DSP_STATUS WMD_MSG_CreateQueue(struct MSG_MGR *hMsgMgr,
status = DSP_EMEMORY;
goto func_end;
}
- LST_InitElem((struct LST_ELEM *) pMsgQ);
+ LST_InitElem((struct list_head *)pMsgQ);
pMsgQ->uMaxMsgs = uMaxMsgs;
pMsgQ->hMsgMgr = hMsgMgr;
pMsgQ->hArg = hArg; /* Node handle */
@@ -186,7 +186,7 @@ DSP_STATUS WMD_MSG_CreateQueue(struct MSG_MGR *hMsgMgr,
DeleteMsgQueue(pMsgQ, uNumAllocated);
} else {
LST_PutTail(hMsgMgr->queueList,
- (struct LST_ELEM *)pMsgQ);
+ (struct list_head *)pMsgQ);
*phMsgQueue = pMsgQ;
/* Signal that free frames are now available */
if (!LST_IsEmpty(hMsgMgr->msgFreeList))
@@ -238,7 +238,7 @@ void WMD_MSG_DeleteQueue(struct MSG_QUEUE *hMsgQueue)
}
/* Remove message queue from hMsgMgr->queueList */
(void)SYNC_EnterCS(hMsgMgr->hSyncCS);
- LST_RemoveElem(hMsgMgr->queueList, (struct LST_ELEM *)hMsgQueue);
+ LST_RemoveElem(hMsgMgr->queueList, (struct list_head *)hMsgQueue);
/* Free the message queue object */
DeleteMsgQueue(hMsgQueue, hMsgQueue->uMaxMsgs);
if (!hMsgMgr->msgFreeList)
@@ -285,7 +285,7 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue,
if (pMsgFrame != NULL) {
*pMsg = pMsgFrame->msgData.msg;
LST_PutTail(hMsgQueue->msgFreeList,
- (struct LST_ELEM *)pMsgFrame);
+ (struct list_head *)pMsgFrame);
if (LST_IsEmpty(hMsgQueue->msgUsedList))
SYNC_ResetEvent(hMsgQueue->hSyncEvent);
else {
@@ -335,7 +335,7 @@ DSP_STATUS WMD_MSG_Get(struct MSG_QUEUE *hMsgQueue,
if (pMsgFrame != NULL) {
*pMsg = pMsgFrame->msgData.msg;
LST_PutTail(hMsgQueue->msgFreeList,
- (struct LST_ELEM *)pMsgFrame);
+ (struct list_head *)pMsgFrame);
}
}
hMsgQueue->refCount--;
@@ -387,8 +387,8 @@ DSP_STATUS WMD_MSG_Put(struct MSG_QUEUE *hMsgQueue,
if (pMsgFrame != NULL) {
pMsgFrame->msgData.msg = *pMsg;
pMsgFrame->msgData.dwId = hMsgQueue->dwId;
- LST_PutTail(hMsgMgr->msgUsedList, (struct LST_ELEM *)
- pMsgFrame);
+ LST_PutTail(hMsgMgr->msgUsedList,
+ (struct list_head *)pMsgFrame);
hMsgMgr->uMsgsPending++;
fPutMsg = true;
}
@@ -442,7 +442,7 @@ DSP_STATUS WMD_MSG_Put(struct MSG_QUEUE *hMsgQueue,
pMsgFrame->msgData.msg = *pMsg;
pMsgFrame->msgData.dwId = hMsgQueue->dwId;
LST_PutTail(hMsgMgr->msgUsedList,
- (struct LST_ELEM *)pMsgFrame);
+ (struct list_head *)pMsgFrame);
hMsgMgr->uMsgsPending++;
/*
* Schedule a DPC, to do the actual
@@ -529,8 +529,8 @@ static DSP_STATUS AddNewMsg(struct LST_LIST *msgList)
pMsg = (struct MSG_FRAME *)MEM_Calloc(sizeof(struct MSG_FRAME),
MEM_PAGED);
if (pMsg != NULL) {
- LST_InitElem((struct LST_ELEM *) pMsg);
- LST_PutTail(msgList, (struct LST_ELEM *) pMsg);
+ LST_InitElem((struct list_head *)pMsg);
+ LST_PutTail(msgList, (struct list_head *)pMsg);
} else {
status = DSP_EMEMORY;
}
--
1.6.2.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete()
2010-01-23 3:23 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
@ 2010-01-23 3:23 ` Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
1 sibling, 2 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-23 3:23 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Nishanth Menon,
Andy Shevchenko
From: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Change LST_Create() to the MEM_Calloc() and INIT_LIST_HEAD() pair in optimal way.
Use MEM_Free() instead of LST_Delete(). We can use it without checking because
MEM_Free() validates input parameter.
Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
---
arch/arm/plat-omap/include/dspbridge/list.h | 63 ---------------------------
drivers/dsp/bridge/pmgr/cmm.c | 27 +++++++----
drivers/dsp/bridge/pmgr/dev.c | 9 +++-
drivers/dsp/bridge/rmgr/drv.c | 18 +++++---
drivers/dsp/bridge/rmgr/node.c | 6 ++-
drivers/dsp/bridge/rmgr/rmm.c | 7 ++-
drivers/dsp/bridge/services/ntfy.c | 6 ++-
drivers/dsp/bridge/wmd/chnl_sm.c | 5 +-
drivers/dsp/bridge/wmd/msg_sm.c | 29 ++++++++----
9 files changed, 71 insertions(+), 99 deletions(-)
diff --git a/arch/arm/plat-omap/include/dspbridge/list.h b/arch/arm/plat-omap/include/dspbridge/list.h
index 2cdc4e4..2c2e8a8 100644
--- a/arch/arm/plat-omap/include/dspbridge/list.h
+++ b/arch/arm/plat-omap/include/dspbridge/list.h
@@ -21,9 +21,6 @@
#define LIST_
#include <dspbridge/host_os.h>
-
-/* MEM_Calloc(), MEM_NONPAGED, MEM_Free() */
-#include <dspbridge/mem.h>
#include <linux/list.h>
#define LST_IsEmpty(l) list_empty(&(l)->head)
@@ -33,66 +30,6 @@ struct LST_LIST {
};
/*
- * ======== LST_Create ========
- * Purpose:
- * Allocates and initializes a circular list.
- * Details:
- * Uses portable MEM_Calloc() function to allocate a list containing
- * a single element and initializes that element to indicate that it
- * is the "end of the list" (i.e., the list is empty).
- * An empty list is indicated by the "next" pointer in the element
- * at the head of the list pointing to the head of the list, itself.
- * Parameters:
- * Returns:
- * Pointer to beginning of created list (success)
- * NULL --> Allocation failed
- * Requires:
- * LST initialized.
- * Ensures:
- * Notes:
- * The created list contains a single element. This element is the
- * "empty" element, because its "next" and "prev" pointers point at
- * the same location (the element itself).
- */
-static inline struct LST_LIST *LST_Create(void)
-{
- struct LST_LIST *pList;
-
- pList = (struct LST_LIST *) MEM_Calloc(sizeof(struct LST_LIST),
- MEM_NONPAGED);
- if (pList != NULL)
- INIT_LIST_HEAD(&pList->head);
-
- return pList;
-}
-
-/*
- * ======== LST_Delete ========
- * Purpose:
- * Removes a list by freeing its control structure's memory space.
- * Details:
- * Uses portable MEM_Free() function to deallocate the memory
- * block pointed at by the input parameter.
- * Parameters:
- * pList: Pointer to list control structure of list to be deleted
- * Returns:
- * Void
- * Requires:
- * - LST initialized.
- * - pList != NULL.
- * Ensures:
- * Notes:
- * Must ONLY be used for empty lists, because it does not walk the
- * chain of list elements. Calling this function on a non-empty list
- * will cause a memory leak.
- */
-static inline void LST_Delete(struct LST_LIST *pList)
-{
- if (pList != NULL)
- MEM_Free(pList);
-}
-
-/*
* ======== LST_First ========
* Purpose:
* Returns a pointer to the first element of the list, or NULL if the list
diff --git a/drivers/dsp/bridge/pmgr/cmm.c b/drivers/dsp/bridge/pmgr/cmm.c
index f0efc89..225e5fd 100644
--- a/drivers/dsp/bridge/pmgr/cmm.c
+++ b/drivers/dsp/bridge/pmgr/cmm.c
@@ -296,12 +296,15 @@ DSP_STATUS CMM_Create(OUT struct CMM_OBJECT **phCmmMgr,
* MEM_AllocObject */
if (DSP_SUCCEEDED(status)) {
/* create node free list */
- pCmmObject->pNodeFreeListHead = LST_Create();
+ pCmmObject->pNodeFreeListHead = MEM_Calloc(sizeof(struct
+ LST_LIST), MEM_NONPAGED);
if (pCmmObject->pNodeFreeListHead == NULL) {
GT_0trace(CMM_debugMask, GT_7CLASS,
- "CMM_Create: LST_Create() "
- "failed \n");
+ "CMM_Create: Out of memory\n");
status = DSP_EMEMORY;
+ } else {
+ INIT_LIST_HEAD(&pCmmObject->pNodeFreeListHead->
+ head);
}
}
if (DSP_SUCCEEDED(status))
@@ -370,7 +373,7 @@ DSP_STATUS CMM_Destroy(struct CMM_OBJECT *hCmmMgr, bool bForce)
MEM_Free(pNode);
}
/* delete NodeFreeList list */
- LST_Delete(pCmmMgr->pNodeFreeListHead);
+ MEM_Free(pCmmMgr->pNodeFreeListHead);
}
SYNC_LeaveCS(pCmmMgr->hCmmLock);
if (DSP_SUCCEEDED(status)) {
@@ -635,25 +638,29 @@ DSP_STATUS CMM_RegisterGPPSMSeg(struct CMM_OBJECT *hCmmMgr, u32 dwGPPBasePA,
/* return the actual segment identifier */
*pulSegId = (u32) nSlot + 1;
/* create memory free list */
- pSMA->pFreeListHead = LST_Create();
+ pSMA->pFreeListHead = MEM_Calloc(sizeof(struct
+ LST_LIST), MEM_NONPAGED);
if (pSMA->pFreeListHead == NULL) {
GT_0trace(CMM_debugMask, GT_7CLASS,
"CMM_RegisterGPPSMSeg: "
- "Out Of Memory \n");
+ "Out Of Memory 1\n");
status = DSP_EMEMORY;
goto func_end;
}
+ INIT_LIST_HEAD(&pSMA->pFreeListHead->head);
}
if (DSP_SUCCEEDED(status)) {
/* create memory in-use list */
- pSMA->pInUseListHead = LST_Create();
+ pSMA->pInUseListHead = MEM_Calloc(sizeof(struct
+ LST_LIST), MEM_NONPAGED);
if (pSMA->pInUseListHead == NULL) {
GT_0trace(CMM_debugMask, GT_7CLASS,
"CMM_RegisterGPPSMSeg: "
- "LST_Create failed\n");
+ "Out of memory 2\n");
status = DSP_EMEMORY;
goto func_end;
}
+ INIT_LIST_HEAD(&pSMA->pInUseListHead->head);
}
if (DSP_SUCCEEDED(status)) {
/* Get a mem node for this hunk-o-memory */
@@ -763,7 +770,7 @@ static void UnRegisterGPPSMSeg(struct CMM_ALLOCATOR *pSMA)
/* next node. */
pCurNode = pNextNode;
}
- LST_Delete(pSMA->pFreeListHead); /* delete freelist */
+ MEM_Free(pSMA->pFreeListHead); /* delete freelist */
/* free nodes on InUse list */
pCurNode = (struct CMM_MNODE *)LST_First(pSMA->pInUseListHead);
while (pCurNode) {
@@ -776,7 +783,7 @@ static void UnRegisterGPPSMSeg(struct CMM_ALLOCATOR *pSMA)
/* next node. */
pCurNode = pNextNode;
}
- LST_Delete(pSMA->pInUseListHead); /* delete InUse list */
+ MEM_Free(pSMA->pInUseListHead); /* delete InUse list */
}
if ((void *) pSMA->dwVmBase != NULL)
MEM_UnmapLinearAddress((void *) pSMA->dwVmBase);
diff --git a/drivers/dsp/bridge/pmgr/dev.c b/drivers/dsp/bridge/pmgr/dev.c
index 3decf32..2b2d669 100644
--- a/drivers/dsp/bridge/pmgr/dev.c
+++ b/drivers/dsp/bridge/pmgr/dev.c
@@ -277,11 +277,14 @@ DSP_STATUS DEV_CreateDevice(OUT struct DEV_OBJECT **phDevObject,
}
/* Create the Processor List */
if (DSP_SUCCEEDED(status)) {
- pDevObject->procList = LST_Create();
+ pDevObject->procList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
if (!(pDevObject->procList)) {
status = DSP_EFAIL;
GT_0trace(debugMask, GT_7CLASS, "DEV_Create: "
"Failed to Create Proc List");
+ } else {
+ INIT_LIST_HEAD(&pDevObject->procList->head);
}
}
/* If all went well, return a handle to the dev object;
@@ -293,7 +296,7 @@ DSP_STATUS DEV_CreateDevice(OUT struct DEV_OBJECT **phDevObject,
"0x%x\n", pDevObject);
} else {
if (pDevObject && pDevObject->procList)
- LST_Delete(pDevObject->procList);
+ MEM_Free(pDevObject->procList);
if (pDevObject && pDevObject->hCodMgr)
COD_Delete(pDevObject->hCodMgr);
@@ -449,7 +452,7 @@ DSP_STATUS DEV_DestroyDevice(struct DEV_OBJECT *hDevObject)
status = DSP_EFAIL;
if (DSP_SUCCEEDED(status)) {
if (pDevObject->procList) {
- LST_Delete(pDevObject->procList);
+ MEM_Free(pDevObject->procList);
pDevObject->procList = NULL;
}
diff --git a/drivers/dsp/bridge/rmgr/drv.c b/drivers/dsp/bridge/rmgr/drv.c
index 17f8b1c..c69e3af 100644
--- a/drivers/dsp/bridge/rmgr/drv.c
+++ b/drivers/dsp/bridge/rmgr/drv.c
@@ -606,15 +606,21 @@ DSP_STATUS DRV_Create(OUT struct DRV_OBJECT **phDRVObject)
MEM_AllocObject(pDRVObject, struct DRV_OBJECT, SIGNATURE);
if (pDRVObject) {
/* Create and Initialize List of device objects */
- pDRVObject->devList = LST_Create();
+ pDRVObject->devList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
if (pDRVObject->devList) {
/* Create and Initialize List of device Extension */
- pDRVObject->devNodeString = LST_Create();
+ pDRVObject->devNodeString = MEM_Calloc(sizeof(struct
+ LST_LIST), MEM_NONPAGED);
if (!(pDRVObject->devNodeString)) {
status = DSP_EFAIL;
GT_0trace(curTrace, GT_7CLASS,
"Failed to Create DRV_EXT list ");
MEM_FreeObject(pDRVObject);
+ } else {
+ INIT_LIST_HEAD(&pDRVObject->devNodeString->
+ head);
+ INIT_LIST_HEAD(&pDRVObject->devList->head);
}
} else {
status = DSP_EMEMORY;
@@ -689,11 +695,11 @@ DSP_STATUS DRV_Destroy(struct DRV_OBJECT *hDRVObject)
*/
if (pDRVObject->devList) {
/* Could assert if the list is not empty */
- LST_Delete(pDRVObject->devList);
+ MEM_Free(pDRVObject->devList);
}
if (pDRVObject->devNodeString) {
/* Could assert if the list is not empty */
- LST_Delete(pDRVObject->devNodeString);
+ MEM_Free(pDRVObject->devNodeString);
}
MEM_FreeObject(pDRVObject);
/* Update the DRV Object in Registry to be 0 */
@@ -933,7 +939,7 @@ DSP_STATUS DRV_RemoveDevObject(struct DRV_OBJECT *hDRVObject,
}
/* Remove list if empty. */
if (LST_IsEmpty(pDRVObject->devList)) {
- LST_Delete(pDRVObject->devList);
+ MEM_Free(pDRVObject->devList);
pDRVObject->devList = NULL;
}
DBC_Ensure((pDRVObject->devList == NULL) ||
@@ -1054,7 +1060,7 @@ DSP_STATUS DRV_ReleaseResources(u32 dwContext, struct DRV_OBJECT *hDrvObject)
}
/* Delete the List if it is empty */
if (LST_IsEmpty(pDRVObject->devNodeString)) {
- LST_Delete(pDRVObject->devNodeString);
+ MEM_Free(pDRVObject->devNodeString);
pDRVObject->devNodeString = NULL;
}
}
diff --git a/drivers/dsp/bridge/rmgr/node.c b/drivers/dsp/bridge/rmgr/node.c
index 016c788..5cbe161 100644
--- a/drivers/dsp/bridge/rmgr/node.c
+++ b/drivers/dsp/bridge/rmgr/node.c
@@ -1380,7 +1380,8 @@ DSP_STATUS NODE_CreateMgr(OUT struct NODE_MGR **phNodeMgr,
MEM_AllocObject(pNodeMgr, struct NODE_MGR, NODEMGR_SIGNATURE);
if (pNodeMgr) {
pNodeMgr->hDevObject = hDevObject;
- pNodeMgr->nodeList = LST_Create();
+ pNodeMgr->nodeList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
pNodeMgr->pipeMap = GB_create(MAXPIPES);
pNodeMgr->pipeDoneMap = GB_create(MAXPIPES);
if (pNodeMgr->nodeList == NULL || pNodeMgr->pipeMap == NULL ||
@@ -1390,6 +1391,7 @@ DSP_STATUS NODE_CreateMgr(OUT struct NODE_MGR **phNodeMgr,
"NODE_CreateMgr: Memory "
"allocation failed\n");
} else {
+ INIT_LIST_HEAD(&pNodeMgr->nodeList->head);
status = NTFY_Create(&pNodeMgr->hNtfy);
}
pNodeMgr->uNumCreated = 0;
@@ -2841,7 +2843,7 @@ static void DeleteNodeMgr(struct NODE_MGR *hNodeMgr)
DeleteNode(hNode, NULL);
DBC_Assert(LST_IsEmpty(hNodeMgr->nodeList));
- LST_Delete(hNodeMgr->nodeList);
+ MEM_Free(hNodeMgr->nodeList);
}
if (hNodeMgr->hNtfy)
NTFY_Delete(hNodeMgr->hNtfy);
diff --git a/drivers/dsp/bridge/rmgr/rmm.c b/drivers/dsp/bridge/rmgr/rmm.c
index acdd124..cdd987a 100644
--- a/drivers/dsp/bridge/rmgr/rmm.c
+++ b/drivers/dsp/bridge/rmgr/rmm.c
@@ -254,11 +254,14 @@ DSP_STATUS RMM_create(struct RMM_TargetObj **pTarget,
func_cont:
/* Initialize overlay memory list */
if (DSP_SUCCEEDED(status)) {
- target->ovlyList = LST_Create();
+ target->ovlyList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
if (target->ovlyList == NULL) {
GT_0trace(RMM_debugMask, GT_6CLASS,
"RMM_create: Memory allocation failed\n");
status = DSP_EMEMORY;
+ } else {
+ INIT_LIST_HEAD(&target->ovlyList->head);
}
}
@@ -301,7 +304,7 @@ void RMM_delete(struct RMM_TargetObj *target)
MEM_Free(pSect);
}
DBC_Assert(LST_IsEmpty(target->ovlyList));
- LST_Delete(target->ovlyList);
+ MEM_Free(target->ovlyList);
}
if (target->freeList != NULL) {
diff --git a/drivers/dsp/bridge/services/ntfy.c b/drivers/dsp/bridge/services/ntfy.c
index 42ebb0f..539cbae 100644
--- a/drivers/dsp/bridge/services/ntfy.c
+++ b/drivers/dsp/bridge/services/ntfy.c
@@ -93,12 +93,14 @@ DSP_STATUS NTFY_Create(struct NTFY_OBJECT **phNtfy)
status = SYNC_InitializeDPCCS(&pNtfy->hSync);
if (DSP_SUCCEEDED(status)) {
- pNtfy->notifyList = LST_Create();
+ pNtfy->notifyList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
if (pNtfy->notifyList == NULL) {
(void) SYNC_DeleteCS(pNtfy->hSync);
MEM_FreeObject(pNtfy);
status = DSP_EMEMORY;
} else {
+ INIT_LIST_HEAD(&pNtfy->notifyList->head);
*phNtfy = pNtfy;
}
}
@@ -131,7 +133,7 @@ void NTFY_Delete(struct NTFY_OBJECT *hNtfy)
DeleteNotify(pNotify);
}
DBC_Assert(LST_IsEmpty(hNtfy->notifyList));
- LST_Delete(hNtfy->notifyList);
+ MEM_Free(hNtfy->notifyList);
}
if (hNtfy->hSync)
(void)SYNC_DeleteCS(hNtfy->hSync);
diff --git a/drivers/dsp/bridge/wmd/chnl_sm.c b/drivers/dsp/bridge/wmd/chnl_sm.c
index 00ed088..99c876d 100644
--- a/drivers/dsp/bridge/wmd/chnl_sm.c
+++ b/drivers/dsp/bridge/wmd/chnl_sm.c
@@ -942,9 +942,10 @@ static struct LST_LIST *CreateChirpList(u32 uChirps)
struct CHNL_IRP *pChirp;
u32 i;
- pChirpList = LST_Create();
+ pChirpList = MEM_Calloc(sizeof(struct LST_LIST), MEM_NONPAGED);
if (pChirpList) {
+ INIT_LIST_HEAD(&pChirpList->head);
/* Make N chirps and place on queue. */
for (i = 0; (i < uChirps) && ((pChirp = MakeNewChirp()) !=
NULL); i++) {
@@ -973,7 +974,7 @@ static void FreeChirpList(struct LST_LIST *pChirpList)
while (!LST_IsEmpty(pChirpList))
MEM_Free(LST_GetHead(pChirpList));
- LST_Delete(pChirpList);
+ MEM_Free(pChirpList);
}
/*
diff --git a/drivers/dsp/bridge/wmd/msg_sm.c b/drivers/dsp/bridge/wmd/msg_sm.c
index d8d2257..50201e5 100644
--- a/drivers/dsp/bridge/wmd/msg_sm.c
+++ b/drivers/dsp/bridge/wmd/msg_sm.c
@@ -77,18 +77,25 @@ DSP_STATUS WMD_MSG_Create(OUT struct MSG_MGR **phMsgMgr,
pMsgMgr->onExit = msgCallback;
pMsgMgr->hIOMgr = hIOMgr;
/* List of MSG_QUEUEs */
- pMsgMgr->queueList = LST_Create();
+ pMsgMgr->queueList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
/* Queues of message frames for messages to the DSP. Message
* frames will only be added to the free queue when a
* MSG_QUEUE object is created. */
- pMsgMgr->msgFreeList = LST_Create();
- pMsgMgr->msgUsedList = LST_Create();
+ pMsgMgr->msgFreeList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
+ pMsgMgr->msgUsedList = MEM_Calloc(sizeof(struct LST_LIST),
+ MEM_NONPAGED);
if (pMsgMgr->queueList == NULL ||
pMsgMgr->msgFreeList == NULL ||
- pMsgMgr->msgUsedList == NULL)
+ pMsgMgr->msgUsedList == NULL) {
status = DSP_EMEMORY;
- else
+ } else {
+ INIT_LIST_HEAD(&pMsgMgr->queueList->head);
+ INIT_LIST_HEAD(&pMsgMgr->msgFreeList->head);
+ INIT_LIST_HEAD(&pMsgMgr->msgUsedList->head);
status = SYNC_InitializeDPCCS(&pMsgMgr->hSyncCS);
+ }
/* Create an event to be used by WMD_MSG_Put() in waiting
* for an available free frame from the message manager. */
@@ -140,10 +147,14 @@ DSP_STATUS WMD_MSG_CreateQueue(struct MSG_MGR *hMsgMgr,
pMsgQ->hArg = hArg; /* Node handle */
pMsgQ->dwId = dwId; /* Node env (not valid yet) */
/* Queues of Message frames for messages from the DSP */
- pMsgQ->msgFreeList = LST_Create();
- pMsgQ->msgUsedList = LST_Create();
+ pMsgQ->msgFreeList = MEM_Calloc(sizeof(struct LST_LIST), MEM_NONPAGED);
+ pMsgQ->msgUsedList = MEM_Calloc(sizeof(struct LST_LIST), MEM_NONPAGED);
if (pMsgQ->msgFreeList == NULL || pMsgQ->msgUsedList == NULL)
status = DSP_EMEMORY;
+ else {
+ INIT_LIST_HEAD(&pMsgQ->msgFreeList->head);
+ INIT_LIST_HEAD(&pMsgQ->msgUsedList->head);
+ }
/* Create event that will be signalled when a message from
* the DSP is available. */
@@ -548,7 +559,7 @@ static void DeleteMsgMgr(struct MSG_MGR *hMsgMgr)
if (hMsgMgr->queueList) {
if (LST_IsEmpty(hMsgMgr->queueList)) {
- LST_Delete(hMsgMgr->queueList);
+ MEM_Free(hMsgMgr->queueList);
hMsgMgr->queueList = NULL;
}
}
@@ -646,7 +657,7 @@ static void FreeMsgList(struct LST_LIST *msgList)
DBC_Assert(LST_IsEmpty(msgList));
- LST_Delete(msgList);
+ MEM_Free(msgList);
func_end:
return;
}
--
1.6.2.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive
2010-01-23 3:23 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
@ 2010-01-23 3:23 ` Omar Ramirez Luna
2010-01-27 1:29 ` Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
1 sibling, 1 reply; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-23 3:23 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Nishanth Menon,
Andy Shevchenko
From: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
Including the list.h in some files looks redundant. So, remove those lines.
Signed-off-by: Andy Shevchenko <ext-andriy.shevchenko@nokia.com>
---
drivers/dsp/bridge/pmgr/chnl.c | 1 -
drivers/dsp/bridge/pmgr/dmm.c | 1 -
drivers/dsp/bridge/pmgr/msg.c | 1 -
drivers/dsp/bridge/services/cfg.c | 1 -
drivers/dsp/bridge/services/services.c | 1 -
5 files changed, 0 insertions(+), 5 deletions(-)
diff --git a/drivers/dsp/bridge/pmgr/chnl.c b/drivers/dsp/bridge/pmgr/chnl.c
index fd487f0..e7c39b6 100644
--- a/drivers/dsp/bridge/pmgr/chnl.c
+++ b/drivers/dsp/bridge/pmgr/chnl.c
@@ -31,7 +31,6 @@
/* ----------------------------------- OS Adaptation Layer */
#include <dspbridge/cfg.h>
-#include <dspbridge/list.h>
#include <dspbridge/mem.h>
#include <dspbridge/sync.h>
diff --git a/drivers/dsp/bridge/pmgr/dmm.c b/drivers/dsp/bridge/pmgr/dmm.c
index cefb520..d5a7275 100644
--- a/drivers/dsp/bridge/pmgr/dmm.c
+++ b/drivers/dsp/bridge/pmgr/dmm.c
@@ -34,7 +34,6 @@
#include <dspbridge/gt.h>
/* ----------------------------------- OS Adaptation Layer */
-#include <dspbridge/list.h>
#include <dspbridge/mem.h>
#include <dspbridge/sync.h>
diff --git a/drivers/dsp/bridge/pmgr/msg.c b/drivers/dsp/bridge/pmgr/msg.c
index 355470a..5cfeb5b 100644
--- a/drivers/dsp/bridge/pmgr/msg.c
+++ b/drivers/dsp/bridge/pmgr/msg.c
@@ -29,7 +29,6 @@
#include <dspbridge/gt.h>
/* ----------------------------------- OS Adaptation Layer */
-#include <dspbridge/list.h>
#include <dspbridge/mem.h>
/* ----------------------------------- Mini Driver */
diff --git a/drivers/dsp/bridge/services/cfg.c b/drivers/dsp/bridge/services/cfg.c
index ceddfe4..56d03a3 100644
--- a/drivers/dsp/bridge/services/cfg.c
+++ b/drivers/dsp/bridge/services/cfg.c
@@ -30,7 +30,6 @@
/* ----------------------------------- This */
#include <dspbridge/cfg.h>
-#include <dspbridge/list.h>
struct DRV_EXT {
struct list_head link;
diff --git a/drivers/dsp/bridge/services/services.c b/drivers/dsp/bridge/services/services.c
index 1e01c21..c3e11b4 100644
--- a/drivers/dsp/bridge/services/services.c
+++ b/drivers/dsp/bridge/services/services.c
@@ -29,7 +29,6 @@
/* ----------------------------------- OS Adaptation Layer */
#include <dspbridge/cfg.h>
#include <dspbridge/dbg.h>
-#include <dspbridge/list.h>
#include <dspbridge/mem.h>
#include <dspbridge/ntfy.h>
#include <dspbridge/reg.h>
--
1.6.2.4
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c
2010-01-23 3:23 [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
@ 2010-01-27 1:29 ` Omar Ramirez Luna
1 sibling, 0 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-27 1:29 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Menon, Nishanth,
Andy Shevchenko
On 1/22/2010 9:23 PM, Ramirez Luna, Omar wrote:
> From: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
>
> * Remove LST_Init() and LST_Exit() calls because they are doing nothing except
> tracing, Thus, remove tracing as well.
>
> * Remove DBC_* calls. It's internal kernel business whether to have those
> assertions.
>
> * Move methods from list.c as inline functions to the list.h.
>
> * Switch to list_head structure instead of LST_ELEM:
> - define LST_ELEM as list_head via macro
> - substitute LST_ELEM by list_head
> - remove redudant code that uses head->self pointer
>
> * Remove extra local variables.
>
> * Use native list methods where it's possible inside the list.h.
>
> Signed-off-by: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
Acked-by: Fernando Guzman Lugo <x0095840@ti.com>
> ---
> arch/arm/plat-omap/include/dspbridge/list.h | 128 ++++++++------
> drivers/dsp/bridge/Makefile | 2 +-
> drivers/dsp/bridge/services/list.c | 246 ---------------------------
> drivers/dsp/bridge/services/mem.c | 2 -
> drivers/dsp/bridge/services/services.c | 9 +-
> 5 files changed, 78 insertions(+), 309 deletions(-)
> delete mode 100644 drivers/dsp/bridge/services/list.c
>
Pushed to dspbridge.
- omar
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely
2010-01-23 3:23 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
@ 2010-01-27 1:29 ` Omar Ramirez Luna
1 sibling, 0 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-27 1:29 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Menon, Nishanth,
Andy Shevchenko
On 1/22/2010 9:23 PM, Ramirez Luna, Omar wrote:
> From: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
>
> * Change struct LST_ELEM to struct list_head in whole dsp bridge driver
> * Remove useless commentaries
> * Minor change in the services/mem.c:
> ...
> struct list_head *last =&mMan.lst.head;
> struct list_head *curr = last->next; /* was: mMan.lst.head.next */
> ...
>
> Signed-off-by: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
Acked-by: Fernando Guzman Lugo <x0095840@ti.com>
> ---
> arch/arm/plat-omap/include/dspbridge/_chnl_sm.h | 2 +-
> arch/arm/plat-omap/include/dspbridge/list.h | 1 -
> drivers/dsp/bridge/pmgr/cmm.c | 51 +++++++++++------------
> drivers/dsp/bridge/pmgr/dev.c | 8 ++--
> drivers/dsp/bridge/rmgr/drv.c | 14 +++---
> drivers/dsp/bridge/rmgr/node.c | 10 ++--
> drivers/dsp/bridge/rmgr/proc.c | 2 +-
> drivers/dsp/bridge/rmgr/rmm.c | 16 ++++----
> drivers/dsp/bridge/services/cfg.c | 2 +-
> drivers/dsp/bridge/services/mem.c | 26 ++++++------
> drivers/dsp/bridge/services/ntfy.c | 12 +++---
> drivers/dsp/bridge/wmd/_msg_sm.h | 4 +-
> drivers/dsp/bridge/wmd/chnl_sm.c | 10 ++--
> drivers/dsp/bridge/wmd/io_sm.c | 10 ++--
> drivers/dsp/bridge/wmd/msg_sm.c | 20 ++++----
> 15 files changed, 93 insertions(+), 95 deletions(-)
>
Pushed to dspbridge.
- omar
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete()
2010-01-23 3:23 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive Omar Ramirez Luna
@ 2010-01-27 1:29 ` Omar Ramirez Luna
1 sibling, 0 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-27 1:29 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Menon, Nishanth,
Andy Shevchenko
On 1/22/2010 9:23 PM, Ramirez Luna, Omar wrote:
> From: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
>
> Change LST_Create() to the MEM_Calloc() and INIT_LIST_HEAD() pair in optimal way.
>
> Use MEM_Free() instead of LST_Delete(). We can use it without checking because
> MEM_Free() validates input parameter.
>
> Signed-off-by: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
Acked-by: Fernando Guzman Lugo <x0095840@ti.com>
> ---
> arch/arm/plat-omap/include/dspbridge/list.h | 63 ---------------------------
> drivers/dsp/bridge/pmgr/cmm.c | 27 +++++++----
> drivers/dsp/bridge/pmgr/dev.c | 9 +++-
> drivers/dsp/bridge/rmgr/drv.c | 18 +++++---
> drivers/dsp/bridge/rmgr/node.c | 6 ++-
> drivers/dsp/bridge/rmgr/rmm.c | 7 ++-
> drivers/dsp/bridge/services/ntfy.c | 6 ++-
> drivers/dsp/bridge/wmd/chnl_sm.c | 5 +-
> drivers/dsp/bridge/wmd/msg_sm.c | 29 ++++++++----
> 9 files changed, 71 insertions(+), 99 deletions(-)
>
Pushed to dspbridge.
- omar
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive
2010-01-23 3:23 ` [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive Omar Ramirez Luna
@ 2010-01-27 1:29 ` Omar Ramirez Luna
0 siblings, 0 replies; 8+ messages in thread
From: Omar Ramirez Luna @ 2010-01-27 1:29 UTC (permalink / raw)
To: linux-omap
Cc: Ameya Palande, Hiroshi Doyu, Felipe Contreras, Menon, Nishanth,
Andy Shevchenko
On 1/22/2010 9:23 PM, Ramirez Luna, Omar wrote:
> From: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
>
> Including the list.h in some files looks redundant. So, remove those lines.
>
> Signed-off-by: Andy Shevchenko<ext-andriy.shevchenko@nokia.com>
Acked-by: Fernando Guzman Lugo <x0095840@ti.com>
> ---
> drivers/dsp/bridge/pmgr/chnl.c | 1 -
> drivers/dsp/bridge/pmgr/dmm.c | 1 -
> drivers/dsp/bridge/pmgr/msg.c | 1 -
> drivers/dsp/bridge/services/cfg.c | 1 -
> drivers/dsp/bridge/services/services.c | 1 -
> 5 files changed, 0 insertions(+), 5 deletions(-)
>
Pushed to dspbridge.
- omar
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2010-01-27 1:29 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-23 3:23 [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
2010-01-23 3:23 ` [PATCH 4/4] DSPBRIDGE: OSAL: Remove extra include directive Omar Ramirez Luna
2010-01-27 1:29 ` Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 3/4] dspbridge: Don't use LST_Create() and LST_Delete() Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 2/4] dspbridge: Change LST_ELEM to list_head entirely Omar Ramirez Luna
2010-01-27 1:29 ` [PATCH 1/4] DSPBRIDGE: Get rid of services/list.c Omar Ramirez Luna
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox