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; }
/* * 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; }