Exemplo n.º 1
0
IndexSet::IndexSet (IndexSet *set) {
#ifdef ASSERT
  _serial_number = _serial_count++;
  set->check_watch("copied", _serial_number);
  check_watch("initialized by copy", set->_serial_number);
  _max_elements = set->_max_elements;
#endif
  _count = set->_count;
  _max_blocks = set->_max_blocks;
  if (_max_blocks <= preallocated_block_list_size) {
    _blocks = _preallocated_block_list;
  } else {
    _blocks =
      (IndexSet::BitBlock**) arena()->Amalloc_4(sizeof(IndexSet::BitBlock**) * _max_blocks);
  }
  for (uint i = 0; i < _max_blocks; i++) {
    BitBlock *block = set->_blocks[i];
    if (block == &_empty_block) {
      set_block(i, &_empty_block);
    } else {
      BitBlock *new_block = alloc_block();
      memcpy(new_block->words(), block->words(), sizeof(uint32) * words_per_block);
      set_block(i, new_block);
    }
  }
}
Exemplo n.º 2
0
void Block__parent(VM* vm)
{
    Block* block = as_block(vm->input(0));
    if (block == NULL) {
        set_block(vm->output(), NULL);
        return;
    }

    set_block(vm->output(), get_parent_block(block));
}
int single_file_processor(char *filename, struct stat *st)
{
	struct file_header hdr;
	int fd;
	mode_t mode = st->st_mode;

	hdr.namelen = strlen(filename) + 1;
	hdr.mode = mode;
	hdr.atime = st->st_atim.tv_sec;
	hdr.atime_nsec = st->st_atim.tv_nsec;
	hdr.mtime = st->st_mtim.tv_sec;
	hdr.mtime_nsec = st->st_mtim.tv_nsec;

	if (S_ISREG(mode)) {
		int ret;
		fd = open(filename, O_RDONLY);
		if (fd < 0)
			gui_fatal("open %s", filename);
		hdr.filelen = st->st_size;
		write_headers(&hdr, filename);
		ret = copy_file(1, fd, hdr.filelen, &crc32_sum);
		if (ret != COPY_FILE_OK) {
			if (ret != COPY_FILE_WRITE_ERROR)
				gui_fatal("Copying file %s: %s", filename,
					  copy_file_status_to_str(ret));
			else {
				set_block(0);
				wait_for_result();
				exit(1);
			}
		}
		close(fd);
	}
	if (S_ISDIR(mode)) {
		hdr.filelen = 0;
		write_headers(&hdr, filename);
	}
	if (S_ISLNK(mode) && !ignore_symlinks) {
		char name[st->st_size + 1];
		if (readlink(filename, name, sizeof(name)) != st->st_size)
			gui_fatal("readlink %s", filename);
		hdr.filelen = st->st_size + 1;
		write_headers(&hdr, filename);
		if (!write_all_with_crc(1, name, st->st_size + 1)) {
			set_block(0);
			wait_for_result();
			exit(1);
		}
	}
	// check for possible error from qfile-unpacker
	wait_for_result();
	return 0;
}
Exemplo n.º 4
0
void Term__contents(VM* vm)
{
    Term* t = as_term_ref(vm->input(0));
    if (t == NULL)
        return vm->throw_str("NULL term");
    set_block(vm->output(), t->nestedContents);
}
Exemplo n.º 5
0
static void	*find_free_space(int bsize, size_t size, void **map)
{
	t_header	*header;
	t_block		*block;

	header = (t_header *)*map;
	while (header)
	{
		block = (t_block *)header->first;
		while (block && (void *)block + block->next <= header->end)
		{
			if (block->flag == FREE && block->next >= size)
				return (set_block(bsize, size, block, header->end));
			if ((void *)block + block->next == header->end)
				block = NULL;
			else
				block = (void *)block + block->next;
		}
		if (!header->next)
		{
			if (new_map(bsize, map, header) < 0)
				return (NULL);
		}
		else
			header = header->next;
	}
	return (NULL);
}
Exemplo n.º 6
0
/** Empty (ie zero) the buffer.
 */
void
AudioBuffer::clear()
{
	assert(nframes() != 0);
	set_block(0, 0, nframes() - 1);
	_state = OK;
}
Exemplo n.º 7
0
void
AudioBuffer::copy(Context& context, const Buffer* src)
{
	const AudioBuffer* src_abuf = dynamic_cast<const AudioBuffer*>(src);
	if (!src_abuf) {
		clear();
		return;
	}

	// Control => Control
	if (src_abuf->is_control() == is_control()) {
		ObjectBuffer::copy(context, src);

	// Audio => Audio
	} else if (!src_abuf->is_control() && !is_control()) {
		copy(src_abuf->data(),
				context.offset(), context.offset() + context.nframes() - 1);

	// Audio => Control
	} else if (!src_abuf->is_control() && is_control()) {
		data()[0] = src_abuf->data()[context.offset()];

	// Control => Audio
	} else if (src_abuf->is_control() && !is_control()) {
		data()[context.offset()] = src_abuf->data()[0];

	// Control => Audio or Audio => Control
	} else {
		set_block(src_abuf->data()[0], 0, nframes());
	}
}
Exemplo n.º 8
0
void change_event_make_append(Value* event, Block* target, Value* expression)
{
    change_event_set_blank(event, 1);
    set_symbol(change_event_type(event), s_ChangeAppend);
    set_block(change_event_target(event), target);
    set_value(change_event_field(event, 0), expression);
}
void recv_loop(int acc){
  ssize_t total, len;

  if(g_mode == 'n'){
    set_block(acc, 0);
  }

  for(total = 0;;){
    if((len = recv(acc, g_buf, sizeof(g_buf), 0)) == -1){
      if(errno == EAGAIN){
        fprintf(stderr, ".");
        continue;
      } else {
        perror("recv");
        break;
      }
    }
    if(len == 0){
      fprintf(stderr, "recv:EOF\n");
      break;
    }
    fprintf(stderr, "recv:%d\n", (int) len);
    total += len;
  }
  fprintf(stderr, "total:%d\n", (int) total);
}
Exemplo n.º 10
0
void
block_write(const char *buf, int n)
{
    set_block();
    if (write(psfd, buf, n) != n)
        log_sys("block_write: write error");
}
Exemplo n.º 11
0
void Term__parent(VM* vm)
{
    Term* t = as_term_ref(vm->input(0));
    if (t == NULL)
        return vm->throw_str("NULL term");
    set_block(vm->output(), t->owningBlock);
}
Exemplo n.º 12
0
int main() {                                                    /*------------------------------main function------------------------------*/
	setcursortype(NOCURSOR);
	create_world();
	int i;
	srand((unsigned)time(NULL));
	for(;;) {
		ModTick();
		check_wall();//checck_crash
		set_block();
		new_block();
		check_move();//move_block();
		i++;
		Sleep(1);
		if (i>399) {
			i=0;
			move_block(DOWN);
		}
		gotoxy(0,0);
		printf("%3d",b_x);
		gotoxy(0,1);
		printf("%3d",b_y);
		gotoxy(0,3);
		printf("%3d",b_type);
	}


	gotoxy(0,0);
	getch();
}                                                               /*------------------------------main function------------------------------*/
Exemplo n.º 13
0
void migrate_value(Value* value, Migration* migration)
{
    if (is_ref(value)) {
        set_term_ref(value, migrate_term_pointer(as_term_ref(value), migration));
        
    } else if (is_block(value)) {
        set_block(value, migrate_block_pointer(as_block(value), migration));
    } else if (is_list_based(value)) {
        migrate_list_value(value, migration);

    } else if (is_hashtable(value)) {
        Value oldHashtable;
        move(value, &oldHashtable);

        set_hashtable(value);
        Value* hashtable = value;

        for (int i=0; i < hashtable_slot_count(&oldHashtable); i++) {
            Value* oldKey = hashtable_key_by_index(&oldHashtable, i);
            if (oldKey == NULL || is_null(oldKey))
                continue;

            Value* oldValue = hashtable_value_by_index(&oldHashtable, i);

            Value key;
            copy(oldKey, &key);
            migrate_value(&key, migration);
            Value* newValue = hashtable_insert(hashtable, &key);
            copy(oldValue, newValue);
            migrate_value(newValue, migration);
        }
    }
}
Exemplo n.º 14
0
void Term__function(VM* vm)
{
    Term* t = as_term_ref(vm->input(0));
    if (t == NULL)
        return vm->throw_str("NULL term");
    set_block(vm->output(), term_function(t));
}
Exemplo n.º 15
0
void SLHA_io::set_block_imag(const std::string& name,
                             const Eigen::MatrixBase<Derived>& matrix,
                             const std::string& symbol, double scale)
{
   std::ostringstream ss;
   ss << "Block " << name;
   if (scale != 0.)
      ss << " Q= " << FORMAT_SCALE(scale);
   ss << '\n';

   const int rows = matrix.rows();
   const int cols = matrix.cols();
   for (int i = 1; i <= rows; ++i) {
      if (cols == 1) {
         ss << boost::format(vector_formatter) % i % Im(matrix(i-1,0))
            % ("Im(" + symbol + "(" + ToString(i) + "))");
      } else {
         for (int k = 1; k <= cols; ++k) {
            ss << boost::format(mixing_matrix_formatter) % i % k % Im(matrix(i-1,k-1))
               % ("Im(" + symbol + "(" + ToString(i) + "," + ToString(k) + "))");
         }
      }
   }

   set_block(ss);
}
Exemplo n.º 16
0
void VoxelMap::set_voxel(int value, Vector3i pos, unsigned int c) {
    Vector3i bpos = voxel_to_block(pos);
    VoxelBlock * block = get_block(pos);
    if (block == NULL) {
        set_block(bpos, VoxelBlock::create(*this, bpos));
    }
    block->voxels->set_voxel(value, pos - block_to_voxel(bpos), c);
}
Exemplo n.º 17
0
void write_headers(struct file_header *hdr, char *filename)
{
	if (!write_all_with_crc(1, hdr, sizeof(*hdr))
	    || !write_all_with_crc(1, filename, hdr->namelen)) {
		set_block(0);
		wait_for_result();
		exit(1);
	}
}
Exemplo n.º 18
0
void IndexSet::free_block(uint i) {
  debug_only(check_watch("free block", i));
  assert(i < _max_blocks, "block index too large");
  BitBlock *block = _blocks[i];
  assert(block != &_empty_block, "cannot free the empty block");
  block->set_next((IndexSet::BitBlock*)Compile::current()->indexSet_free_block_list());
  Compile::current()->set_indexSet_free_block_list(block);
  set_block(i,&_empty_block);
}
void LIR_OopMapGenerator::iterate_one(BlockBegin* block) {
#ifndef PRODUCT
  if (TraceLIROopMaps) {
    tty->print_cr("Iterating through block %d", block->block_id());
  }
#endif

  set_block(block);
  block->set(BlockBegin::lir_oop_map_gen_reachable_flag);

  int i;

  if (!is_caching_change_block(block)) {
    LIR_OpVisitState state;
    LIR_OpList* inst = block->lir()->instructions_list();
    int length = inst->length();
    for (i = 0; i < length; i++) {
      LIR_Op* op = inst->at(i);
      LIR_Code code = op->code();

      state.visit(op);
      for (int j = 0; j < state.info_count(); j++) {
        process_info(state.info_at(j));
      }

      if (code == lir_volatile_move ||
          code == lir_move) {
        process_move(op);
      }
    }
  }

  // Process successors
  if (block->end() != _base) {
    for (i = 0; i < block->end()->number_of_sux(); i++) {
      merge_state(block->end()->sux_at(i));
    }
  } else {
    // Do not traverse OSR entry point of the base
    merge_state(_base->std_entry());
  }

  set_block(NULL);
}
Exemplo n.º 20
0
/* The block routine for a compression buffer.  */
static int
compress_buffer_block (void *closure, bool block)
{
    struct compress_buffer *cb = closure;

    if (block)
	return set_block (cb->buf);
    else
	return set_nonblock (cb->buf);
}
Exemplo n.º 21
0
/* The block function for a log buffer.  */
static int
log_buffer_block (void *closure, bool block)
{
    struct log_buffer *lb = closure;

    if (block)
	return set_block (lb->buf);
    else
	return set_nonblock (lb->buf);
}
Exemplo n.º 22
0
int listen_to(const char * ip,int port, struct sockaddr_in* addr, int is_block)
{
	int res;

	int fd = create_socket();
	if (fd < 0) 
    {
        fprintf(stderr,"create socket failed!\n");
		return -1;
	}

    int result = 0;
    if (is_block)
    {
        result = set_block(fd);
    }
    else
    {
        result = set_nonblock(fd);
    }

    if (result==-1)
    {
        fprintf(stderr,"set block failed!\n");
        return -1;
    }

	res = set_reuse(fd);
	if (res < 0) 
    {
        fprintf(stderr,"set reuse failed!\n");
		close_socket(fd);
		return -1;
	}

	make_address(addr, ip, port);

	res = bind(fd, (const struct sockaddr*)addr, (socklen_t)sizeof(struct sockaddr_in));
	if ( res < 0) 
    {
        fprintf(stderr,"bind failed!\n");
		close_socket(fd);
		return -1;
    }

	res = listen(fd, SOMAXCONN);
    if ( res < 0) 
    {
        fprintf(stderr,"listen failed!\n");
		close_socket(fd);
		return -1;
    }

	return fd;
}
/* Create a new block object (gdb.Block) that encapsulates the struct
   block object from GDB.  */
PyObject *
block_to_block_object (struct block *block, struct objfile *objfile)
{
  block_object *block_obj;

  block_obj = PyObject_New (block_object, &block_object_type);
  if (block_obj)
    set_block (block_obj, block, objfile);

  return (PyObject *) block_obj;
}
Exemplo n.º 24
0
void VoxelMap::set_block_buffer(Vector3i bpos, Ref<VoxelBuffer> buffer) {
    ERR_FAIL_COND(buffer.is_null());
    VoxelBlock * block = get_block(bpos);
    if (block == NULL) {
        block = VoxelBlock::create(*this, bpos, *buffer);
        set_block(bpos, block);
    }
    else {
        block->voxels = buffer;
    }
}
Exemplo n.º 25
0
/* The block function for a multi-source buffer.  */
static int
ms_buffer_block (void *closure, bool block)
{
    struct ms_buffer *mb = closure;

    mb->block = block;
    if (block)
	return set_block (mb->cur);
    else
	return set_nonblock (mb->cur);
}
Exemplo n.º 26
0
int overlay_mdp_recv(overlay_mdp_frame *mdp, int port, int *ttl) 
{
  char mdp_socket_name[101];
  unsigned char recvaddrbuffer[1024];
  struct sockaddr *recvaddr=(struct sockaddr *)recvaddrbuffer;
  unsigned int recvaddrlen=sizeof(recvaddrbuffer);
  struct sockaddr_un *recvaddr_un;
  
  if (!FORM_SERVAL_INSTANCE_PATH(mdp_socket_name, "mdp.socket"))
    return WHY("Could not find mdp socket");
  mdp->packetTypeAndFlags=0;
  
  /* Check if reply available */
  set_nonblock(mdp_client_socket);
  ssize_t len = recvwithttl(mdp_client_socket,(unsigned char *)mdp, sizeof(overlay_mdp_frame),ttl,recvaddr,&recvaddrlen);
  set_block(mdp_client_socket);
  
  recvaddr_un=(struct sockaddr_un *)recvaddr;
  /* Null terminate received address so that the stat() call below can succeed */
  if (recvaddrlen<1024) recvaddrbuffer[recvaddrlen]=0;
  if (len>0) {
    /* Make sure recvaddr matches who we sent it to */
    if (strncmp(mdp_socket_name, recvaddr_un->sun_path, sizeof(recvaddr_un->sun_path))) {
      /* Okay, reply was PROBABLY not from the server, but on OSX if the path
       has a symlink in it, it is resolved in the reply path, but might not
       be in the request path (mdp_socket_name), thus we need to stat() and
       compare inode numbers etc */
      struct stat sb1,sb2;
      if (stat(mdp_socket_name,&sb1)) return WHY("stat(mdp_socket_name) failed, so could not verify that reply came from MDP server");
      if (stat(recvaddr_un->sun_path,&sb2)) return WHY("stat(ra->sun_path) failed, so could not verify that reply came from MDP server");
      if ((sb1.st_ino!=sb2.st_ino)||(sb1.st_dev!=sb2.st_dev))
	return WHY("Reply did not come from server");
    }
    
    // silently drop incoming packets for the wrong port number
    if (port>0 && port != mdp->in.dst.port){
      WARNF("Ignoring packet for port %d",mdp->in.dst.port);
      return -1;
    }
    
    int expected_len = overlay_mdp_relevant_bytes(mdp);
    
    if (len < expected_len){
      return WHYF("Expected packet length of %d, received only %lld bytes", expected_len, (long long) len);
    }
    
    /* Valid packet received */
    return 0;
  } else 
  /* no packet received */
    return -1;
  
}
Exemplo n.º 27
0
    CFGBlock* add_block(int ip, bool loop=false) {
      CFGBlock* blk = find_block(ip);
      if(blk) return blk;

      blk = new CFGBlock(ip, loop);

      // Inherit the current exception handler
      blk->set_exception_handler(current_->exception_handler());

      set_block(ip, blk);
      return blk;
    }
Exemplo n.º 28
0
void notify_end_and_wait_for_result()
{
	struct file_header end_hdr;

	/* nofity end of transfer */
	memset(&end_hdr, 0, sizeof(end_hdr));
	end_hdr.namelen = 0;
	end_hdr.filelen = 0;
	write_all_with_crc(1, &end_hdr, sizeof(end_hdr));

	set_block(0);
	wait_for_result();
}
Exemplo n.º 29
0
static void do_exit(int code)
{
    int status;
    /* restore flags, as we may have not the only copy of this file descriptor
     */
    if (local_stdin_fd != -1)
        set_block(local_stdin_fd);
    close(local_stdin_fd);
    close(local_stdout_fd);
    // sever communication lines; wait for child, if any
    // so that qrexec-daemon can count (recursively) spawned processes correctly
    waitpid(-1, &status, 0);
    exit(code);
}
Exemplo n.º 30
0
void draw_hind_virtual_cockpit_ort_view (int x_min, int x_max)
{
	float
		fov;

	eo_params*
		eo;

	target_acquisition_systems
		system;

	rgb_colour
		black;

	int
		damaged = FALSE;

	if (eo_sensor == TARGET_ACQUISITION_SYSTEM_FLIR)
	{
		eo = &hind_flir;
		system = TARGET_ACQUISITION_SYSTEM_FLIR;
		damaged = hind_damage.flir;
	}
	else
	{
		eo = &hind_llltv;
		system = TARGET_ACQUISITION_SYSTEM_LLLTV;
		damaged = hind_damage.llltv;
	}

	black.r = 0;
	black.g = 0;
	black.b = 0;
	black.a = 255;

	// clear background, since we won't be drawing the 3D view over the entire screen
	set_block(0, 0, full_screen_x_max, full_screen_y_max, black);

	if (!damaged)
	{
		fov = rad(get_eo_sensor_fov(eo, system));

		set_eo_view_params(system, x_min, full_screen_y_min, x_max, full_screen_y_max, fov, fov);

		draw_eo_3d_scene = TRUE;
		draw_main_3d_scene (&eo_vp);
		draw_eo_3d_scene = FALSE;
	}
}