static inline void HandleListRemove(struct PVRSRV_HANDLE_BASE *psBase, u32 ui32EntryIndex, struct sHandleList *psEntry, size_t uiEntryOffset, size_t uiParentOffset) { if (!HandleListIsEmpty(ui32EntryIndex, psEntry)) { struct sHandleList *psPrev = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Prev, HANDLE_TO_INDEX(psBase, psEntry-> hParent), uiParentOffset, uiEntryOffset); struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psBase, psEntry-> hParent), uiParentOffset, uiEntryOffset); PVR_ASSERT(psEntry->hParent != NULL); psPrev->ui32Next = psEntry->ui32Next; psNext->ui32Prev = psEntry->ui32Prev; HandleListInit(ui32EntryIndex, psEntry, NULL); } }
static inline void HandleListInsertBefore(struct PVRSRV_HANDLE_BASE *psBase, u32 ui32InsIndex, struct sHandleList *psIns, size_t uiParentOffset, u32 ui32EntryIndex, struct sHandleList *psEntry, size_t uiEntryOffset, u32 ui32ParentIndex) { struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset); PVR_ASSERT(psEntry->hParent == NULL); PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next); PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET (psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(psBase, ui32ParentIndex)); psEntry->ui32Prev = psIns->ui32Prev; psIns->ui32Prev = ui32EntryIndex; psEntry->ui32Next = ui32InsIndex; psPrevIns->ui32Next = ui32EntryIndex; psEntry->hParent = INDEX_TO_HANDLE(psBase, ui32ParentIndex); }
static INLINE IMG_VOID HandleListInsertBefore(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32InsIndex, struct sHandleList *psIns, IMG_SIZE_T uiParentOffset, IMG_UINT32 ui32EntryIndex, struct sHandleList *psEntry, IMG_SIZE_T uiEntryOffset, IMG_UINT32 ui32ParentIndex) { struct sHandleList *psPrevIns = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psIns->ui32Prev, ui32ParentIndex, uiParentOffset, uiEntryOffset); PVR_ASSERT(psEntry->hParent == IMG_NULL); PVR_ASSERT(ui32InsIndex == psPrevIns->ui32Next); PVR_ASSERT(LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, ui32ParentIndex, ui32ParentIndex, uiParentOffset, uiParentOffset)->hParent == INDEX_TO_HANDLE(psBase, ui32ParentIndex)); psEntry->ui32Prev = psIns->ui32Prev; psIns->ui32Prev = ui32EntryIndex; psEntry->ui32Next = ui32InsIndex; psPrevIns->ui32Next = ui32EntryIndex; psEntry->hParent = INDEX_TO_HANDLE(psBase, ui32ParentIndex); }
static INLINE IMG_VOID HandleListRemove(PVRSRV_HANDLE_BASE *psBase, IMG_UINT32 ui32EntryIndex, struct sHandleList *psEntry, IMG_SIZE_T uiEntryOffset, IMG_SIZE_T uiParentOffset) { if (!HandleListIsEmpty(ui32EntryIndex, psEntry)) { struct sHandleList *psPrev = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Prev, HANDLE_TO_INDEX(psBase, psEntry->hParent), uiParentOffset, uiEntryOffset); struct sHandleList *psNext = LIST_PTR_FROM_INDEX_AND_OFFSET(psBase, psEntry->ui32Next, HANDLE_TO_INDEX(psBase, psEntry->hParent), uiParentOffset, uiEntryOffset); PVR_ASSERT(psEntry->hParent != IMG_NULL); psPrev->ui32Next = psEntry->ui32Next; psNext->ui32Prev = psEntry->ui32Prev; HandleListInit(ui32EntryIndex, psEntry, IMG_NULL); } }