ippair/storage: use flex array instead of calculated ptr

pull/9939/head
Victor Julien 1 year ago committed by Victor Julien
parent 3d3a62dfe6
commit 11d73e284c

@ -34,28 +34,28 @@ unsigned int IPPairStorageSize(void)
void *IPPairGetStorageById(IPPair *h, IPPairStorageId id)
{
return StorageGetById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
return StorageGetById(h->storage, STORAGE_IPPAIR, id.id);
}
int IPPairSetStorageById(IPPair *h, IPPairStorageId id, void *ptr)
{
return StorageSetById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id, ptr);
return StorageSetById(h->storage, STORAGE_IPPAIR, id.id, ptr);
}
void *IPPairAllocStorageById(IPPair *h, IPPairStorageId id)
{
return StorageAllocByIdPrealloc((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
return StorageAllocByIdPrealloc(h->storage, STORAGE_IPPAIR, id.id);
}
void IPPairFreeStorageById(IPPair *h, IPPairStorageId id)
{
StorageFreeById((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR, id.id);
StorageFreeById(h->storage, STORAGE_IPPAIR, id.id);
}
void IPPairFreeStorage(IPPair *h)
{
if (IPPairStorageSize() > 0)
StorageFreeAll((Storage *)((void *)h + sizeof(IPPair)), STORAGE_IPPAIR);
StorageFreeAll(h->storage, STORAGE_IPPAIR);
}
IPPairStorageId IPPairStorageRegister(const char *name, const unsigned int size,

@ -65,9 +65,6 @@ typedef struct IPPair_ {
/** use cnt, reference counter */
SC_ATOMIC_DECLARE(unsigned int, use_cnt);
/** storage api handle */
Storage *storage;
/** hash pointers, protected by hash row mutex/spin */
struct IPPair_ *hnext;
struct IPPair_ *hprev;
@ -75,6 +72,9 @@ typedef struct IPPair_ {
/** list pointers, protected by ippair-queue mutex/spin */
struct IPPair_ *lnext;
struct IPPair_ *lprev;
/** storage api handle as a flex array member, so must stay last */
Storage storage[];
} IPPair;
typedef struct IPPairHashRow_ {

Loading…
Cancel
Save