/* * initialize scrollwnd internal structure */ static int svInitData (HWND hWnd, PSWDATA pswdata) { scrolled_init (hWnd, &pswdata->scrdata, 0, 0); pswdata->scrdata.move_content = scrollwnd_set_container; pswdata->flags = 0; create_container (hWnd, pswdata); return 0; }
int main(int argc, char *argv[]) { struct lxc_container *c; int ret = 1; if ((c = lxc_container_new(MYNAME, NULL)) == NULL) { fprintf(stderr, "%d: error opening lxc_container %s\n", __LINE__, MYNAME); ret = 1; goto out; } if (c->is_defined(c)) { fprintf(stderr, "%d: %s thought it was defined\n", __LINE__, MYNAME); goto out; } if (create_container()) { fprintf(stderr, "%d: failed to create a container\n", __LINE__); goto out; } if (!c->is_defined(c)) { fprintf(stderr, "%d: %s thought it was not defined\n", __LINE__, MYNAME); goto out; } c->load_config(c, NULL); unlink("/tmp/lxctest1"); if (!c->save_config(c, "/tmp/lxctest1")) { fprintf(stderr, "%d: failed writing config file /tmp/lxctest1\n", __LINE__); goto out; } rename(LXCPATH "/" MYNAME "/config", LXCPATH "/" MYNAME "/config.bak"); if (!c->save_config(c, NULL)) { fprintf(stderr, "%d: failed writing config file\n", __LINE__); goto out; } if (!c->destroy(c)) { fprintf(stderr, "%d: error deleting %s\n", __LINE__, MYNAME); goto out; } if (c->is_defined(c)) { fprintf(stderr, "%d: %s thought it was defined\n", __LINE__, MYNAME); goto out; } fprintf(stderr, "all lxc_container tests passed for %s\n", c->name); ret = 0; out: lxc_container_put(c); exit(ret); }
// --------------------------------------------------------- // CContextbookView::DoActivateL(...) // ?implementation_description // --------------------------------------------------------- // void CContextbookView::DoActivateL( const TVwsViewId& /*aPrevViewId*/,TUid /*aCustomMessageId*/, const TDesC8& /*aCustomMessage*/) { CALLSTACKITEM(_L("CContextbookView::DoActivateL")); if (!iContainer) { iContainer = create_container(); iContainer->SetMopParent(this); iContainer->ConstructL( ClientRect(), book, searchable, title, iLog, iconlist, current_item_index, top_item_index, current_edit_filter); } iContainer->MakeVisible(ETrue); AppUi()->AddToStackL( *this, iContainer ); }
int main(int argc, char **argv) { void *container = create_container(callback, 14); int x = call_callback(container, 2); return x; }
args_container* get_container() { if (container == NULL) create_container(); return container; }
container_manager() {create_container();}
int main(int argc, char *argv[]) { struct lxc_container *c; int ret = 0; const char *s; bool b; char buf[201]; int len; ret = 1; /* test a real container */ c = lxc_container_new(MYNAME, NULL); if (!c) { fprintf(stderr, "%d: error creating lxc_container %s\n", __LINE__, MYNAME); ret = 1; goto out; } if (c->is_defined(c)) { fprintf(stderr, "%d: %s thought it was defined\n", __LINE__, MYNAME); goto out; } ret = create_container(); if (ret) { fprintf(stderr, "%d: failed to create a container\n", __LINE__); goto out; } b = c->is_defined(c); if (!b) { fprintf(stderr, "%d: %s thought it was not defined\n", __LINE__, MYNAME); goto out; } len = c->get_cgroup_item(c, "cpuset.cpus", buf, 200); if (len >= 0) { fprintf(stderr, "%d: %s not running but had cgroup settings\n", __LINE__, MYNAME); goto out; } sprintf(buf, "0"); b = c->set_cgroup_item(c, "cpuset.cpus", buf); if (b) { fprintf(stderr, "%d: %s not running but coudl set cgroup settings\n", __LINE__, MYNAME); goto out; } s = c->state(c); if (!s || strcmp(s, "STOPPED")) { fprintf(stderr, "%d: %s is in state %s, not in STOPPED.\n", __LINE__, c->name, s ? s : "undefined"); goto out; } b = c->load_config(c, NULL); if (!b) { fprintf(stderr, "%d: %s failed to read its config\n", __LINE__, c->name); goto out; } if (!c->set_config_item(c, "lxc.utsname", "bobo")) { fprintf(stderr, "%d: failed setting lxc.utsname\n", __LINE__); goto out; } if (!lxc_container_get(c)) { fprintf(stderr, "%d: failed to get extra ref to container\n", __LINE__); exit(1); } c->want_daemonize(c, true); if (!c->startl(c, 0, NULL)) { fprintf(stderr, "%d: %s failed to start\n", __LINE__, c->name); exit(1); } sleep(3); s = c->state(c); if (!s || strcmp(s, "RUNNING")) { fprintf(stderr, "%d: %s is in state %s, not in RUNNING.\n", __LINE__, c->name, s ? s : "undefined"); goto out; } len = c->get_cgroup_item(c, "cpuset.cpus", buf, 0); if (len <= 0) { fprintf(stderr, "%d: not able to get length of cpuset.cpus (ret %d)\n", __LINE__, len); goto out; } len = c->get_cgroup_item(c, "cpuset.cpus", buf, 200); if (len <= 0 || strncmp(buf, "0", 1)) { fprintf(stderr, "%d: not able to get cpuset.cpus (len %d buf %s)\n", __LINE__, len, buf); goto out; } sprintf(buf, "FROZEN"); b = c->set_cgroup_item(c, "freezer.state", buf); if (!b) { fprintf(stderr, "%d: not able to set freezer.state.\n", __LINE__); goto out; } sprintf(buf, "XXX"); len = c->get_cgroup_item(c, "freezer.state", buf, 200); if (len <= 0 || (strcmp(buf, "FREEZING\n") && strcmp(buf, "FROZEN\n"))) { fprintf(stderr, "%d: not able to get freezer.state (len %d buf %s)\n", __LINE__, len, buf); goto out; } c->set_cgroup_item(c, "freezer.state", "THAWED"); c->stop(c); /* feh - multilib has moved the lxc-init crap */ #if 0 goto ok; ret = system("mkdir -p " LXCPATH "/lxctest1/rootfs//usr/local/libexec/lxc"); if (!ret) ret = system("mkdir -p " LXCPATH "/lxctest1/rootfs/usr/lib/lxc/"); if (!ret) ret = system("cp src/lxc/lxc-init " LXCPATH "/lxctest1/rootfs//usr/local/libexec/lxc"); if (!ret) ret = system("cp src/lxc/liblxc.so " LXCPATH "/lxctest1/rootfs/usr/lib/lxc"); if (!ret) ret = system("cp src/lxc/liblxc.so " LXCPATH "/lxctest1/rootfs/usr/lib/lxc/liblxc.so.0"); if (!ret) ret = system("cp src/lxc/liblxc.so " LXCPATH "/lxctest1/rootfs/usr/lib"); if (!ret) ret = system("mkdir -p " LXCPATH "/lxctest1/rootfs/dev/shm"); if (!ret) ret = system("chroot " LXCPATH "/lxctest1/rootfs apt-get install --no-install-recommends lxc"); if (ret) { fprintf(stderr, "%d: failed to installing lxc-init in container\n", __LINE__); goto out; } // next write out the config file; does it match? if (!c->startl(c, 1, "/bin/hostname", NULL)) { fprintf(stderr, "%d: failed to lxc-execute /bin/hostname\n", __LINE__); goto out; } // auto-check result? ('bobo' is printed on stdout) ok: #endif fprintf(stderr, "all lxc_container tests passed for %s\n", c->name); ret = 0; out: if (c) { c->stop(c); destroy_container(); } lxc_container_put(c); exit(ret); }
void shader::init() { assert(!root); root = create_container(); }
int ssm_build_container_table() { int i, j, k, ret = 0; ssm_node_t *node; ssm_lun_t *disk; ssm_container_t *container; /* * TODO: Use the minimal size of the disk for now. */ ssm_ctn_col_sz = ssm_resource.sr_min_size; ssm_ctn_ncols = ssm_data_nvecs + ssm_parity_nvecs; ssm_ctn_unit_sz = SSM_CTN_UNIT_SIZE_DEFAULT; /* * Initialize disk block usage map for each disk */ for (i = 0; i < ssm_resource.sr_nnodes; i++) { node = ssm_resource.sr_node[i]; for (j = 0; j < node->sn_ndisks; j++) { disk = node->sn_disks[j]; disk->sl_nblocks = disk->sl_size / ssm_ctn_col_sz; disk->sl_blksz = ssm_ctn_col_sz; disk->sl_blockmap = (unsigned char *) malloc(disk->sl_nblocks * sizeof(unsigned char)); if (!disk->sl_blockmap) { fprintf(stderr, "Failed to allocate memory " "for disk block usage map.\n"); return ENOMEM; } for (k = 0; k < disk->sl_nblocks; k++) { disk->sl_blockmap[k] = SSM_BLOCK_FREE; } } } ssm_print_disk_usage(); while (1) { container = create_container(); if (!container) { break; } ssm_print_container(stdout, ssm_ctn_tbl.scb_entries, container); ssm_print_disk_usage(); if (ssm_ctn_tbl.scb_entries == 0) { ssm_ctn_tbl.scb_ctn = (ssm_container_t **) malloc(sizeof(ssm_container_t *)); } else { ssm_ctn_tbl.scb_ctn = (ssm_container_t **) realloc(ssm_ctn_tbl.scb_ctn, (ssm_ctn_tbl.scb_entries + 1) * sizeof(ssm_container_t *)); } if (!ssm_ctn_tbl.scb_ctn) { fprintf(stderr, "Failed to allocate memory for " "the container table.\n"); free_container(container); ret = ENOMEM; break; } ssm_ctn_tbl.scb_ctn[ssm_ctn_tbl.scb_entries++] = container; } return ret; }
/* * When a container buffer is full, we push it into container_queue. */ static void* filter_thread(void *arg) { int enable_rewrite = 1; struct fileRecipeMeta* r = NULL; while (1) { struct chunk* c = sync_queue_pop(rewrite_queue); if (c == NULL) /* backup job finish */ break; /* reconstruct a segment */ struct segment* s = new_segment(); /* segment head */ assert(CHECK_CHUNK(c, CHUNK_SEGMENT_START)); free_chunk(c); c = sync_queue_pop(rewrite_queue); while (!(CHECK_CHUNK(c, CHUNK_SEGMENT_END))) { g_sequence_append(s->chunks, c); if (!CHECK_CHUNK(c, CHUNK_FILE_START) && !CHECK_CHUNK(c, CHUNK_FILE_END)) s->chunk_num++; c = sync_queue_pop(rewrite_queue); } free_chunk(c); /* For self-references in a segment. * If we find an early copy of the chunk in this segment has been rewritten, * the rewrite request for it will be denied to avoid repeat rewriting. */ GHashTable *recently_rewritten_chunks = g_hash_table_new_full(g_int64_hash, g_fingerprint_equal, NULL, free_chunk); GHashTable *recently_unique_chunks = g_hash_table_new_full(g_int64_hash, g_fingerprint_equal, NULL, free_chunk); pthread_mutex_lock(&index_lock.mutex); TIMER_DECLARE(1); TIMER_BEGIN(1); /* This function will check the fragmented chunks * that would be rewritten later. * If we find an early copy of the chunk in earlier segments, * has been rewritten, * the rewrite request for it will be denied. */ index_check_buffer(s); GSequenceIter *iter = g_sequence_get_begin_iter(s->chunks); GSequenceIter *end = g_sequence_get_end_iter(s->chunks); for (; iter != end; iter = g_sequence_iter_next(iter)) { c = g_sequence_get(iter); if (CHECK_CHUNK(c, CHUNK_FILE_START) || CHECK_CHUNK(c, CHUNK_FILE_END)) continue; VERBOSE("Filter phase: %dth chunk in %s container %lld", chunk_num, CHECK_CHUNK(c, CHUNK_OUT_OF_ORDER) ? "out-of-order" : "", c->id); /* Cache-Aware Filter */ if (destor.rewrite_enable_cache_aware && restore_aware_contains(c->id)) { assert(c->id != TEMPORARY_ID); VERBOSE("Filter phase: %dth chunk is cached", chunk_num); SET_CHUNK(c, CHUNK_IN_CACHE); } /* A cfl-switch for rewriting out-of-order chunks. */ if (destor.rewrite_enable_cfl_switch) { double cfl = restore_aware_get_cfl(); if (enable_rewrite && cfl > destor.rewrite_cfl_require) { VERBOSE("Filter phase: Turn OFF the (out-of-order) rewrite switch of %.3f", cfl); enable_rewrite = 0; } else if (!enable_rewrite && cfl < destor.rewrite_cfl_require) { VERBOSE("Filter phase: Turn ON the (out-of-order) rewrite switch of %.3f", cfl); enable_rewrite = 1; } } if(CHECK_CHUNK(c, CHUNK_DUPLICATE) && c->id == TEMPORARY_ID){ struct chunk* ruc = g_hash_table_lookup(recently_unique_chunks, &c->fp); assert(ruc); c->id = ruc->id; } struct chunk* rwc = g_hash_table_lookup(recently_rewritten_chunks, &c->fp); if(rwc){ c->id = rwc->id; SET_CHUNK(c, CHUNK_REWRITE_DENIED); } /* A fragmented chunk will be denied if it has been rewritten recently */ if (!CHECK_CHUNK(c, CHUNK_DUPLICATE) || (!CHECK_CHUNK(c, CHUNK_REWRITE_DENIED) && (CHECK_CHUNK(c, CHUNK_SPARSE) || (enable_rewrite && CHECK_CHUNK(c, CHUNK_OUT_OF_ORDER) && !CHECK_CHUNK(c, CHUNK_IN_CACHE))))) { /* * If the chunk is unique, or be fragmented and not denied, * we write it to a container. * Fragmented indicates: sparse, or out of order and not in cache, */ if (storage_buffer.container_buffer == NULL){ storage_buffer.container_buffer = create_container(); if(destor.index_category[1] == INDEX_CATEGORY_PHYSICAL_LOCALITY) storage_buffer.chunks = g_sequence_new(free_chunk); } if (container_overflow(storage_buffer.container_buffer, c->size)) { if(destor.index_category[1] == INDEX_CATEGORY_PHYSICAL_LOCALITY){ /* * TO-DO * Update_index for physical locality */ GHashTable *features = sampling(storage_buffer.chunks, g_sequence_get_length(storage_buffer.chunks)); index_update(features, get_container_id(storage_buffer.container_buffer)); g_hash_table_destroy(features); g_sequence_free(storage_buffer.chunks); storage_buffer.chunks = g_sequence_new(free_chunk); } TIMER_END(1, jcr.filter_time); write_container_async(storage_buffer.container_buffer); TIMER_BEGIN(1); storage_buffer.container_buffer = create_container(); } if(add_chunk_to_container(storage_buffer.container_buffer, c)){ struct chunk* wc = new_chunk(0); memcpy(&wc->fp, &c->fp, sizeof(fingerprint)); wc->id = c->id; if (!CHECK_CHUNK(c, CHUNK_DUPLICATE)) { jcr.unique_chunk_num++; jcr.unique_data_size += c->size; g_hash_table_insert(recently_unique_chunks, &wc->fp, wc); VERBOSE("Filter phase: %dth chunk is recently unique, size %d", chunk_num, g_hash_table_size(recently_unique_chunks)); } else { jcr.rewritten_chunk_num++; jcr.rewritten_chunk_size += c->size; g_hash_table_insert(recently_rewritten_chunks, &wc->fp, wc); } if(destor.index_category[1] == INDEX_CATEGORY_PHYSICAL_LOCALITY){ struct chunk* ck = new_chunk(0); memcpy(&ck->fp, &c->fp, sizeof(fingerprint)); g_sequence_append(storage_buffer.chunks, ck); } VERBOSE("Filter phase: Write %dth chunk to container %lld", chunk_num, c->id); }else{ VERBOSE("Filter phase: container %lld already has this chunk", c->id); assert(destor.index_category[0] != INDEX_CATEGORY_EXACT || destor.rewrite_algorithm[0]!=REWRITE_NO); } }else{ if(CHECK_CHUNK(c, CHUNK_REWRITE_DENIED)){ VERBOSE("Filter phase: %lldth fragmented chunk is denied", chunk_num); }else if (CHECK_CHUNK(c, CHUNK_OUT_OF_ORDER)) { VERBOSE("Filter phase: %lldth chunk in out-of-order container %lld is already cached", chunk_num, c->id); } } assert(c->id != TEMPORARY_ID); /* Collect historical information. */ har_monitor_update(c->id, c->size); /* Restore-aware */ restore_aware_update(c->id, c->size); chunk_num++; } int full = index_update_buffer(s); /* Write a SEGMENT_BEGIN */ segmentid sid = append_segment_flag(jcr.bv, CHUNK_SEGMENT_START, s->chunk_num); /* Write recipe */ iter = g_sequence_get_begin_iter(s->chunks); end = g_sequence_get_end_iter(s->chunks); for (; iter != end; iter = g_sequence_iter_next(iter)) { c = g_sequence_get(iter); if(r == NULL){ assert(CHECK_CHUNK(c,CHUNK_FILE_START)); r = new_file_recipe_meta(c->data); }else if(!CHECK_CHUNK(c,CHUNK_FILE_END)){ struct chunkPointer cp; cp.id = c->id; assert(cp.id>=0); memcpy(&cp.fp, &c->fp, sizeof(fingerprint)); cp.size = c->size; append_n_chunk_pointers(jcr.bv, &cp ,1); r->chunknum++; r->filesize += c->size; jcr.chunk_num++; jcr.data_size += c->size; }else{ assert(CHECK_CHUNK(c,CHUNK_FILE_END)); append_file_recipe_meta(jcr.bv, r); free_file_recipe_meta(r); r = NULL; jcr.file_num++; } } /* Write a SEGMENT_END */ append_segment_flag(jcr.bv, CHUNK_SEGMENT_END, 0); if(destor.index_category[1] == INDEX_CATEGORY_LOGICAL_LOCALITY){ /* * TO-DO * Update_index for logical locality */ s->features = sampling(s->chunks, s->chunk_num); if(destor.index_category[0] == INDEX_CATEGORY_EXACT){ /* * For exact deduplication, * unique fingerprints are inserted. */ VERBOSE("Filter phase: add %d unique fingerprints to %d features", g_hash_table_size(recently_unique_chunks), g_hash_table_size(s->features)); GHashTableIter iter; gpointer key, value; g_hash_table_iter_init(&iter, recently_unique_chunks); while(g_hash_table_iter_next(&iter, &key, &value)){ struct chunk* uc = value; fingerprint *ft = malloc(sizeof(fingerprint)); memcpy(ft, &uc->fp, sizeof(fingerprint)); g_hash_table_insert(s->features, ft, NULL); } /* * OPTION: * It is still an open problem whether we need to update * rewritten fingerprints. * It would increase index update overhead, while the benefit * remains unclear. * More experiments are required. */ VERBOSE("Filter phase: add %d rewritten fingerprints to %d features", g_hash_table_size(recently_rewritten_chunks), g_hash_table_size(s->features)); g_hash_table_iter_init(&iter, recently_rewritten_chunks); while(g_hash_table_iter_next(&iter, &key, &value)){ struct chunk* uc = value; fingerprint *ft = malloc(sizeof(fingerprint)); memcpy(ft, &uc->fp, sizeof(fingerprint)); g_hash_table_insert(s->features, ft, NULL); } } index_update(s->features, sid); } free_segment(s); if(index_lock.wait_threshold > 0 && full == 0){ pthread_cond_broadcast(&index_lock.cond); } TIMER_END(1, jcr.filter_time); pthread_mutex_unlock(&index_lock.mutex); g_hash_table_destroy(recently_rewritten_chunks); g_hash_table_destroy(recently_unique_chunks); } if (storage_buffer.container_buffer && !container_empty(storage_buffer.container_buffer)){ if(destor.index_category[1] == INDEX_CATEGORY_PHYSICAL_LOCALITY){ /* * TO-DO * Update_index for physical locality */ GHashTable *features = sampling(storage_buffer.chunks, g_sequence_get_length(storage_buffer.chunks)); index_update(features, get_container_id(storage_buffer.container_buffer)); g_hash_table_destroy(features); g_sequence_free(storage_buffer.chunks); } write_container_async(storage_buffer.container_buffer); } /* All files done */ jcr.status = JCR_STATUS_DONE; return NULL; }
int main(int argc, char** argv) { void *container = create_container(0, 14); return 14; }