Lines Matching refs:pCache

968  * @param   pCache      The cache.
972 static int intnetR0IfAddrCacheLookupSlow(PCINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr)
974 unsigned i = pCache->cEntries - 2;
975 uint8_t const *pbEntry = pCache->pbEntries + pCache->cbEntry * i;
980 pbEntry -= pCache->cbEntry;
991 * @param pCache The cache.
995 DECLINLINE(int) intnetR0IfAddrCacheLookup(PCINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr)
997 Assert(pCache->cbAddress == cbAddr);
1003 unsigned i = pCache->cEntries;
1005 && intnetR0AddrUIsEqualEx((PCRTNETADDRU)pCache->pbEntries, pAddr, cbAddr))
1014 if (intnetR0AddrUIsEqualEx((PCRTNETADDRU)(pCache->pbEntries + pCache->cbEntry * i), pAddr, cbAddr))
1019 return intnetR0IfAddrCacheLookupSlow(pCache, pAddr, cbAddr);
1024 DECLINLINE(int) intnetR0IfAddrCacheLookupLikely(PCINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr)
1027 return intnetR0IfAddrCacheLookup(pCache, pAddr, cbAddr);
1039 * @param pCache The cache.
1043 static int intnetR0IfAddrCacheInCacheUnlikelySlow(PCINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr)
1048 unsigned i = pCache->cEntries - 2;
1049 uint8_t const *pbEntry = pCache->pbEntries + pCache->cbEntry * i;
1054 pbEntry -= pCache->cbEntry;
1066 * @param pCache The cache.
1070 DECLINLINE(int) intnetR0IfAddrCacheLookupUnlikely(PCINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr)
1072 Assert(pCache->cbAddress == cbAddr);
1078 unsigned i = pCache->cEntries;
1080 && intnetR0AddrUIsEqualEx((PCRTNETADDRU)pCache->pbEntries, pAddr, cbAddr)))
1089 if (RT_UNLIKELY(intnetR0AddrUIsEqualEx((PCRTNETADDRU)(pCache->pbEntries + pCache->cbEntry * i), pAddr, cbAddr)))
1094 return intnetR0IfAddrCacheInCacheUnlikelySlow(pCache, pAddr, cbAddr);
1104 * @param pCache The cache.
1108 static void intnetR0IfAddrCacheDeleteIt(PINTNETIF pIf, PINTNETADDRCACHE pCache, int iEntry, const char *pszMsg)
1110 AssertReturnVoid(iEntry < pCache->cEntries);
1113 INTNETADDRTYPE enmAddrType = (INTNETADDRTYPE)(uintptr_t)(pCache - &pIf->aAddrCache[0]);
1114 PCRTNETADDRU pAddr = (PCRTNETADDRU)(pCache->pbEntries + iEntry * pCache->cbEntry);
1127 pIf->hIf, &pIf->MacAddr, enmAddrType, iEntry, pCache->cbAddress, pAddr, pszMsg));
1132 pCache->cEntries--;
1133 if (iEntry < pCache->cEntries)
1134 memmove(pCache->pbEntries + iEntry * pCache->cbEntry,
1135 pCache->pbEntries + (iEntry + 1) * pCache->cbEntry,
1136 (pCache->cEntries - iEntry) * pCache->cbEntry);
1146 * @param pCache The cache.
1150 DECLINLINE(void) intnetR0IfAddrCacheDelete(PINTNETIF pIf, PINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr, const char *pszMsg)
1152 int i = intnetR0IfAddrCacheLookup(pCache, pAddr, cbAddr);
1154 intnetR0IfAddrCacheDeleteIt(pIf, pCache, i, pszMsg);
1261 * @param pCache The address cache.
1265 static void intnetR0IfAddrCacheAddIt(PINTNETIF pIf, PINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, const char *pszMsg)
1271 if (RT_UNLIKELY(!pCache->cEntriesAlloc))
1279 if (pCache->cEntries >= pCache->cEntriesAlloc)
1282 (int)(uintptr_t)(pCache - &pIf->aAddrCache[0]), pCache->cbAddress, pCache->pbEntries));
1283 memmove(pCache->pbEntries, pCache->pbEntries + pCache->cbEntry, pCache->cbEntry * (pCache->cEntries - 1));
1284 pCache->cEntries--;
1285 Assert(pCache->cEntries < pCache->cEntriesAlloc);
1291 uint8_t *pbEntry = pCache->pbEntries + pCache->cEntries * pCache->cbEntry;
1292 memcpy(pbEntry, pAddr, pCache->cbAddress);
1293 memset(pbEntry + pCache->cbAddress, '\0', pCache->cbEntry - pCache->cbAddress);
1295 INTNETADDRTYPE enmAddrType = (INTNETADDRTYPE)(uintptr_t)(pCache - &pIf->aAddrCache[0]);
1300 pIf->hIf, &pIf->MacAddr, pCache->cEntries, pAddr->IPv4, pszMsg));
1304 pIf->hIf, &pIf->MacAddr, pCache->cEntries, pAddr->IPv6, pszMsg));
1308 pIf->hIf, &pIf->MacAddr, enmAddrType, pCache->cEntries, pCache->cbAddress, pAddr, pszMsg));
1312 pCache->cEntries++;
1313 Assert(pCache->cEntries <= pCache->cEntriesAlloc);
1323 * @param pCache The address cache.
1328 static void intnetR0IfAddrCacheAddSlow(PINTNETIF pIf, PINTNETADDRCACHE pCache, PCRTNETADDRU pAddr, uint8_t const cbAddr, const char *pszMsg)
1334 int i = pCache->cEntries - 2;
1335 uint8_t const *pbEntry = pCache->pbEntries + pCache->cbEntry;
1340 pbEntry += pCache->cbEntry;
1347 intnetR0IfAddrCacheAddIt(pIf, pCache, pAddr, pszMsg);
1357 * @param pCache The address cache.
1362 DECLINLINE(void) intnetR0IfAddrCacheAdd(PINTNETIF pIf, PINTNETADDRCACHE pCache, PCRTNETADDRU pAddr,
1365 Assert(pCache->cbAddress == cbAddr);
1370 unsigned i = pCache->cEntries;
1372 && ( intnetR0AddrUIsEqualEx((PCRTNETADDRU)pCache->pbEntries, pAddr, cbAddr)
1374 && intnetR0AddrUIsEqualEx((PCRTNETADDRU)(pCache->pbEntries + pCache->cbEntry * i), pAddr, cbAddr))) ))
1376 intnetR0IfAddrCacheAddSlow(pIf, pCache, pAddr, cbAddr, pszMsg);
1382 * @param pCache The address cache.
1384 static void intnetR0IfAddrCacheDestroy(PINTNETADDRCACHE pCache)
1386 void *pvFree = pCache->pbEntries;
1387 pCache->pbEntries = NULL;
1388 pCache->cEntries = 0;
1389 pCache->cEntriesAlloc = 0;
1401 * @param pCache The cache to initialize.
1405 static int intnetR0IfAddrCacheInit(PINTNETADDRCACHE pCache, INTNETADDRTYPE enmAddrType, bool fEnabled)
1407 pCache->cEntries = 0;
1408 pCache->cbAddress = intnetR0AddrSize(enmAddrType);
1409 pCache->cbEntry = RT_ALIGN(pCache->cbAddress, 4);
1412 pCache->cEntriesAlloc = 32;
1413 pCache->pbEntries = (uint8_t *)RTMemAllocZ(pCache->cEntriesAlloc * pCache->cbEntry);
1414 if (!pCache->pbEntries)
1419 pCache->cEntriesAlloc = 0;
1420 pCache->pbEntries = NULL;