Lines Matching refs:seg
22 static PetscErrorCode PetscSegBufferAlloc_Private(PetscSegBuffer seg, PetscCount count) in PetscSegBufferAlloc_Private() argument
28 s = seg->head; in PetscSegBufferAlloc_Private()
30 …alloc = PetscMax(s->used + count, PetscMin(1000000 / ((PetscCount)seg->unitbytes) + 1, s->alloc + … in PetscSegBufferAlloc_Private()
31 …PetscCall(PetscMalloc(offsetof(struct _PetscSegBufferLink, u) + alloc * seg->unitbytes, &newlink)); in PetscSegBufferAlloc_Private()
37 seg->head = newlink; in PetscSegBufferAlloc_Private()
58 PetscErrorCode PetscSegBufferCreate(size_t unitbytes, PetscCount expected, PetscSegBuffer *seg) in PetscSegBufferCreate() argument
63 PetscCall(PetscNew(seg)); in PetscSegBufferCreate()
68 (*seg)->unitbytes = unitbytes; in PetscSegBufferCreate()
69 (*seg)->head = head; in PetscSegBufferCreate()
90 PetscErrorCode PetscSegBufferGet(PetscSegBuffer seg, PetscCount count, void *buf) in PetscSegBufferGet() argument
95 s = seg->head; in PetscSegBufferGet()
96 if (PetscUnlikely(s->used + count > s->alloc)) PetscCall(PetscSegBufferAlloc_Private(seg, count)); in PetscSegBufferGet()
97 s = seg->head; in PetscSegBufferGet()
98 *(char **)buf = &s->u.array[s->used * seg->unitbytes]; in PetscSegBufferGet()
115 PetscErrorCode PetscSegBufferDestroy(PetscSegBuffer *seg) in PetscSegBufferDestroy() argument
120 if (!*seg) PetscFunctionReturn(PETSC_SUCCESS); in PetscSegBufferDestroy()
121 for (s = (*seg)->head; s;) { in PetscSegBufferDestroy()
126 PetscCall(PetscFree(*seg)); in PetscSegBufferDestroy()
144 PetscErrorCode PetscSegBufferExtractTo(PetscSegBuffer seg, void *contig) in PetscSegBufferExtractTo() argument
151 unitbytes = seg->unitbytes; in PetscSegBufferExtractTo()
152 s = seg->head; in PetscSegBufferExtractTo()
188 PetscErrorCode PetscSegBufferExtractAlloc(PetscSegBuffer seg, void *contiguous) in PetscSegBufferExtractAlloc() argument
194 s = seg->head; in PetscSegBufferExtractAlloc()
196 PetscCall(PetscMalloc((s->used + s->tailused) * seg->unitbytes, &contig)); in PetscSegBufferExtractAlloc()
197 PetscCall(PetscSegBufferExtractTo(seg, contig)); in PetscSegBufferExtractAlloc()
217 PetscErrorCode PetscSegBufferExtractInPlace(PetscSegBuffer seg, void *contig) in PetscSegBufferExtractInPlace() argument
222 head = seg->head; in PetscSegBufferExtractInPlace()
226 PetscCall(PetscSegBufferCreate(seg->unitbytes, head->used + head->tailused, &newseg)); in PetscSegBufferExtractInPlace()
227 PetscCall(PetscSegBufferExtractTo(seg, newseg->head->u.array)); in PetscSegBufferExtractInPlace()
228 seg->head = newseg->head; in PetscSegBufferExtractInPlace()
231 head = seg->head; in PetscSegBufferExtractInPlace()
253 PetscErrorCode PetscSegBufferGetSize(PetscSegBuffer seg, PetscCount *usedsize) in PetscSegBufferGetSize() argument
256 *usedsize = seg->head->tailused + seg->head->used; in PetscSegBufferGetSize()
273 PetscErrorCode PetscSegBufferUnuse(PetscSegBuffer seg, PetscCount unused) in PetscSegBufferUnuse() argument
278 head = seg->head; in PetscSegBufferUnuse()