Esempio n. 1
0
err_t qbytes_create_generic(qbytes_t** out, void* give_data, int64_t len, qbytes_free_t free_function)
{
  qbytes_t* ret = NULL;

  ret = (qbytes_t*) qio_calloc(1, sizeof(qbytes_t));
  if( ! ret ) return ENOMEM;

  _qbytes_init_generic(ret, give_data, len, free_function);

  *out = ret;

  return 0;
}
Esempio n. 2
0
// On return, the ref count is 1.
qioerr qbytes_create_generic(qbytes_t** out, void* give_data, int64_t len, qbytes_free_t free_function)
{
  qbytes_t* ret = NULL;

  ret = (qbytes_t*) qio_calloc(1, sizeof(qbytes_t));
  if( ! ret ) return QIO_ENOMEM;

  // On return the ref count is 1.
  _qbytes_init_generic(ret, give_data, len, free_function);

  *out = ret;

  return 0;
}
Esempio n. 3
0
err_t qbytes_create_calloc(qbytes_t** out, int64_t len)
{
  qbytes_t* ret = NULL;
  void* data;

  ret = (qbytes_t*) qio_calloc(1, sizeof(qbytes_t) + len);
  if( ! ret ) return ENOMEM;

  data = ret + 1; // ie ret + sizeof(qbytes_t)
  _qbytes_init_generic(ret, data, len, qbytes_free_null);

  *out = ret;
  return 0;
}
Esempio n. 4
0
// The ref count returned in 'out' is initially 1.
// The caller is responsible for calling qbytes_release on it.
qioerr qbytes_create_calloc(qbytes_t** out, int64_t len)
{
  qbytes_t* ret = NULL;
  void* data;

  ret = (qbytes_t*) qio_calloc(1, sizeof(qbytes_t) + len);
  if( ! ret ) {
    *out = NULL;
    return QIO_ENOMEM;
  }

  data = ret + 1; // ie ret + sizeof(qbytes_t)
  // On return, the ref count in ret is 1.
  _qbytes_init_generic(ret, data, len, qbytes_free_null);

  *out = ret;
  return 0;
}
Esempio n. 5
0
err_t _qbytes_init_iobuf(qbytes_t* ret)
{
  void* data = NULL;
  
  // allocate 4K-aligned (or page size aligned)
  // multiple of 4K
  data = valloc(qbytes_iobuf_size);
  if( !data ) return ENOMEM;
  // We used to use posix_memalign, but that didn't work on an old Mac;
  // also, this should be page-aligned (vs iobuf_size aligned).
  //err_t err = posix_memalign(&data, qbytes_iobuf_size, qbytes_iobuf_size);
  //if( err ) return err;
  memset(data, 0, qbytes_iobuf_size);

  _qbytes_init_generic(ret, data, qbytes_iobuf_size, qbytes_free_iobuf);

  return 0;
}