int HostSetStorageById(Host *h, HostStorageId id, void *ptr)
{
- return StorageSetById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id, ptr);
+ return StorageSetById(h->storage, STORAGE_HOST, id.id, ptr);
}
/**
void *HostGetStorageById(Host *h, HostStorageId id)
{
- return StorageGetById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id);
+ return StorageGetById(h->storage, STORAGE_HOST, id.id);
}
/**
void *HostAllocStorageById(Host *h, HostStorageId id)
{
- return StorageAllocByIdPrealloc((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id);
+ return StorageAllocByIdPrealloc(h->storage, STORAGE_HOST, id.id);
}
void HostFreeStorageById(Host *h, HostStorageId id)
{
- StorageFreeById((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST, id.id);
+ StorageFreeById(h->storage, STORAGE_HOST, id.id);
}
void HostFreeStorage(Host *h)
{
if (HostStorageSize() > 0)
- StorageFreeAll((Storage *)((void *)h + sizeof(Host)), STORAGE_HOST);
+ StorageFreeAll(h->storage, STORAGE_HOST);
}
/** pointers to iprep storage */
void *iprep;
- /** storage api handle */
- Storage *storage;
-
/** hash pointers, protected by hash row mutex/spin */
struct Host_ *hnext;
struct Host_ *hprev;
/** list pointers, protected by host-queue mutex/spin */
struct Host_ *lnext;
struct Host_ *lprev;
+
+ /** storage api handle */
+ Storage storage[];
} Host;
typedef struct HostHashRow_ {