Changed list functions to macros (or static inline functions).
authorEric Kohl <eric.kohl@reactos.org>
Sun, 18 Jun 2000 15:21:53 +0000 (15:21 +0000)
committerEric Kohl <eric.kohl@reactos.org>
Sun, 18 Jun 2000 15:21:53 +0000 (15:21 +0000)
svn path=/trunk/; revision=1201

reactos/include/ddk/rtl.h
reactos/ntoskrnl/ntoskrnl.def
reactos/ntoskrnl/ntoskrnl.edf
reactos/ntoskrnl/rtl/list.c

index e8301c6..648a054 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: rtl.h,v 1.34 2000/05/13 01:44:53 ekohl Exp $
+/* $Id: rtl.h,v 1.35 2000/06/18 15:20:10 ekohl Exp $
  * 
  */
 
@@ -169,7 +169,6 @@ extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG;
  *        RootDirectory = Where the object should be placed or NULL
  *        SecurityDescriptor = Ignored
  */
-
 #define InitializeObjectAttributes(p,n,a,r,s) \
 { \
        (p)->Length = sizeof(OBJECT_ATTRIBUTES); \
@@ -180,53 +179,248 @@ extern BOOLEAN NLS_MB_OEM_CODE_PAGE_TAG;
        (p)->SecurityQualityOfService = NULL; \
 }
 
-VOID
-InitializeListHead (
-       PLIST_ENTRY     ListHead
-       );
 
-VOID
-InsertHeadList (
-       PLIST_ENTRY     ListHead,
-       PLIST_ENTRY     Entry
-       );
+/*
+ * VOID
+ * InitializeListHead (
+ *             PLIST_ENTRY     ListHead
+ *             );
+ *
+ * FUNCTION: Initializes a double linked list
+ * ARGUMENTS:
+ *         ListHead = Caller supplied storage for the head of the list
+ */
+#define InitializeListHead(ListHead) \
+{ \
+       (ListHead)->Flink = (ListHead); \
+       (ListHead)->Blink = (ListHead); \
+}
 
-VOID
-InsertTailList (
-       PLIST_ENTRY     ListHead,
-       PLIST_ENTRY     Entry
-       );
 
-BOOLEAN
-IsListEmpty (
-       PLIST_ENTRY     ListHead
-       );
+/*
+ * VOID
+ * InsertHeadList (
+ *             PLIST_ENTRY     ListHead,
+ *             PLIST_ENTRY     Entry
+ *             );
+ *
+ * FUNCTION: Inserts an entry in a double linked list
+ * ARGUMENTS:
+ *        ListHead = Head of the list
+ *        Entry = Entry to insert
+ */
+#define InsertHeadList(ListHead, ListEntry) \
+{ \
+       PLIST_ENTRY OldFlink; \
+       OldFlink = (ListHead)->Flink; \
+       (ListEntry)->Flink = OldFlink; \
+       (ListEntry)->Blink = (ListHead); \
+       OldFlink->Blink = (ListEntry); \
+       (ListHead)->Flink = (ListEntry); \
+       assert((ListEntry) != NULL); \
+       assert((ListEntry)->Blink!=NULL); \
+       assert((ListEntry)->Blink->Flink == (ListEntry)); \
+       assert((ListEntry)->Flink != NULL); \
+       assert((ListEntry)->Flink->Blink == (ListEntry)); \
+}
+
+
+/*
+ * VOID
+ * InsertTailList (
+ *             PLIST_ENTRY     ListHead,
+ *             PLIST_ENTRY     Entry
+ *             );
+ *
+ * FUNCTION: Inserts an entry in a double linked list
+ * ARGUMENTS:
+ *        ListHead = Head of the list
+ *        Entry = Entry to insert
+ */
+#define InsertTailList(ListHead, ListEntry) \
+{ \
+       PLIST_ENTRY OldBlink; \
+       OldBlink = (ListHead)->Blink; \
+       (ListEntry)->Flink = (ListHead); \
+       (ListEntry)->Blink = OldBlink; \
+       OldBlink->Flink = (ListEntry); \
+       (ListHead)->Blink = (ListEntry); \
+       assert((ListEntry) != NULL); \
+       assert((ListEntry)->Blink!=NULL); \
+       assert((ListEntry)->Blink->Flink == (ListEntry)); \
+       assert((ListEntry)->Flink != NULL); \
+       assert((ListEntry)->Flink->Blink == (ListEntry)); \
+}
+
+/*
+ * BOOLEAN
+ * IsListEmpty (
+ *     PLIST_ENTRY     ListHead
+ *     );
+ *
+ * FUNCTION:
+ *     Checks if a double linked list is empty
+ *
+ * ARGUMENTS:
+ *     ListHead = Head of the list
+*/
+#define IsListEmpty(ListHead) \
+       ((ListHead)->Flink == (ListHead))
+
 
 PSINGLE_LIST_ENTRY
 PopEntryList (
        PSINGLE_LIST_ENTRY      ListHead
        );
+/*
+#define PopEntryList(ListHead) \
+       (ListHead)->Next; \
+       { \
+               PSINGLE_LIST_ENTRY FirstEntry; \
+               FirstEntry = (ListHead)->Next; \
+               if (FirstEntry != NULL) \
+               { \
+                       (ListHead)->Next = FirstEntry->Next; \
+               } \
+       }
+*/
 
 VOID
 PushEntryList (
        PSINGLE_LIST_ENTRY      ListHead,
        PSINGLE_LIST_ENTRY      Entry
        );
+/*
+#define PushEntryList(ListHead,Entry) \
+    (Entry)->Next = (ListHead)->Next; \
+    (ListHead)->Next = (Entry)
+*/
 
-VOID
-RemoveEntryList (
-       PLIST_ENTRY     Entry
-       );
 
+/*
+ *VOID
+ *RemoveEntryList (
+ *     PLIST_ENTRY     Entry
+ *     );
+ *
+ * FUNCTION:
+ *     Removes an entry from a double linked list
+ *
+ * ARGUMENTS:
+ *     ListEntry = Entry to remove
+ */
+#define RemoveEntryList(ListEntry) \
+{ \
+       PLIST_ENTRY OldFlink; \
+       PLIST_ENTRY OldBlink; \
+       assert((ListEntry) != NULL); \
+       assert((ListEntry)->Blink!=NULL); \
+       assert((ListEntry)->Blink->Flink == (ListEntry)); \
+       assert((ListEntry)->Flink != NULL); \
+       assert((ListEntry)->Flink->Blink == (ListEntry)); \
+       OldFlink = (ListEntry)->Flink; \
+       OldBlink = (ListEntry)->Blink; \
+       OldFlink->Blink = OldBlink; \
+       OldBlink->Flink = OldFlink; \
+}
+
+
+/*
+ * PLIST_ENTRY
+ * RemoveHeadList (
+ *     PLIST_ENTRY     ListHead
+ *     );
+ *
+ * FUNCTION:
+ *     Removes the head entry from a double linked list
+ *
+ * ARGUMENTS:
+ *     ListHead = Head of the list
+ *
+ * RETURNS:
+ *     The removed entry
+ */
+/*
+#define RemoveHeadList(ListHead) \
+       (ListHead)->Flink; \
+       {RemoveEntryList((ListHead)->Flink)}
+*/
+/*
 PLIST_ENTRY
 RemoveHeadList (
        PLIST_ENTRY     ListHead
        );
+*/
+
+static
+inline
+PLIST_ENTRY
+RemoveHeadList (
+       PLIST_ENTRY     ListHead
+       )
+{
+       PLIST_ENTRY Old;
+       PLIST_ENTRY OldFlink;
+       PLIST_ENTRY OldBlink;
+
+       Old = ListHead->Flink;
+
+       OldFlink = ListHead->Flink->Flink;
+       OldBlink = ListHead->Flink->Blink;
+       OldFlink->Blink = OldBlink;
+       OldBlink->Flink = OldFlink;
+
+       return(Old);
+}
+
 
+/*
+ * PLIST_ENTRY
+ * RemoveTailList (
+ *     PLIST_ENTRY     ListHead
+ *     );
+ *
+ * FUNCTION:
+ *     Removes the tail entry from a double linked list
+ *
+ * ARGUMENTS:
+ *     ListHead = Head of the list
+ * RETURNS:
+ *     The removed entry
+ */
+/*
+#define RemoveTailList(ListHead) \
+       (ListHead)->Blink; \
+       {RemoveEntryList((ListHead)->Blink)}
+*/
+/*
 PLIST_ENTRY
 RemoveTailList (
        PLIST_ENTRY     ListHead
        );
+*/
+
+static
+inline
+PLIST_ENTRY
+RemoveTailList (
+       PLIST_ENTRY ListHead
+       )
+{
+       PLIST_ENTRY Old;
+       PLIST_ENTRY OldFlink;
+       PLIST_ENTRY OldBlink;
+
+       Old = ListHead->Blink;
+
+       OldFlink = ListHead->Blink->Flink;
+       OldBlink = ListHead->Blink->Blink;
+       OldFlink->Blink = OldBlink;
+       OldBlink->Flink = OldFlink;
+
+       return(Old);
+}
+
 
 PVOID
 STDCALL
index 6e0cb74..eaf6051 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntoskrnl.def,v 1.75 2000/06/12 14:53:09 ekohl Exp $
+; $Id: ntoskrnl.def,v 1.76 2000/06/18 15:21:18 ekohl Exp $
 ;
 ; reactos/ntoskrnl/ntoskrnl.def
 ;
@@ -1014,12 +1014,7 @@ wctomb
 ;
 ;      ReactOS Extensions (these should be macros!)
 ;
-;IoInitializeDpcRequest
-;IoRequestDpc
 MmGetSystemAddressForMdl
-InitializeListHead
-InsertTailList
-RemoveEntryList
 ;
 ;
 ; exports from hal.dll
index c3aa9e0..7915b09 100644 (file)
@@ -1,4 +1,4 @@
-; $Id: ntoskrnl.edf,v 1.62 2000/06/12 14:53:09 ekohl Exp $
+; $Id: ntoskrnl.edf,v 1.63 2000/06/18 15:21:18 ekohl Exp $
 ;
 ; reactos/ntoskrnl/ntoskrnl.def
 ;
@@ -947,12 +947,7 @@ wctomb
 ;
 ;      ReactOS Extensions
 ;
-;IoInitializeDpcRequest
-;IoRequestDpc
 MmGetSystemAddressForMdl
-InitializeListHead
-InsertTailList
-RemoveEntryList
 ;
 ;
 ; exports from hal.dll
index f35b0d6..4f3a13f 100644 (file)
@@ -1,4 +1,4 @@
-/* $Id: list.c,v 1.6 2000/06/07 13:05:09 ekohl Exp $
+/* $Id: list.c,v 1.7 2000/06/18 15:21:53 ekohl Exp $
  *
  * COPYRIGHT:           See COPYING in the top level directory
  * PROJECT:             ReactOS kernel
@@ -16,6 +16,7 @@
 
 /* FUNCTIONS *************************************************************/
 
+#if 0
 static BOOLEAN CheckEntry(PLIST_ENTRY ListEntry)
 {
    assert(ListEntry!=NULL);
@@ -26,36 +27,6 @@ static BOOLEAN CheckEntry(PLIST_ENTRY ListEntry)
    return(TRUE);
 }
 
-BOOLEAN IsListEmpty(PLIST_ENTRY ListHead)
-/*
- * FUNCTION: Determines if a list is empty
- * ARGUMENTS:
- *        ListHead = Head of the list
- * RETURNS: True if there are no entries in the list
- */
-{
-   return(ListHead->Flink==ListHead);
-}
-
-VOID RemoveEntryList(PLIST_ENTRY ListEntry)
-{
-   PLIST_ENTRY OldFlink;
-   PLIST_ENTRY OldBlink;
-   
-   DPRINT("RemoveEntryList(ListEntry %x)\n", ListEntry);
-   
-   assert(CheckEntry(ListEntry));
-   
-   OldFlink=ListEntry->Flink;
-   OldBlink=ListEntry->Blink;
-
-   OldFlink->Blink=OldBlink;
-   OldBlink->Flink=OldFlink;
-   
-   
-   DPRINT("RemoveEntryList()\n");
-}
-
 PLIST_ENTRY RemoveTailList(PLIST_ENTRY ListHead)
 /*
  * FUNCTION: Remove the tail entry from a double linked list
@@ -70,60 +41,22 @@ PLIST_ENTRY RemoveTailList(PLIST_ENTRY ListHead)
 }
 
 PLIST_ENTRY RemoveHeadList(PLIST_ENTRY ListHead)
-{  
+{
    PLIST_ENTRY Old;
-   
+
    DPRINT("RemoveHeadList(ListHead %x)\n",ListHead);
-   
+
    assert(CheckEntry(ListHead));
-   
+
    Old = ListHead->Flink;
    RemoveEntryList(ListHead->Flink);
-   
-   DPRINT("RemoveHeadList()\n");
-   
-   return(Old);
-}
 
-VOID InitializeListHead(PLIST_ENTRY ListHead)
-/*
- * FUNCTION: Initializes a double linked list
- * ARGUMENTS: 
- *         ListHead = Caller supplied storage for the head of the list
- */
-{
-   ListHead->Flink = ListHead->Blink = ListHead;
-}
+   DPRINT("RemoveHeadList()\n");
 
-VOID InsertTailList(PLIST_ENTRY ListHead, PLIST_ENTRY ListEntry)
-/*
- * FUNCTION: Inserts an entry in a double linked list
- * ARGUMENTS:
- *        ListHead = Head of the list
- *        Entry = Entry to insert
- */
-{
-   PLIST_ENTRY Blink;
-
-   Blink = ListHead->Blink;
-   ListEntry->Flink=ListHead;
-   ListEntry->Blink=Blink;
-   Blink->Flink=ListEntry;
-   ListHead->Blink=ListEntry;
-   assert(CheckEntry(ListEntry));
+   return(Old);
 }
+#endif
 
-VOID InsertHeadList(PLIST_ENTRY ListHead, PLIST_ENTRY ListEntry)
-{
-   PLIST_ENTRY OldFlink;
-   
-   OldFlink = ListHead->Flink;
-   ListEntry->Flink = OldFlink;
-   ListEntry->Blink = ListHead;
-   OldFlink->Blink = ListEntry;
-   ListHead->Flink = ListEntry;
-   assert( CheckEntry( ListEntry ) );
-}
 
 PLIST_ENTRY
 STDCALL
@@ -142,12 +75,12 @@ ExInterlockedInsertTailList (
        Old = NULL;
      }
    else
-     {       
+     {
        Old = ListHead->Blink;
      }
    InsertTailList(ListHead,ListEntry);
    KeReleaseSpinLock(Lock,oldlvl);
-   
+
    return(Old);
 }
 
@@ -166,7 +99,7 @@ ExInterlockedInsertHeadList (
  *          Lock = Caller supplied spinlock used to synchronise access
  * RETURNS: The previous head of the list
  */
-{    
+{
    PLIST_ENTRY Old;
    KIRQL oldlvl;
 
@@ -181,7 +114,7 @@ ExInterlockedInsertHeadList (
      }
    InsertHeadList(ListHead,ListEntry);
    KeReleaseSpinLock(Lock,oldlvl);
-   
+
    return(Old);
 }
 
@@ -202,7 +135,7 @@ ExInterlockedRemoveHeadList (
 {
    PLIST_ENTRY ret;
    KIRQL oldlvl;
-  
+
    KeAcquireSpinLock(Lock,&oldlvl);
    if (IsListEmpty(Head))
      {
@@ -216,8 +149,11 @@ ExInterlockedRemoveHeadList (
    return(ret);
 }
 
-PLIST_ENTRY ExInterlockedRemoveTailList(PLIST_ENTRY Head,
-                                       PKSPIN_LOCK Lock)
+PLIST_ENTRY
+ExInterlockedRemoveTailList (
+       PLIST_ENTRY     Head,
+       PKSPIN_LOCK     Lock
+       )
 /*
  * FUNCTION: Removes the tail of a double linked list
  * ARGUMENTS:
@@ -228,7 +164,7 @@ PLIST_ENTRY ExInterlockedRemoveTailList(PLIST_ENTRY Head,
 {
    PLIST_ENTRY ret;
    KIRQL oldlvl;
-  
+
    KeAcquireSpinLock(Lock,&oldlvl);
    if (IsListEmpty(Head))
      {