Blame view
fvn_sparse/UMFPACK/Source/umf_mem_init_memoryspace.c
2.13 KB
422234dc3 git-svn-id: https... |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
/* ========================================================================== */ /* === UMF_mem_init_memoryspace ============================================= */ /* ========================================================================== */ /* -------------------------------------------------------------------------- */ /* UMFPACK Copyright (c) Timothy A. Davis, CISE, */ /* Univ. of Florida. All Rights Reserved. See ../Doc/License for License. */ /* web: http://www.cise.ufl.edu/research/sparse/umfpack */ /* -------------------------------------------------------------------------- */ /* The UMF_mem_* routines manage the Numeric->Memory memory space. */ #include "umf_internal.h" /* initialize the LU and element workspace (Numeric->Memory) */ GLOBAL void UMF_mem_init_memoryspace ( NumericType *Numeric ) { Unit *p ; ASSERT (Numeric != (NumericType *) NULL) ; ASSERT (Numeric->Memory != (Unit *) NULL) ; ASSERT (Numeric->size >= 3) ; DEBUG0 (("Init memory space, size "ID" ", Numeric->size)) ; Numeric->ngarbage = 0 ; Numeric->nrealloc = 0 ; Numeric->ncostly = 0 ; Numeric->ibig = EMPTY ; Numeric->ihead = 0 ; Numeric->itail = Numeric->size ; #ifndef NDEBUG UMF_allocfail = FALSE ; #endif /* allocate the 2-unit tail marker block and initialize it */ Numeric->itail -= 2 ; p = Numeric->Memory + Numeric->itail ; DEBUG2 (("p "ID" tail "ID" ", (Int) (p-Numeric->Memory), Numeric->itail)) ; Numeric->tail_usage = 2 ; p->header.prevsize = 0 ; p->header.size = 1 ; /* allocate a 1-unit head marker block at the head of memory */ /* this is done so that an offset of zero is treated as a NULL pointer */ Numeric->ihead++ ; /* initial usage in Numeric->Memory */ Numeric->max_usage = 3 ; Numeric->init_usage = Numeric->max_usage ; /* Note that UMFPACK_*symbolic ensures that Numeric->Memory is of size */ /* at least 3, so this initialization will always succeed. */ #ifndef NDEBUG DEBUG2 (("init_memoryspace, all free (except one unit at head ")) ; UMF_dump_memory (Numeric) ; #endif } |