本文整理汇总了C++中region_alloc函数的典型用法代码示例。如果您正苦于以下问题:C++ region_alloc函数的具体用法?C++ region_alloc怎么用?C++ region_alloc使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了region_alloc函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: region_test_truncate
void
region_test_truncate()
{
header();
struct region region;
region_create(®ion, &cache);
void *ptr = region_alloc(®ion, 10);
fail_unless(ptr);
size_t used = region_used(®ion);
region_alloc(®ion, 10000);
region_alloc(®ion, 10000000);
region_truncate(®ion, used);
fail_unless(region_used(®ion) == used);
region_free(®ion);
footer();
}
示例2: switch
ExprType *instantiate(ExprType *type, Hashtable *type_table, int replaceFreeVars, Region *r) {
ExprType **paramTypes;
int i;
ExprType *typeInst;
int changed = 0;
switch(getNodeType(type)) {
case T_VAR:
typeInst = dereference(type, type_table, r);
if(typeInst == type) {
return replaceFreeVars?newSimpType(T_UNSPECED, r): type;
} else {
return instantiate(typeInst, type_table, replaceFreeVars, r);
}
default:
if(type->degree != 0) {
paramTypes = (ExprType **) region_alloc(r,sizeof(ExprType *)*type->degree);
for(i=0;i<type->degree;i++) {
paramTypes[i] = instantiate(type->subtrees[i], type_table, replaceFreeVars, r);
if(paramTypes[i]!=type->subtrees[i]) {
changed = 1;
}
}
}
if(changed) {
ExprType *inst = (ExprType *) region_alloc(r, sizeof(ExprType));
memcpy(inst, type, sizeof(ExprType));
inst->subtrees = paramTypes;
return inst;
} else {
return type;
}
}
}
示例3: sizeof
TypingConstraint *newTypingConstraint(ExprType *a, ExprType *b, NodeType type, Node *node, Region *r) {
TypingConstraint *tc = (TypingConstraint *)region_alloc(r, sizeof (TypingConstraint));
memset(tc, 0, sizeof(TypingConstraint));
tc->subtrees = (Node **)region_alloc(r, sizeof(Node *)*4);
TC_A(tc) = a;
TC_B(tc) = b;
setNodeType(tc, type);
TC_NODE(tc) = node;
TC_NEXT(tc) = NULL;
tc->degree = 4;
return tc;
}
示例4: zonec_setup_parser
/*
* setup parse
*/
void
zonec_setup_parser(namedb_type* db)
{
region_type* rr_region = region_create(xalloc, free);
parser = zparser_create(db->region, rr_region, db);
assert(parser);
/* Unique pointers used to mark errors. */
error_dname = (dname_type *) region_alloc(db->region, 1);
error_domain = (domain_type *) region_alloc(db->region, 1);
/* Open the network database */
setprotoent(1);
setservent(1);
}
示例5: newRes
Res* newRes(Region *r) {
Res *res1 = (Res *) region_alloc(r,sizeof (Res));
memset(res1, 0, sizeof(Res));
setNodeType(res1, N_VAL);
setIOType(res1, IO_TYPE_INPUT);
return res1;
}
示例6: newCollRes2
/* used in cpRes only */
Res* newCollRes2(int size, Region *r) {
Res *res1 = newRes(r);
res1->exprType = NULL;
res1->degree = size;
res1->subtrees = (Res **)region_alloc(r, sizeof(Res *)*size);
return res1;
}
示例7: newCollRes
Res* newCollRes(int size, ExprType *elemType, Region *r) {
Res *res1 = newRes(r);
res1->exprType = newCollType(elemType, r);
res1->degree = size;
res1->subtrees = (Res **)region_alloc(r, sizeof(Res *)*size);
return res1;
}
示例8: region_alloc
FunctionDesc *newExternalFD(Node *type, Region *r) {
FunctionDesc *desc = (FunctionDesc *) region_alloc(r, sizeof(FunctionDesc));
memset(desc, 0, sizeof(FunctionDesc));
desc->exprType = type;
setNodeType(desc, N_FD_EXTERNAL);
return desc;
}
示例9: alloc_rdata
/*
* Allocate SIZE+sizeof(uint16_t) bytes and store SIZE in the first
* element. Return a pointer to the allocation.
*/
static uint16_t *
alloc_rdata(region_type *region, size_t size)
{
uint16_t *result = region_alloc(region, sizeof(uint16_t) + size);
*result = size;
return result;
}
示例10: zadd_rdata_txt_wireformat
/**
* Used for TXT RR's to grow with undefined number of strings.
*/
void
zadd_rdata_txt_wireformat(uint16_t *data, int first)
{
rdata_atom_type *rd;
if (parser->current_rr.rdata_count >= MAXRDATALEN) {
zc_error_prev_line("too many rdata txt elements");
return;
}
/* First STR in str_seq, allocate 65K in first unused rdata
* else find last used rdata */
if (first) {
rd = &parser->current_rr.rdatas[parser->current_rr.rdata_count];
if ((rd->data = (uint16_t *) region_alloc(parser->rr_region,
sizeof(uint16_t) + 65535 * sizeof(uint8_t))) == NULL) {
zc_error_prev_line("Could not allocate memory for TXT RR");
return;
}
parser->current_rr.rdata_count++;
rd->data[0] = 0;
}
else
rd = &parser->current_rr.rdatas[parser->current_rr.rdata_count-1];
if ((size_t)rd->data[0] + (size_t)data[0] > 65535) {
zc_error_prev_line("too large rdata element");
return;
}
memcpy((uint8_t *)rd->data + 2 + rd->data[0], data + 1, data[0]);
rd->data[0] += data[0];
}
示例11: pattern_options_create
pattern_options_t*
pattern_options_create(region_type* region)
{
pattern_options_t* p;
p = (pattern_options_t*)region_alloc(region, sizeof(pattern_options_t));
p->node = *RBTREE_NULL;
p->pname = 0;
p->zonefile = 0;
p->zonestats = 0;
p->allow_notify = 0;
p->request_xfr = 0;
p->notify = 0;
p->provide_xfr = 0;
p->outgoing_interface = 0;
p->notify_retry = 5;
p->notify_retry_is_default = 1;
p->allow_axfr_fallback = 1;
p->allow_axfr_fallback_is_default = 1;
p->implicit = 0;
p->xfrd_flags = 0;
#ifdef RATELIMIT
p->rrl_whitelist = 0;
#endif
return p;
}
示例12: key_options_setup
/** add tsig_key contents */
void
key_options_setup(region_type* region, key_options_t* key)
{
uint8_t data[16384]; /* 16KB */
int size;
if(!key->tsig_key) {
/* create it */
key->tsig_key = (tsig_key_type *) region_alloc(region,
sizeof(tsig_key_type));
/* create name */
key->tsig_key->name = dname_parse(region, key->name);
if(!key->tsig_key->name) {
log_msg(LOG_ERR, "Failed to parse tsig key name %s",
key->name);
/* key and base64 were checked during syntax parse */
exit(1);
}
key->tsig_key->size = 0;
key->tsig_key->data = NULL;
}
size = b64_pton(key->secret, data, sizeof(data));
if(size == -1) {
log_msg(LOG_ERR, "Failed to parse tsig key data %s",
key->name);
/* key and base64 were checked during syntax parse */
exit(1);
}
key->tsig_key->size = size;
key->tsig_key->data = (uint8_t *)region_alloc_init(region, data, size);
}
示例13: server_main
/*
* The main server simply waits for signals and child processes to
* terminate. Child processes are restarted as necessary.
*/
void
server_main(struct nsd *nsd)
{
region_type *server_region = region_create(xalloc, free);
netio_handler_type xfrd_listener;
/* Ensure we are the main process */
assert(nsd->server_kind == NSD_SERVER_MAIN);
xfrd_listener.user_data = (struct ipc_handler_conn_data*)region_alloc(
server_region, sizeof(struct ipc_handler_conn_data));
xfrd_listener.fd = -1;
((struct ipc_handler_conn_data*)xfrd_listener.user_data)->nsd = nsd;
((struct ipc_handler_conn_data*)xfrd_listener.user_data)->conn =
xfrd_tcp_create(server_region);
nsd->pid = 0;
nsd->child_count = 0;
nsd->server_kind = NSD_SERVER_UDP;
nsd->this_child = &nsd->children[0];
/* remove signal flags inherited from parent
the parent will handle them. */
nsd->signal_hint_reload = 0;
nsd->signal_hint_child = 0;
nsd->signal_hint_quit = 0;
nsd->signal_hint_shutdown = 0;
nsd->signal_hint_stats = 0;
nsd->signal_hint_statsusr = 0;
close(nsd->this_child->child_fd);
nsd->this_child->child_fd = -1;
server_child(nsd);
abort();
}
示例14: unifyNonTvars
/**
* Unify non tvar or union types.
* return The most general instance if unifiable
* NULL if not
*/
ExprType* unifyNonTvars(ExprType *type, ExprType *expected, Hashtable *varTypes, Region *r) {
if(getNodeType(type) == T_CONS && getNodeType(expected) == T_CONS) {
if(strcmp(T_CONS_TYPE_NAME(type), T_CONS_TYPE_NAME(expected)) == 0
&& T_CONS_ARITY(type) == T_CONS_ARITY(expected)) {
ExprType **subtrees = (ExprType **) region_alloc(r, sizeof(ExprType *) * T_CONS_ARITY(expected));
int i;
for(i=0;i<T_CONS_ARITY(type);i++) {
ExprType *elemType = unifyWith(
T_CONS_TYPE_ARG(type, i),
T_CONS_TYPE_ARG(expected, i),
varTypes,r); /* unifyWithCoercion performs dereference */
if(elemType == NULL) {
return NULL;
}
subtrees[i] = elemType;
}
return dereference(newConsType(T_CONS_ARITY(expected), T_CONS_TYPE_NAME(expected), subtrees, r), varTypes, r);
} else {
return NULL;
}
} else if(getNodeType(type) == T_IRODS || getNodeType(expected) == T_IRODS) {
if(strcmp(type->text, expected->text)!=0) {
return NULL;
}
return expected;
} else if(getNodeType(expected) == getNodeType(type)) { /* primitive types */
return expected;
} else {
return newErrorType(RE_TYPE_ERROR, r);
}
}
示例15: sys_sbrk
static int
sys_sbrk(uint32_t inc)
{
// LAB3: your code sbrk here...
region_alloc(curenv, (void *)(curenv->env_cur_brk + inc), inc);
return curenv->env_cur_brk;
}