From: Andy Shevchenko <ext-andriy.shevche...@nokia.com> * Use native list_empty() method instead of LST_IsEmpty() inside list.c. Remove extra local variables. * Move methods from list.c as inline functions in the list.h. Get rid of list.c at all. * Use list_head natively instead of LST_ELEM in the list.h.
Signed-off-by: Andy Shevchenko <ext-andriy.shevche...@nokia.com> --- arch/arm/plat-omap/include/dspbridge/list.h | 86 ++++++++++--- drivers/dsp/bridge/Kbuild | 2 +- drivers/dsp/bridge/services/list.c | 187 --------------------------- 3 files changed, 70 insertions(+), 205 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 f9bbd13..c9d9e49 100644 --- a/arch/arm/plat-omap/include/dspbridge/list.h +++ b/arch/arm/plat-omap/include/dspbridge/list.h @@ -49,14 +49,16 @@ #define LIST_ #include <dspbridge/host_os.h> +/* MEM_Calloc(), MEM_NONPAGED, MEM_Free() */ +#include <dspbridge/mem.h> #include <linux/list.h> #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 ======== @@ -80,7 +82,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 ======== @@ -102,7 +114,10 @@ * 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); +static inline void LST_Delete(struct LST_LIST *pList) +{ + MEM_Free(pList); +} /* * ======== LST_First ======== @@ -118,7 +133,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 (!list_empty(&pList->head)) + return pList->head.next; + return NULL; +} /* * ======== LST_GetHead ======== @@ -148,7 +168,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; + + if (list_empty(&pList->head)) + return NULL; + + pElem = pList->head.next; + pList->head.next = pElem->next; + pElem->next->prev = &pList->head; + + return pElem; +} /* * ======== LST_InitElem ======== @@ -166,7 +198,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 ======== @@ -184,9 +222,12 @@ * - 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) +{ + list_add_tail(pElem, pElemExisting); +} /* * ======== LST_Next ======== @@ -204,8 +245,13 @@ * - 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 (!list_empty(&pList->head) && (pCurElem->next != &pList->head)) + return pCurElem->next; + return NULL; +} /* * ======== LST_PutTail ======== @@ -235,8 +281,10 @@ * 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. */ - 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) +{ + list_add_tail(pElem, &pList->head); +} /* * ======== LST_RemoveElem ======== @@ -253,7 +301,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 (!list_empty(&pList->head)) + list_del_init(pCurElem); +} #endif /* LIST_ */ diff --git a/drivers/dsp/bridge/Kbuild b/drivers/dsp/bridge/Kbuild index 3432ff2..30bf633 100644 --- a/drivers/dsp/bridge/Kbuild +++ b/drivers/dsp/bridge/Kbuild @@ -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/csl.o services/mem.o services/list.o services/dpc.o \ +libservices = services/csl.o services/mem.o services/dpc.o \ services/kfile.o services/sync.o \ services/clk.o services/cfg.o services/reg.o \ services/regsup.o services/ntfy.o \ diff --git a/drivers/dsp/bridge/services/list.c b/drivers/dsp/bridge/services/list.c deleted file mode 100644 index b215b68..0000000 --- a/drivers/dsp/bridge/services/list.c +++ /dev/null @@ -1,187 +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. - */ - - -/* - * ======== listce.c ======== - * Purpose - * Provides standard circular list handling functions. - * - * Public Functions: - * LST_Create - * LST_Delete - * LST_First - * LST_GetHead - * LST_InitElem - * LST_InsertBefore - * LST_Next - * LST_PutTail - * LST_RemoveElem - * - *! Revision History - *! ================ - *! 06-Mar-2002 jeh Don't set element self to NULL in LST_RemoveElem(). - *! 10-Aug-2000 ag: Added LST_InsertBefore(). - *! 03-Feb-2000 rr: Module init/exit is handled by SERVICES Init/Exit. - *! GT Changes. - *! 22-Nov-1999 kc: Added changes from code review. - *! 10-Aug-1999 kc: Based on wsx-c18. - *! 16-Jun-1997 gp: Removed unnecessary enabling/disabling of interrupts around - *! list manipulation code. - *! 22-Oct-1996 gp: Added LST_RemoveElem, and LST_First/LST_Next iterators. - *! 10-Aug-1996 gp: Acquired from SMM for WinSPOX v. 1.1; renamed identifiers. - */ - -/* ----------------------------------- DSP/BIOS Bridge */ -#include <dspbridge/std.h> -#include <dspbridge/dbdefs.h> - -/* ----------------------------------- OS Adaptation Layer */ -#include <dspbridge/mem.h> - -/* ----------------------------------- This */ -#include <dspbridge/list.h> - -/* - * ======== LST_Create ======== - * Purpose: - * Allocates and initializes a circular list. - */ -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. - */ -void LST_Delete(struct LST_LIST *pList) -{ - MEM_Free(pList); -} - -/* - * ======== 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; - - if (!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; - - if (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; -} - -/* - * ======== LST_InitElem ======== - * Purpose: - * Initializes a list element to default (cleared) values - */ -void LST_InitElem(struct LST_ELEM *pElem) -{ - if (pElem) { - pElem->next = NULL; - pElem->prev = NULL; - } -} - -/* - * ======== 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) -{ - list_add_tail(pElem, pElemExisting); -} - -/* - * ======== 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 (!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) -{ - list_add_tail(pElem, &pList->head); -} - -/* - * ======== 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 (!LST_IsEmpty(pList)) { - list_del_init(pCurElem); - } -} - -- 1.5.6.5 -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html