Example #1
0
void *knh_dlsym(CTX ctx, int pe, void* handler, const char* symbol)
{
#if defined(K_USING_WINDOWS)
	void *p = GetProcAddress((HMODULE)handler, (LPCSTR)symbol);
	if(p == NULL) {
		KNH_SYSLOG(ctx, NULL, pe, "GetProcAddress", "func='%s', ERR='NotFound'", symbol);
	}
	return p;
#elif defined(K_USING_POSIX_)
	void *p = dlsym(handler, symbol);
	//DBG_P("handler=%p,%p, symbol='%s' ERR='%s'", handler, p, symbol, dlerror());
	if(p == NULL) {
		KNH_SYSLOG(ctx, NULL, pe, "dlsym", "symbol='%s', ERR='%s'", symbol, dlerror());
	}
	return p;
#else
#endif
	return NULL;
}
Example #2
0
knh_fieldn_t knh_addname(Ctx *ctx, knh_String_t *s, knh_Fdictset f)
{
	knh_SystemEX_t *b = DP(ctx->sys);
	size_t n = knh_DictSet_size(b->nameDictCaseSet);
	if(n == b->hnameinfo[-1].capacity) {
		b->hnameinfo = knh_hrealloc(ctx, b->hnameinfo, n * 2);
	}
	DBG_ASSERT(n < b->hnameinfo[-1].capacity);
	KNH_INITv(b->nameinfo[n].name, s);
	if(unlikely(!(n+1 < K_FLAG_MN_SETTER))) {  /* Integer overflowed */
		KNH_SYSLOG(ctx, LOG_CRIT, "TooManyNames", "last nameid(fn)=%d < %d", (int)(n+1), (int)K_FLAG_MN_SETTER);
	}
	f(ctx, b->nameDictCaseSet, s, n + 1);
	return (knh_fieldn_t)(n);
}
Example #3
0
static void knh_Bytes_checkstack(Ctx *ctx, knh_uchar_t*oldstart, knh_uchar_t *oldend, knh_uchar_t* newstart)
{
	knh_uchar_t **cstack_top = (knh_uchar_t**)(&ctx);
	knh_uchar_t **p = (knh_uchar_t**)ctx->cstack_bottom;
	DBG_P("cstack_bottom=%p, cstack_top=%p basedata=%p", p[0], cstack_top, &oldstart);
	if(!(p < cstack_top)) {
		knh_uchar_t **tmp = cstack_top;
		cstack_top = p; p = tmp;
	}
	while(p <= cstack_top) {
		if((oldstart <= p[0] && p[0] < oldend)) {
			knh_uchar_t *newc = p[0] + (newstart - oldstart);
			KNH_SYSLOG(ctx, LOG_DEBUG, "RewrittenCharPointer", "*oldptr=%p, newptr=%p", p[0], newc);
			p[0] = newc;
		}
		p++;
	}
}
Example #4
0
static void knh_Bytes_expands(Ctx *ctx, knh_Bytes_t *ba, size_t newsize)
{
	if(ba->capacity == 0) {
		newsize = knh_good_size(newsize);
		ba->bu.ubuf = (knh_uchar_t*)KNH_MALLOC(ctx, newsize);
		ba->capacity = newsize;
	}
	else {
		knh_uchar_t *buf = ba->bu.ubuf;
		size_t capacity = ba->capacity;
		knh_uchar_t *newa = (knh_uchar_t*)KNH_MALLOC(ctx, newsize);
		knh_memcpy(newa, buf, capacity);
		knh_bzero(&newa[capacity], newsize - capacity);
		ba->bu.ubuf = newa;
		ba->capacity = newsize;
		KNH_FREE(ctx, buf, capacity);
		if(unlikely(ctx->bufa == ba)) {
			KNH_SYSLOG(ctx, LOG_INFO, "ExtendedContextBuffer", "*newsize=%ld, pointer=(%p => %p)", newsize, buf, newa);
			knh_Bytes_checkstack(ctx, buf, buf + ba->bu.len, newa);
		}
	}
}
Example #5
0
static void SYSLOG_FreeLargeMemory(Ctx *ctx, void *ptr, size_t size)
{
	KNH_SYSLOG(ctx, LOG_DEBUG, "FREE_LargeMemory", "*ptr=%p, size=%ldkb", ptr, (size/1024));
}
Example #6
0
static void SYSLOG_OutOfMemory(Ctx *ctx, size_t size)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "OutOfMemory",
		"*requested=%dbytes, used=%dbytes", size, ctx->stat->usedMemorySize);
}
void SYSLOG_ParamTypeError(Ctx *ctx, knh_sfp_t *sfp, size_t n, knh_methodn_t mn, knh_class_t reqt, knh_class_t cid)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "Type!!", "%d of %M NOT %T", n, mn, cid);
}
void SYSLOG_NoSuchMethod(Ctx *ctx, knh_sfp_t *sfp, knh_class_t cid, knh_methodn_t mn)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "NoSuchMethod!!", "%C.%M", cid, mn);
}
void SYSLOG_OutOfIndex(Ctx *ctx, knh_sfp_t *sfp, knh_int_t n, size_t max)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "OutOfIndex!!", "%i not < %i", n, (knh_int_t)max);
}
void SYSLOG_Arithmetic(Ctx *ctx, knh_sfp_t *sfp, const char *msg)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "Arithmetic!!", "%s", msg);
}
void SYSLOG_Halt(Ctx *ctx, knh_sfp_t *sfp, const char *msg)
{
	KNH_SYSLOG(ctx, LOG_CRIT, "InternalError!!", "%s", msg);
}