Ejemplo n.º 1
0
Archivo: cont.c Proyecto: ayumin/ruby
static rb_context_t *
cont_new(VALUE klass)
{
    rb_context_t *cont;
    volatile VALUE contval;
    rb_thread_t *th = GET_THREAD();

    THREAD_MUST_BE_RUNNING(th);
    contval = TypedData_Make_Struct(klass, rb_context_t, &cont_data_type, cont);
    cont->self = contval;
    cont_init(cont, th);
    return cont;
}
Ejemplo n.º 2
0
static VALUE
xthread_monitor_cond_alloc(VALUE klass)
{
  VALUE volatile obj;
  xthread_monitor_cond_t *cv;

  obj = TypedData_Make_Struct(klass,
			      xthread_monitor_cond_t, &xthread_monitor_cond_data_type, cv);
  
  cv->monitor = Qnil;
  cv->cond = rb_xthread_cond_new();
  return obj;
}
Ejemplo n.º 3
0
static VALUE
thread_alloc(VALUE klass)
{
    VALUE volatile obj;
#ifdef USE_THREAD_RECYCLE
    rb_thread_t *th = thread_recycle_struct();
    obj = TypedData_Wrap_Struct(klass, &thread_data_type, th);
#else
    rb_thread_t *th;
    obj = TypedData_Make_Struct(klass, rb_thread_t, &thread_data_type, th);
#endif
    return obj;
}
Ejemplo n.º 4
0
static VALUE
sysvmq_alloc(VALUE klass)
{
  sysvmq_t* sysv;
  VALUE obj = TypedData_Make_Struct(klass, sysvmq_t, &sysvmq_type, sysv);

  sysv->key         = 0;
  sysv->id          = -1;
  sysv->buffer_size = 0;
  sysv->msgbuf      = NULL;

  return obj;
}
Ejemplo n.º 5
0
static VALUE
fairy_string_buffer_alloc(VALUE klass)
{
  VALUE volatile obj;
  fairy_string_buffer_t *sb;

  obj = TypedData_Make_Struct(klass, fairy_string_buffer_t, &fairy_string_buffer_data_type, sb);

  sb->size = 0;
  sb->string_sizes = Qnil;
  sb->buffer = Qnil;

  return obj;
}
Ejemplo n.º 6
0
Archivo: fifo.c Proyecto: keiju/xthread
static VALUE
xthread_fifo_alloc(VALUE klass)
{
  VALUE volatile obj;
  xthread_fifo_t *fifo;

  obj = TypedData_Make_Struct(klass, xthread_fifo_t, &xthread_fifo_data_type, fifo);
  
  fifo->push = 0;
  fifo->pop = 0;

  fifo->capa = 0;
  fifo->elements = NULL;

  return obj;
}
Ejemplo n.º 7
0
static VALUE
allocate(VALUE klass)
{
    fiddle_closure * closure;

    VALUE i = TypedData_Make_Struct(klass, fiddle_closure,
                                    &closure_data_type, closure);

#ifndef DONT_USE_FFI_CLOSURE_ALLOC
    closure->pcl = ffi_closure_alloc(sizeof(ffi_closure), &closure->code);
#else
    closure->pcl = mmap(NULL, sizeof(ffi_closure), PROT_READ | PROT_WRITE,
                        MAP_ANON | MAP_PRIVATE, -1, 0);
#endif

    return i;
}
Ejemplo n.º 8
0
Archivo: task.c Proyecto: ko1/ptask
VALUE
rb_task_create(VALUE (*func)(VALUE *argv), int argc, ...)
{
    va_list args;

    if (worker_thread_num > 0) {
	rb_task_t *task;
	VALUE *argv = xmalloc(sizeof(VALUE) * argc);
	VALUE obj;
	int i;

	obj = TypedData_Make_Struct(rb_cTask, rb_task_t, &task_data_type, task);

	/* setup argv */
	va_init_list(args, argc);
	for (i=0; i<argc; i++) {
	    argv[i] = va_arg(args, VALUE);
	}
	va_end(args);

	task->func = func;
	task->argc = argc;
	task->argv = argv;
	task->result = Qundef;
	task->ptask = ptask_create(task_dispatch_callback, task);
	ptask_dispatch(task->ptask);
	return obj;
    }
    else {
	/* Do it immediately */
	int i;
	VALUE *argv = ALLOCA_N(VALUE, argc);

	va_init_list(args, argc);
	for (i=0; i<argc; i++) {
	    argv[i] = va_arg(args, VALUE);
	}
	va_end(args);

	return (VALUE)func(argv);
    }
}
Ejemplo n.º 9
0
static VALUE
imf_jpeg_src_mgr_new(VALUE image_source)
{
  imf_jpeg_src_mgr_t *srcmgr;
  VALUE obj = TypedData_Make_Struct(
      cSourceManager,
      imf_jpeg_src_mgr_t,
      &imf_jpeg_src_mgr_data_type,
      srcmgr);

  srcmgr->image_source = image_source;
  srcmgr->buffer = rb_str_tmp_new(IMF_JPEG_BUFFER_SIZE);
  srcmgr->pub.init_source = imf_jpeg_src_mgr_init_source;
  srcmgr->pub.fill_input_buffer = imf_jpeg_src_mgr_fill_input_buffer;
  srcmgr->pub.skip_input_data = imf_jpeg_src_mgr_skip_input_data;
  srcmgr->pub.resync_to_restart = jpeg_resync_to_restart; /* use default method */
  srcmgr->pub.term_source = imf_jpeg_src_mgr_term_source;
  srcmgr->pub.bytes_in_buffer = 0;
  srcmgr->pub.next_input_byte = NULL;

  return obj;
}
Ejemplo n.º 10
0
static VALUE
tp_alloc(VALUE klass)
{
    rb_tp_t *tp;
    return TypedData_Make_Struct(klass, rb_tp_t, &tp_data_type, tp);
}
Ejemplo n.º 11
0
static VALUE cState_s_allocate(VALUE klass)
{
    JSON_Generator_State *state;
    return TypedData_Make_Struct(klass, JSON_Generator_State,
				 &JSON_Generator_State_type, state);
}