Files
raddebugger/src/scratch/convertperf.c
T

78 lines
2.2 KiB
C

// Copyright (c) Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
////////////////////////////////
//~ rjf: Build Options
#define BUILD_TITLE "convertperf"
////////////////////////////////
//~ rjf: Includes
//- rjf: [lib]
#include "third_party/rad_lzb_simple/rad_lzb_simple.h"
#include "third_party/rad_lzb_simple/rad_lzb_simple.c"
//- rjf: [h]
#include "base/base_inc.h"
#include "os/os_inc.h"
#include "async/async.h"
#include "rdi_format/rdi_format_local.h"
#include "dbgi/dbgi.h"
//- rjf: [c]
#include "base/base_inc.c"
#include "os/os_inc.c"
#include "async/async.c"
#include "rdi_format/rdi_format_local.c"
#include "dbgi/dbgi.c"
////////////////////////////////
//~ rjf: Entry Points
internal void
entry_point(CmdLine *cmdline)
{
Arena *arena = arena_alloc();
String8 list_path = str8_list_first(&cmdline->inputs);
String8 list_data = os_data_from_file_path(arena, list_path);
U8 splits[] = {'\n'};
String8List lines = str8_split(arena, list_data, splits, ArrayCount(splits), 0);
OS_HandleList processes = {0};
String8Node *processes_first_path_n = 0;
U64 limit = 64;
U64 idx = 0;
for(String8Node *n = lines.first; n != 0; n = n->next)
{
String8 dll_path = n->string;
ProfScope("kick off %.*s", str8_varg(dll_path))
{
String8 dll_path_no_ext = str8_chop_last_dot(dll_path);
String8 dll_name = str8_skip_last_slash(dll_path_no_ext);
String8 pdb_path = push_str8f(arena, "%S.pdb", dll_path_no_ext);
String8 rdi_path = push_str8f(arena, "dump/%S.rdi", dll_name);
OS_Handle handle = os_cmd_line_launchf("raddbg --bin %S --out:%S", pdb_path, rdi_path);
os_handle_list_push(arena, &processes, handle);
if(processes_first_path_n == 0)
{
processes_first_path_n = n;
}
idx += 1;
}
if(idx >= limit)
{
String8Node *line_n = processes_first_path_n;
for(OS_HandleNode *n = processes.first; n != 0; n = n->next, line_n = line_n->next)
{
ProfScope("join %.*s", str8_varg(line_n->string))
{
os_process_join(n->v, max_U64);
}
}
idx = 0;
MemoryZeroStruct(&processes);
processes_first_path_n = 0;
}
}
}