Пример #1
0
static int cfunction_cache_init(ktap_state *ks)
{
	G(ks)->cfunction_tbl = kp_zalloc(ks, sizeof(ktap_value) * 128);
	if (!G(ks)->cfunction_tbl)
		return -ENOMEM;

	return 0;
}
Пример #2
0
/*
 * allocate raw object with size.
 * The raw object allocated will be free when ktap thread exit,
 * so user don't have to free it.
 */
void *kp_rawobj_alloc(ktap_state *ks, int size)
{
	ktap_rawobj *obj;
	void *addr;
	
	addr = kp_zalloc(ks, size);
	if (unlikely(!addr)) {
		kp_error(ks, "alloc raw object size %d failed\n", size);
		return NULL;
	}

	obj = &kp_obj_newobject(ks, KTAP_TYPE_RAW, sizeof(ktap_rawobj), NULL)->rawobj;
	if (unlikely(!obj)) {
		kp_free(ks, addr);
		kp_error(ks, "alloc raw object failed\n");
		return NULL;
	}

	obj->v = addr;

	/* return address of allocated memory, not raw object */
	return addr;
}