⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gdk.h

📁 这个是内存数据库中的一个管理工具
💻 H
📖 第 1 页 / 共 4 页
字号:
gdk_export bat BBPlimit;gdk_export bat BBP_free;gdk_export int BBP_dirty;	/* BBP table dirty? */gdk_export BBPrec *BBP;/* fast defines without checks; internal use only  */#define BBP_cache(i)    BBP[ABS(i)].b[(i)<0]#define BBP_logical(i)  BBP[ABS(i)].nme[(i)<0]#define BBP_next(i)     BBP[ABS(i)].next[(i)<0]#define BBP_physical(i) BBP[ABS(i)].path#define BBP_desc(i)	BBP[ABS(i)].cache#define BBP_refs(i)     BBP[ABS(i)].refs#define BBP_lrefs(i)    BBP[ABS(i)].lrefs#define BBP_lastused(i) BBP[ABS(i)].lastused#define BBP_status(i)   BBP[ABS(i)].status/* macros that nicely check parameters */#define BBPdirty(x)	 (BBP_dirty=(x))#define BBPcacheid(b)	 ((b)->batCacheid)#define BBPstatus(i)	 (BBPcheck((i),"BBPstatus")?BBP_status(i):-1)#define BBPcurstamp()	 BBP_curstamp#define BBPrefs(i)	 (BBPcheck((i),"BBPrefs")?BBP_refs(i):-1)#define BBPcache(i)	 (BBPcheck((i),"BBPcache")?BBP_cache(i):(BAT*) NULL)#define BBPname(i)	 (BBPcheck((i),"BBPname")?((i) > 0 || BBP_logical(i))?BBP_logical(i):BBP_logical(-(i)):"")#define BBPvalid(i)      (BBP_logical(i) != NULL && *BBP_logical(i) != '.')#define BATgetId(b)	 BBPname((b)->batCacheid)#define BBPfix(i)	 BBPincref(i, FALSE)#define BBPunfix(i)	 BBPdecref(i, FALSE)#define BBPRENAME_ALREADY	-1#define BBPRENAME_ILLEGAL	-2#define BBPRENAME_LONG		-3gdk_export void BBPlock(str s);gdk_export void BBPhot(bat b);gdk_export void BBPcold(bat b);gdk_export void BBPtrim(size_t memdelta, size_t vmdelta);gdk_export void BBPunlock(str s);gdk_export str BBPlogical(bat b, str buf);gdk_export str BBPphysical(bat b, str buf);gdk_export int BBP_curstamp;gdk_export BATstore *BBPgetdesc(bat i);gdk_export BAT *BBPquickdesc(bat b, int delaccess);typedef struct {	/* simple attributes */	char name[IDLENGTH];	int storage;		/* stored as another type? */	short linear;		/* atom can be ordered linearly */	short size;		/* fixed size of atom */	short align;		/* alignment condition for values */	short deleting;		/* set if unloading */	int varsized;		/* variable-size or fixed-sized */	/* automatically generated fields */	ptr atomNull;		/* global nil value */	/* generic (fixed + varsized atom) ADT functions */	int (*atomFromStr) (str s, int *len, ptr *dst);	int (*atomToStr) (str *s, int *len, ptr src);	void *(*atomRead) (ptr a, stream *s, size_t cnt);	int (*atomWrite) (ptr a, stream *s, size_t cnt);	int (*atomCmp) (ptr v1, ptr v2);	hash_t (*atomHash) (ptr v);	/* optional functions */	void (*atomConvert) (ptr v, int direction);	int (*atomFix) (ptr atom);	int (*atomUnfix) (ptr atom);	/* varsized atom-only ADT functions */	var_t (*atomPut) (Heap *, var_t *off, ptr src);	void (*atomDel) (Heap *, var_t *atom);	int (*atomLen) (ptr atom);	void (*atomHeap) (Heap *, size_t);	/* optional functions */	void (*atomHeapConvert) (Heap *, int direction);	int (*atomHeapCheck) (Heap *, HeapRepair *);} atomDesc;gdk_export atomDesc BATatoms[];gdk_export int GDKatomcnt;gdk_export void ATOMdelete(int id);gdk_export void ATOMproperty(char *nme, char *property, GDKfcn fcn);gdk_export int ATOMindex(char *nme);gdk_export int ATOMisdescendant(int id, int parentid);gdk_export int ATOMdump(void);gdk_export int ATOMheap(int id, Heap *hp, size_t cap);gdk_export str ATOMname(int id);gdk_export int ATOMlen(int id, ptr v);gdk_export ptr ATOMnil(int id);gdk_export int ATOMcmp(int id, ptr v_1, ptr v_2);gdk_export int ATOMprint(int id, ptr val, stream *fd);gdk_export int ATOMformat(int id, ptr val, char **buf);gdk_export ptr ATOMdup(int id, ptr val);gdk_export int OIDinit(void);gdk_export oid OIDrand(void);gdk_export oid OIDbase(oid base);gdk_export oid OIDseed(oid seed);gdk_export oid OIDnew(size_t inc);gdk_export oid OIDread(str buf);gdk_export int OIDwrite(stream *fp);gdk_export int OIDdirty(void);gdk_export BAT *BAThash(BAT *b, size_t masksize);gdk_export BAT *BAThashsplit(BAT *b, size_t n, int unary);gdk_export BAT *BATrangesplit(BAT *b, size_t n, int unary);gdk_export BAT *BAThashjoin(BAT *l, BAT *r, size_t estimate);/* low level functions */gdk_export BUN SORTfnd(BAT *b, ptr v);gdk_export BUN SORTfndfirst(BAT *b, ptr v);gdk_export BUN SORTfndlast(BAT *b, ptr v);#define BATprepareHash(X) (((X)->hhash == NULL) && !BAThash(X, 0))#define GDK_HISTO_MAX_BIT             ((int) (sizeof(size_t)<<3))/* we prefer to use vm_alloc routines on size > GDKmmap */gdk_export void GDKvminc(size_t len);gdk_export void *GDKmmap(char *path, int mode, off_t off, size_t len);gdk_export int GDKmunmap(void *addr, size_t len);gdk_export ptr GDK_mem_start;	/* sbrk(0) at start of the program */gdk_export size_t GDK_mem_bigsize; /* size after which we use VM rather than heap */gdk_export size_t GDK_mem_maxsize; /* max allowed size of committed memory */gdk_export size_t GDK_vm_minsize; /* smallest size allowed for a vm block */gdk_export size_t GDK_vm_maxsize; /* max allowed size of reserverd vm */gdk_export size_t GDKmem_inuse(void); /* RAM/swapmem that MonetDB is really using now */gdk_export size_t GDKmem_cursize(void);	/* RAM/swapmem that MonetDB has claimed from OS */gdk_export size_t GDKvm_cursize(void); /* current MonetDB VM address space usage */gdk_export size_t GDKvm_heapsize(void);gdk_export size_t GDKmem_heapsize(void);gdk_export size_t GDKmem_heapinuse(void);gdk_export void *GDKmalloc(size_t size);gdk_export void *GDKzalloc(size_t size);gdk_export void *GDKmallocmax(size_t size, size_t * maxsize, int emergency);gdk_export void *GDKrealloc(void *pold, size_t size);gdk_export void *GDKreallocmax(void *pold, size_t size, size_t * maxsize, int emergency);gdk_export void GDKfree(void *blk);gdk_export str GDKstrdup(const char *s);gdk_export void *GDKvmalloc(size_t size, size_t * maxsize, int emergency);gdk_export void *GDKvmrealloc(void *pold, size_t oldsize, size_t newsize, size_t oldmax, size_t * maxsize, int emergency);gdk_export void GDKvmfree(void *blk, size_t size, size_t maxsize);#define GDKMAXERRLEN	10240#define GDKWARNING	"!WARNING: "#define GDKERROR	"!ERROR: "#define GDKMESSAGE	"!OS: "#define GDKFATAL	"!FATAL: "/* Data Distilleries uses ICU for internationalization of some MonetDB error messages */#ifdef MONET_ICU_I18Ngdk_export void GDKvsnprintf(char *buf, int maxlen, const char *format, va_list ap);#else#define GDKvsnprintf(buf, maxlen, format, ap) vsnprintf(buf, maxlen, format, ap)#endifgdk_export void GDKaddbuf(const char *msg);gdk_export int GDKwarning(const char *format, ...);gdk_export int GDKerror(const char *format, ...);gdk_export int GDKsyserror(const char *format, ...);gdk_export int GDKfatal(const char *format, ...);gdk_export int GDKerrorCount(void);#define BBPLOCKMASK     7#include "gdk_delta.h"#include "gdk_search.h"#include "gdk_atoms.h"#include "gdk_bbp.h"#include "gdk_desc.h"#include "gdk_utils.h"#include "gdk_bat.h"#ifdef NATIVE_WIN32#define unlink _unlink#ifdef _MSC_VER#define fileno _fileno#endif#define fdopen _fdopen#define putenv _putenv#define strdup _strdup#endifgdk_export MT_Lock GDKthreadLock;gdk_export MT_Lock GDKswapLock[BBPLOCKMASK + 1];gdk_export MT_Lock GDKhashLock[BBPLOCKMASK + 1];gdk_export MT_Lock GDKunloadLock;gdk_export MT_Cond GDKunloadCond;gdk_export MT_Lock GDKcacheLock;gdk_export MT_Lock GDKtrimLock;gdk_export MT_Lock GDKtmLock;#define CHECKDEBUG      if (GDKdebug&2)#define MEMDEBUG        if (GDKdebug&4)#define PROPDEBUG       if (GDKdebug&8)#define IODEBUG         if (GDKdebug&16)#define BATDEBUG        if (GDKdebug&32)#define PARSEDEBUG      if (GDKdebug&64)#define PARDEBUG        if (GDKdebug&128)#define TRGDEBUG        if (GDKdebug&256)#define TMDEBUG         if (GDKdebug&512)#define TEMDEBUG        if (GDKdebug&1024)#define DLDEBUG	        if (GDKdebug&2048)#define PERFDEBUG	if (GDKdebug&4096)#define DELTADEBUG	if (GDKdebug&8192)#define LOADDEBUG	if (GDKdebug&16384)#define YACCDEBUG	if (GDKdebug&32768)/*#define ?tcpip?		if (GDKdebug&65536)#define ?monet_multiplex?	if (GDKdebug&131072)#define ?ddbench?	if (GDKdebug&262144)#define ?ddbench?	if (GDKdebug&524288)#define ?ddbench?	if (GDKdebug&1048576)*/#define ALGODEBUG	if (GDKdebug&2097152)#define ESTIDEBUG	if (GDKdebug&4194304)#define XPROPDEBUG      if (GDKdebug&8388608)#define JOINPROPCHK     if (!(GDKdebug&16777216))#define DEADBEEFCHK     if (!(GDKdebug&33554432))gdk_export int GDKnrofthreads;gdk_export int GDKembedded;gdk_export int GDKprotected;gdk_export void GDKprotect(void);#define gdk_set_lock(X,Y)    if(GDKprotected ) MT_set_lock(X,Y)#define gdk_unset_lock(X,Y)  if(GDKprotected ) MT_unset_lock(X,Y)#define gdk_up_sema(X,Y)     if(GDKprotected ) MT_up_sema(X,Y)#define gdk_down_sema(X,Y)   if(GDKprotected ) MT_down_sema(X,Y)#define gdk_signal_cond(X,Y) if(GDKprotected ) MT_signal_cond(X,Y)#define gdk_wait_cond(X,Y,Z) if(GDKprotected ) MT_wait_cond(X,Y,Z)#define THREADS	64#define THREADDATA	16typedef struct threadStruct {	int tid;		/* logical ID by MonetDB; val == index into this array + 1 (0 is invalid) */	MT_Id pid;		/* physical thread id (pointer-sized) from the OS thread library */	str name;	ptr data[THREADDATA];	size_t sp;	void (*cleanup) (ptr thr);} ThreadRec, *Thread;gdk_export ThreadRec GDKthreads[THREADS];gdk_export int THRgettid(void);gdk_export Thread THRget(int tid);gdk_export Thread THRnew(MT_Id pid, str name);gdk_export void THRdel(Thread t);gdk_export int THRinit(void);gdk_export int THRexit(str nme);gdk_export int THRcnt(void);gdk_export void THRsetdata(int, ptr);gdk_export void *THRgetdata(int);gdk_export int THRhighwater(void);gdk_export int THRprintf(stream *s, const char *format, ...);gdk_export void *THRdata[16];#define GDKstdout	((stream*)THRdata[0])#define GDKstdin	((stream*)THRdata[1])#define GDKout	        ((stream*)THRgetdata(0))#define GDKin	        ((stream*)THRgetdata(1))#define GDKerrbuf	((char*)THRgetdata(2))#define GDKsetbuf(x)	THRsetdata(2,(ptr)(x))#define GDKerr	        GDKout#define THRget_errbuf(t)	((char*)t->data[2])#define THRset_errbuf(t,b)	(t->data[2] = b)#ifndef GDK_NOLINK#ifdef __cplusplusextern "C" {#endifstatic INLINE batBBPcheck(REGISTER bat x, REGISTER const char *y){	if (x && x != bat_nil) {		REGISTER bat z = ABS(x);		if (z >= BBPsize || BBP[z].nme[0] == NULL) {			GDKwarning("%s: range error %d\n", y, x);		} else {			return z;		}	}	return 0;}static INLINE BAT *BATdescriptor(REGISTER bat i){	REGISTER BAT *b = NULL;	if (BBPcheck(i, "BATdescriptor")) {		BBPfix(i);		b = BBP_cache(i);		if (b == NULL)			b = BBPdescriptor(i);	}	return b;}static INLINE ptrBUNhpos(REGISTER BAT *b, REGISTER BUN p){	oid *ip = &b->void_seq1;	*ip = b->hseqbase;	if (*ip != oid_nil) {		*ip += BUNgetpos(b, p);	}	return (ptr) ip;}static INLINE ptrBUNtpos(REGISTER BAT *b, REGISTER BUN p){	oid *ip = &b->void_seq2;	*ip = b->tseqbase;	if (*ip != oid_nil) {		*ip += BUNgetpos(b, p);	}	return (ptr) ip;}static INLINE BAT *BATmirror(REGISTER BAT *b){	return BBP_cache(-(b)->batCacheid);}#ifdef __cplusplus}#endif#endifgdk_export int TMcommit(void);gdk_export int TMabort(void);gdk_export int TMsubcommit(BAT* bl);gdk_export BAT *BATcommit(BAT *b);gdk_export BAT *BATfakeCommit(BAT *b);gdk_export BAT *BATundo(BAT *b);gdk_export BAT *BATalpha(BAT *b);gdk_export BAT *BATdelta(BAT *b);gdk_export BAT *BATprev(BAT *b);gdk_export int ALIGNsynced(BAT *b1, BAT *b2);gdk_export int ALIGNrelated(BAT *b1, BAT *b2);gdk_export BAT *BATpropcheck(BAT *b, int mode);#define BATPROPS_QUICK  0	/* only derive easy (non-resource consuming) properties */#define BATPROPS_ALL    1	/* derive all possible properties; no matter what cost (key=hash) */#define BATPROPS_CHECK  3	/* BATPROPS_ALL, but start from scratch and report illegally set properties */gdk_export BAT *VIEWcreate(BAT *b);gdk_export BAT *VIEWcreate_(BAT *b, int stable);gdk_export BAT *VIEWhead(BAT *b);gdk_export BAT *VIEWhead_(BAT *b, int mode);gdk_export BAT *VIEWcombine(BAT *b);gdk_export BAT *VIEWreset(BAT *b);gdk_export BAT *BATmaterialize(BAT *b, size_t size);gdk_export BAT *BATmaterializeh(BAT *b, size_t size);gdk_export BAT *BATmaterializet(BAT *b, size_t size);gdk_export void VIEWdestroy(BAT *b);gdk_export void VIEWbounds(BAT *view, size_t l, size_t h);gdk_export void VIEWunlink(BAT *b);/* low level functions */gdk_export int ALIGNundo(BAT *b);gdk_export int ALIGNcommit(BAT *b);gdk_export int ALIGNsetH(BAT *b1, BAT *b2);#define ALIGNset(x,y)	{ALIGNsetH(x,y);ALIGNsetT(x,y);}#define ALIGNsetT(x,y)	ALIGNsetH(BATmirror(x),BATmirror(y))#define ALIGNins(x,y,f)	{if (!(f)) VIEWchk(x,y,BAT_READ);(x)->halign=(x)->talign=0; }#define ALIGNdel(x,y,f)	{if (!(f)) VIEWchk(x,y,BAT_READ|BAT_APPEND);(x)->halign=(x)->talign=0; }#define ALIGNinp(x,y,f) {if (!(f)) VIEWchk(x,y,BAT_READ|BAT_APPEND);(x)->talign=0; }#define ALIGNapp(x,y,f) {if (!(f)) VIEWchk(x,y,BAT_READ);(x)->talign=0; }#define BATrestricted(b) (VIEWparent(b)?BBP_cache(VIEWparent(b))->batRestricted:(b)->batRestricted)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -