void FileAccess::store_64(uint64_t p_dest) { uint32_t a, b; a = p_dest & 0xFFFFFFFF; b = p_dest >> 32; if (endian_swap) { SWAP(a, b); } store_32(a); store_32(b); }
static void b1(void *obj) { thrd_t t3, t4; int i = 7; int r = atomic_load_explicit(&x, memory_order_acquire); printf("r = %d\n", r); store_32(&var, 2); thrd_create(&t3, (thrd_start_t)&a, &i); thrd_create(&t4, (thrd_start_t)&b2, NULL); thrd_join(t3); thrd_join(t4); }
static void a(void *obj) { int i; for(i = 0; i < 2; i++) { if ((i % 2) == 0) { read_lock(&mylock); load_32(&shareddata); read_unlock(&mylock); } else { write_lock(&mylock); store_32(&shareddata,(unsigned int)i); write_unlock(&mylock); } } }
/* Search this thread's free list for a "new" node */ static unsigned int new_node() { int i; int t = get_thread_num(); for (i = 0; i < MAX_FREELIST; i++) { unsigned int node = load_32(&free_lists[t][i]); if (node) { store_32(&free_lists[t][i], 0); return node; } } /* free_list is empty? */ MODEL_ASSERT(0); return 0; }
void enqueue(queue_t *q, unsigned int val) { std::string str1("enqueue"); //ANNOTATION function_call(str1, INVOCATION, val); //ANNOTATION int success = 0; unsigned int node; pointer tail; pointer next; pointer tmp; node = new_node(); store_32(&q->nodes[node].value, val); tmp = atomic_load_explicit(&q->nodes[node].next, memory_order_seq_cst); set_ptr(&tmp, 0); // NULL atomic_store_explicit(&q->nodes[node].next, tmp, memory_order_seq_cst); while (!success) { tail = atomic_load_explicit(&q->tail, memory_order_seq_cst); next = atomic_load_explicit(&q->nodes[get_ptr(tail)].next, memory_order_seq_cst); if (tail == atomic_load_explicit(&q->tail, memory_order_seq_cst)) { /* Check for uninitialized 'next' */ MODEL_ASSERT(get_ptr(next) != POISON_IDX); if (get_ptr(next) == 0) { // == NULL pointer value = MAKE_POINTER(node, get_count(next) + 1); success = atomic_compare_exchange_strong_explicit(&q->nodes[get_ptr(tail)].next, &next, value, memory_order_seq_cst, memory_order_seq_cst); } if (!success) { unsigned int ptr = get_ptr(atomic_load_explicit(&q->nodes[get_ptr(tail)].next, memory_order_seq_cst)); pointer value = MAKE_POINTER(ptr, get_count(tail) + 1); atomic_compare_exchange_strong_explicit(&q->tail, &tail, value, memory_order_seq_cst, memory_order_seq_cst); thrd_yield(); } } } atomic_compare_exchange_strong_explicit(&q->tail, &tail, MAKE_POINTER(node, get_count(tail) + 1), memory_order_seq_cst, memory_order_seq_cst); function_call(str1, RESPONSE); //ANNOTATION }
void _File::store_var(const Variant& p_var) { ERR_FAIL_COND(!f); int len; Error err = encode_variant(p_var,NULL,len); ERR_FAIL_COND( err != OK ); DVector<uint8_t> buff; buff.resize(len); DVector<uint8_t>::Write w = buff.write(); err = encode_variant(p_var,&w[0],len); ERR_FAIL_COND( err != OK ); w=DVector<uint8_t>::Write(); store_32(len); store_buffer(buff); }
/* Place this node index back on this thread's free list */ static void reclaim(unsigned int node) { int i; int t = get_thread_num(); /* Don't reclaim NULL node */ MODEL_ASSERT(node); for (i = 0; i < MAX_FREELIST; i++) { /* Should never race with our own thread here */ unsigned int idx = load_32(&free_lists[t][i]); /* Found empty spot in free list */ if (idx == 0) { store_32(&free_lists[t][i], node); return; } } /* free list is full? */ MODEL_ASSERT(0); }
static void a(void *obj) { store_32(&var, 1); atomic_store_explicit(&x, 1, memory_order_release); atomic_store_explicit(&x, 42, memory_order_relaxed); }
Error EditorExportPlatformWindows::export_project(const String& p_path, bool p_debug, int p_flags) { Error err = EditorExportPlatformPC::export_project(p_path, p_debug, p_flags); if(err != OK) { return err; } EditorProgress ep("editexe","Edit EXE File",102); ep.step("Create ico file..",0); DVector<uint8_t> icon_content; if (this->icon_ico!="" && this->icon_ico.ends_with(".ico")) { FileAccess *f = FileAccess::open(this->icon_ico,FileAccess::READ); if (f) { icon_content.resize(f->get_len()); DVector<uint8_t>::Write write = icon_content.write(); f->get_buffer(write.ptr(),icon_content.size()); f->close(); memdelete(f); } } else if (this->icon_png!="" && this->icon_png.ends_with(".png") && (icon16 || icon32 || icon48 || icon64 || icon128 || icon256)) { #ifdef PNG_ENABLED Vector<Image> pngs; Image png; Error err_png = png.load(this->icon_png); if (err_png==OK && !png.empty()) { if(icon256) { Image icon_256(png); if(!(png.get_height()==256 && png.get_width()==256)) icon_256.resize(256,256); pngs.push_back(icon_256); } if(icon128) { Image icon_128(png); if(!(png.get_height()==128 && png.get_width()==128)) icon_128.resize(128,128); pngs.push_back(icon_128); } if(icon64) { Image icon_64(png); if(!(png.get_height()==64 && png.get_width()==64)) icon_64.resize(64,64); pngs.push_back(icon_64); } if(icon48) { Image icon_48(png); if(!(png.get_height()==48 && png.get_width()==48)) icon_48.resize(48,48); pngs.push_back(icon_48); } if(icon32) { Image icon_32(png); if(!(png.get_height()==32 && png.get_width()==32)) icon_32.resize(32,32); pngs.push_back(icon_32); } if(icon16) { Image icon_16(png); if(!(png.get_height()==16 && png.get_width()==16)) icon_16.resize(16,16); pngs.push_back(icon_16); } // create icon according to https://www.daubnet.com/en/file-format-ico store_16(icon_content,0); //Reserved store_16(icon_content,1); //Type store_16(icon_content,pngs.size()); //Count int offset = 6+pngs.size()*16; //List of bitmaps for(int i=0;i<pngs.size();i++) { int w = pngs[i].get_width(); int h = pngs[i].get_height(); icon_content.push_back(w<256?w:0); //width icon_content.push_back(h<256?h:0); //height icon_content.push_back(0); //ColorCount = 0 icon_content.push_back(0); //Reserved store_16(icon_content,1); //Planes store_16(icon_content,32); //BitCount (bit per pixel) int size = 40 + (w * h * 4) + (w * h / 8); store_32(icon_content,size); //Size of (InfoHeader + ANDbitmap + XORbitmap) store_32(icon_content,offset); //FileOffset offset += size; } //Write bmp files. for(int i=0;i<pngs.size();i++) { int w = pngs[i].get_width(); int h = pngs[i].get_height(); store_32(icon_content,40); //Size of InfoHeader structure = 40 store_32(icon_content,w); //Width store_32(icon_content,h*2); //Height store_16(icon_content,1); //Planes store_16(icon_content,32); //BitCount store_32(icon_content,0); //Compression store_32(icon_content,w*h*4); //ImageSize = Size of Image in Bytes store_32(icon_content,0); //unused = 0 store_32(icon_content,0); //unused = 0 store_32(icon_content,0); //unused = 0 store_32(icon_content,0); //unused = 0 //XORBitmap for(int y=h-1;y>=0;y--) { for(int x=0;x<w;x++) { store_32(icon_content,pngs[i].get_pixel(x,y).to_32()); } } //ANDBitmap for(int m=0;m<(w * h / 8);m+=4) store_32(icon_content,0x00000000); // Add empty ANDBitmap , TODO create full ANDBitmap Structure if need. } } #endif } ep.step("Add rsrc..",50); String basename = Globals::get_singleton()->get("application/name"); product_name=product_name.replace("$genname",basename); String godot_version; if(set_godot_version) godot_version = String( VERSION_MKSTRING ); String ret = pe_bliss_add_resrc(p_path.utf8(), version_major, version_minor, company_name, file_description, legal_copyright, version_text, product_name, godot_version, icon_content); if (ret.empty()) { return OK; } else { EditorNode::add_io_error(ret); return ERR_FILE_CANT_WRITE; } }
void FileAccess::store_pascal_string(const String &p_string) { CharString cs = p_string.utf8(); store_32(cs.length()); store_buffer((uint8_t *)&cs[0], cs.length()); };
void FileAccess::store_float(float p_dest) { MarshallFloat m; m.f = p_dest; store_32(m.i); };
static void b2(void *obj) { int r = atomic_load_explicit(&x, memory_order_acquire); printf("r = %d\n", r); store_32(&var, 3); }