gonzui


Format: Advanced Search

t2ex/t2ex_source/lib/libtk/src_t2ex/mem.hbare sourcepermlink (0.00 seconds)

Search this content:

    1: /*
    2:  *----------------------------------------------------------------------
    3:  *    T2EX Software Package
    4:  *
    5:  *    Copyright 2012 by Ken Sakamura.
    6:  *    This software is distributed under the latest version of T-License 2.x.
    7:  *----------------------------------------------------------------------
    8:  *
    9:  *    Released by T-Engine Forum(http://www.t-engine.org/) at 2012/12/12.
   10:  *    Modified by TRON Forum(http://www.tron.org/) at 2015/06/04.
   11:  *
   12:  *----------------------------------------------------------------------
   13:  */
   14: /*
   15:  * This software package is available for use, modification, 
   16:  * and redistribution in accordance with the terms of the attached 
   17:  * T-License 2.x.
   18:  * If you want to redistribute the source code, you need to attach 
   19:  * the T-License 2.x document.
   20:  * There's no obligation to publish the content, and no obligation 
   21:  * to disclose it to the TRON Forum if you have modified the 
   22:  * software package.
   23:  * You can also distribute the modified source code. In this case, 
   24:  * please register the modification to T-Kernel traceability service.
   25:  * People can know the history of modifications by the service, 
   26:  * and can be sure that the version you have inherited some 
   27:  * modification of a particular version or not.
   28:  *
   29:  *    http://trace.tron.org/tk/?lang=en
   30:  *    http://trace.tron.org/tk/?lang=ja
   31:  *
   32:  * As per the provisions of the T-License 2.x, TRON Forum ensures that 
   33:  * the portion of the software that is copyrighted by Ken Sakamura or 
   34:  * the TRON Forum does not infringe the copyrights of a third party.
   35:  * However, it does not make any warranty other than this.
   36:  * DISCLAIMER: TRON Forum and Ken Sakamura shall not be held
   37:  * responsible for any consequences or damages caused directly or
   38:  * indirectly by the use of this software package.
   39:  *
   40:  * The source codes in bsd_source.tar.gz in this software package are 
   41:  * derived from NetBSD or OpenBSD and not covered under T-License 2.x.
   42:  * They need to be changed or redistributed according to the 
   43:  * representation of each source header.
   44:  */
   45: 
   46: /*
   47:  *      @(#)mem.h (libtk)
   48:  *
   49:  *      Memory local allocation library
   50:  */
   51: 
   52: #include <basic.h>
   53: #include <sys/memalloc.h>
   54: #include <libstr.h>
   55: 
   56: /*
   57:  * Minimum fragmentation unit
   58:  *      Since memory is allocated in ROUNDSZ units,
   59:  *      the lower three bits of the address must be 0.
   60:  *      These low three bits are used in the flag in the area queue.
   61:  */
   62: #define ROUNDSZ         ( sizeof(QUEUE) )      /* 8 byte */
   63: #define ROUND(sz)       ( ((UINT)(sz) + (ROUNDSZ-1)) & ~(ROUNDSZ-1) )
   64: 
   65: /* Minimum fragment size
   66:  *      A size smaller than 'sizeof(QUEUE) * 2' will result in malfunction.
   67:  */
   68: #define MIN_FRAGMENT    ( sizeof(QUEUE) * 2 )
   69: 
   70: /*
   71:  * Flag that uses the lower bits of the area queue prev
   72:  */
   73: #define AREA_USE        0x00000001U    /* In use */
   74: #define AREA_TOP        0x00000002U    /* Top of page */
   75: #define AREA_END        0x00000004U    /* End of page */
   76: #define AREA_MASK       0x00000007U
   77: 
   78: #define setAreaFlag(q, f)     ( (q)->prev = (QUEUE*)((UW)(q)->prev |  (UW)(f)) )
   79: #define clrAreaFlag(q, f)     ( (q)->prev = (QUEUE*)((UW)(q)->prev & ~(UW)(f)) )
   80: #define chkAreaFlag(q, f)     ( ((UW)(q)->prev & (UW)(f)) != 0 )
   81: 
   82: #define Mask(x)         ( (QUEUE*)((UW)(x) & ~AREA_MASK) )
   83: #define Assign(x, y)    ( (x) = (QUEUE*)(((UW)(x) & AREA_MASK) | (UW)(y)) )
   84: 
   85: /*
   86:  * Area size
   87:  */
   88: #define AreaSize(aq)    ( (VB*)(aq)->next - (VB*)((aq) + 1) )
   89: #define FreeSize(fq)    ( (VB*)((fq) - 1)->next - (VB*)(fq) )
   90: 
   91: /*
   92:  * Memory allocation check function
   93:  */
   94: IMPORT BOOL (*_mem_chkalloc)( void *ptr, int mode, MACB *macb );