static INLINE IMG_VOID InitParentList(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHandle) { IMG_UINT32 ui32Parent = HANDLE_PTR_TO_INDEX(psBase, psHandle); HandleListInit(ui32Parent, &psHandle->sChildren, INDEX_TO_HANDLE(psBase, ui32Parent)); }
static INLINE IMG_VOID InitParentList(HANDLE_DATA *psHandleData) { IMG_HANDLE hParent = psHandleData->hHandle; HandleListInit(hParent, &psHandleData->sChildren, hParent); }
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 InitParentList(struct PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHandle) { u32 ui32Parent = HANDLE_PTR_TO_INDEX(psBase, psHandle); HandleListInit(ui32Parent, &psHandle->sChildren, INDEX_TO_HANDLE(psBase, ui32Parent)); }
static INLINE PVRSRV_ERROR HandleListRemove(PVRSRV_HANDLE_BASE *psBase, IMG_HANDLE hEntry, HANDLE_LIST *psEntry, IMG_SIZE_T uiEntryOffset, IMG_SIZE_T uiParentOffset) { if (psBase == IMG_NULL || psEntry == IMG_NULL) { return PVRSRV_ERROR_INVALID_PARAMS; } if (!HandleListIsEmpty(hEntry, psEntry)) { HANDLE_LIST *psPrev; HANDLE_LIST *psNext; psPrev = GetHandleListFromHandleAndOffset(psBase, psEntry->hPrev, psEntry->hParent, uiParentOffset, uiEntryOffset); if (psPrev == IMG_NULL) { return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE; } psNext = GetHandleListFromHandleAndOffset(psBase, psEntry->hNext, psEntry->hParent, uiParentOffset, uiEntryOffset); if (psNext == IMG_NULL) { return PVRSRV_ERROR_HANDLE_INDEX_OUT_OF_RANGE; } /* * The list head is on the list, and we don't want to * remove it. */ PVR_ASSERT(psEntry->hParent != IMG_NULL); psPrev->hNext = psEntry->hNext; psNext->hPrev = psEntry->hPrev; HandleListInit(hEntry, psEntry, IMG_NULL); } return PVRSRV_OK; }
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); } }
static INLINE IMG_VOID InitChildEntry(HANDLE_DATA *psHandleData) { HandleListInit(psHandleData->hHandle, &psHandleData->sSiblings, IMG_NULL); }
static INLINE IMG_VOID InitChildEntry(PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHandle) { HandleListInit(HANDLE_PTR_TO_INDEX(psBase, psHandle), &psHandle->sSiblings, IMG_NULL); }
static inline void InitChildEntry(struct PVRSRV_HANDLE_BASE *psBase, struct sHandle *psHandle) { HandleListInit(HANDLE_PTR_TO_INDEX(psBase, psHandle), &psHandle->sSiblings, NULL); }