コード例 #1
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *
mycalloc(size_t nmemb, size_t bytes)
{
  void *r = mymalloc(bytes * nmemb);
  memset(r, 0, bytes * nmemb);
  if(r == NULL) {
    memtrace();
    tracelog(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
          "calloc(%d,%d) failed", (int)nmemb, (int)bytes);
    errno = ENOMEM;
  }
  return r;
}
コード例 #2
0
ファイル: memtrace_simple.c プロジェクト: DynamoRIO/dynamorio
static void
event_thread_exit(void *drcontext)
{
    per_thread_t *data;
    memtrace(drcontext); /* dump any remaining buffer entries */
    data = drmgr_get_tls_field(drcontext, tls_idx);
    dr_mutex_lock(mutex);
    num_refs += data->num_refs;
    dr_mutex_unlock(mutex);
    log_stream_close(data->logf); /* closes fd too */
    dr_raw_mem_free(data->buf_base, MEM_BUF_SIZE);
    dr_thread_free(drcontext, data, sizeof(per_thread_t));
}
コード例 #3
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *memalign(size_t align, size_t bytes)
{
  void *r;
  if(bytes == 0)
    return NULL;

  hts_lwmutex_lock(&mutex);
  r = tlsf_memalign(gpool, align, bytes);
  hts_lwmutex_unlock(&mutex);
  if(r == NULL) {
    memtrace();
    panic("OOM: memalign(%d, %d)", (int)align, (int)bytes);
  }
  return r;
}
コード例 #4
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *
myrealloc(void *ptr, size_t bytes)
{
  hts_lwmutex_lock(&mutex);
  void *r = tlsf_realloc(gpool, ptr, bytes);

  hts_lwmutex_unlock(&mutex);
  if(r == NULL) {
    memtrace();
    tracelog(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
          "realloc(%d) failed", (int)bytes);
    errno = ENOMEM;
  }
  return r;
}
コード例 #5
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *malloc(size_t bytes)
{
  void *r;
  if(bytes == 0)
    return NULL;

  hts_lwmutex_lock(&mutex);
  r = tlsf_malloc(gpool, bytes);
  hts_lwmutex_unlock(&mutex);
  if(r == NULL) {
    memtrace();
    panic("OOM: malloc(%d)", (int)bytes);
  }
  return r;
}
コード例 #6
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *mymemalign(size_t align, size_t bytes)
{
  if(bytes == 0)
    return NULL;

  hts_lwmutex_lock(&mutex);
  void *r = tlsf_memalign(gpool, align, bytes);
  hts_lwmutex_unlock(&mutex);
  if(r == NULL) {
    memtrace();
    tracelog(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
          "memalign(%d,%d) failed", (int)align, (int)bytes);
    errno = ENOMEM;
  }
  return r;
}
コード例 #7
0
ファイル: ps3_tlsf.c プロジェクト: StingerFG/movian
void *realloc(void *ptr, size_t bytes)
{
  void *r;

  if(bytes == 0) {
    free(ptr);
    return NULL;
  }

  hts_lwmutex_lock(&mutex);
  r = tlsf_realloc(gpool, ptr, bytes);
  hts_lwmutex_unlock(&mutex);
  if(r == NULL) {
    memtrace();
    panic("OOM: realloc(%p, %d)", ptr, (int)bytes);
  }
  return r;
}
コード例 #8
0
ファイル: tlsf_ps3.c プロジェクト: Overx/showtime
void *
mymalloc(size_t bytes)
{
  if(bytes == 0)
    return NULL;

  hts_mutex_lock(&mutex);
  void *r = tlsf_malloc(gpool, bytes);
  hts_mutex_unlock(&mutex);

  if(r == NULL) {
    memtrace();
    trace(TRACE_NO_PROP, TRACE_ERROR, "MEMORY",
          "malloc(%d) failed", (int)bytes);
    errno = ENOMEM;
  }
  return r;
}
コード例 #9
0
ファイル: memtrace.c プロジェクト: CharithYMendis/Helium
void memtrace_thread_exit(void *drcontext)
{
    per_thread_t *data;

    memtrace(drcontext);
    data = drmgr_get_tls_field(drcontext, tls_index);
    dr_mutex_lock(mutex);
    num_refs += data->num_refs;
    dr_mutex_unlock(mutex);
	if (log_mode){
		dr_close_file(data->logfile);
	}
	dr_close_file(data->outfile);
    dr_thread_free(drcontext, data->buf_base, MEM_BUF_SIZE);
    dr_thread_free(drcontext, data, sizeof(per_thread_t));

	DEBUG_PRINT("%s - exiting thread done %d\n", ins_pass_name, dr_get_thread_id(drcontext));
}
コード例 #10
0
ファイル: memtrace_x86.c プロジェクト: stoyannk/dynamorio
static void
event_thread_exit(void *drcontext)
{
    per_thread_t *data;

    memtrace(drcontext);
    data = drmgr_get_tls_field(drcontext, tls_index);
    dr_mutex_lock(mutex);
    num_refs += data->num_refs;
    dr_mutex_unlock(mutex);
#ifdef OUTPUT_TEXT
    log_stream_close(data->logf); /* closes fd too */
#else
    log_file_close(data->log);
#endif
    dr_thread_free(drcontext, data->buf_base, MEM_BUF_SIZE);
    dr_thread_free(drcontext, data, sizeof(per_thread_t));
}
コード例 #11
0
ファイル: memtrace_simple.c プロジェクト: DynamoRIO/dynamorio
/* clean_call dumps the memory reference info to the log file */
static void
clean_call(void)
{
    void *drcontext = dr_get_current_drcontext();
    memtrace(drcontext);
}