The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/contrib/openzfs/module/lua/lmem.h

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2 ** $Id: lmem.h,v 1.40.1.1 2013/04/12 18:48:47 roberto Exp $
    3 ** Interface to Memory Manager
    4 ** See Copyright Notice in lua.h
    5 */
    6 
    7 #ifndef lmem_h
    8 #define lmem_h
    9 
   10 
   11 #include "llimits.h"
   12 #include <sys/lua/lua.h>
   13 
   14 
   15 /*
   16 ** This macro avoids the runtime division MAX_SIZET/(e), as 'e' is
   17 ** always constant.
   18 ** The macro is somewhat complex to avoid warnings:
   19 ** +1 avoids warnings of "comparison has constant result";
   20 ** cast to 'void' avoids warnings of "value unused".
   21 */
   22 #define luaM_reallocv(L,b,on,n,e) \
   23   (cast(void, \
   24      (cast(size_t, (n)+1) > MAX_SIZET/(e)) ? (luaM_toobig(L), 0) : 0), \
   25    luaM_realloc_(L, (b), (on)*(e), (n)*(e)))
   26 
   27 #define luaM_freemem(L, b, s)   luaM_realloc_(L, (b), (s), 0)
   28 #define luaM_free(L, b)         luaM_realloc_(L, (b), sizeof(*(b)), 0)
   29 #define luaM_freearray(L, b, n)   luaM_reallocv(L, (b), n, 0, sizeof((b)[0]))
   30 
   31 #define luaM_malloc(L,s)        luaM_realloc_(L, NULL, 0, (s))
   32 #define luaM_new(L,t)           cast(t *, luaM_malloc(L, sizeof(t)))
   33 #define luaM_newvector(L,n,t) \
   34                 cast(t *, luaM_reallocv(L, NULL, 0, n, sizeof(t)))
   35 
   36 #define luaM_newobject(L,tag,s) luaM_realloc_(L, NULL, tag, (s))
   37 
   38 #define luaM_growvector(L,v,nelems,size,t,limit,e) \
   39           if ((nelems)+1 > (size)) \
   40             ((v)=cast(t *, luaM_growaux_(L,v,&(size),sizeof(t),limit,e)))
   41 
   42 #define luaM_reallocvector(L, v,oldn,n,t) \
   43    ((v)=cast(t *, luaM_reallocv(L, v, oldn, n, sizeof(t))))
   44 
   45 LUAI_FUNC l_noret luaM_toobig (lua_State *L);
   46 
   47 /* not to be called directly */
   48 LUAI_FUNC void *luaM_realloc_ (lua_State *L, void *block, size_t oldsize,
   49                                                           size_t size);
   50 LUAI_FUNC void *luaM_growaux_ (lua_State *L, void *block, int *size,
   51                                size_t size_elem, int limit,
   52                                const char *what);
   53 
   54 #endif

Cache object: 3f3ecd09e59ac21b32152adf1f3a969a


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.