mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2026-08-20 12:52:55 +00:00
lib: extract igt_aux.[hc]
And shovel all the various helpers in there. Also move igt_set_vt_graphics_mode to igt_kms.h since the function is implemented in igt_kms.c. And it fits better. I kinda missed this in the prep work. Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
This commit is contained in:
-188
@@ -277,191 +277,3 @@ int drm_open_any_render(void)
|
||||
|
||||
return fd;
|
||||
}
|
||||
|
||||
/* signal interrupt helpers */
|
||||
static struct igt_helper_process signal_helper;
|
||||
long long int sig_stat;
|
||||
static void __attribute__((noreturn)) signal_helper_process(pid_t pid)
|
||||
{
|
||||
/* Interrupt the parent process at 500Hz, just to be annoying */
|
||||
while (1) {
|
||||
usleep(1000 * 1000 / 500);
|
||||
if (kill(pid, SIGUSR1)) /* Parent has died, so must we. */
|
||||
exit(0);
|
||||
}
|
||||
}
|
||||
|
||||
static void sig_handler(int i)
|
||||
{
|
||||
sig_stat++;
|
||||
}
|
||||
|
||||
void igt_fork_signal_helper(void)
|
||||
{
|
||||
if (igt_only_list_subtests())
|
||||
return;
|
||||
|
||||
signal(SIGUSR1, sig_handler);
|
||||
|
||||
igt_fork_helper(&signal_helper) {
|
||||
signal_helper_process(getppid());
|
||||
}
|
||||
}
|
||||
|
||||
void igt_stop_signal_helper(void)
|
||||
{
|
||||
if (igt_only_list_subtests())
|
||||
return;
|
||||
|
||||
igt_stop_helper(&signal_helper);
|
||||
|
||||
sig_stat = 0;
|
||||
}
|
||||
|
||||
bool igt_env_set(const char *env_var, bool default_value)
|
||||
{
|
||||
char *val;
|
||||
|
||||
val = getenv(env_var);
|
||||
if (!val)
|
||||
return default_value;
|
||||
|
||||
return atoi(val) != 0;
|
||||
}
|
||||
|
||||
bool igt_aub_dump_enabled(void)
|
||||
{
|
||||
static int dump_aub = -1;
|
||||
|
||||
if (dump_aub == -1)
|
||||
dump_aub = igt_env_set("IGT_DUMP_AUB", false);
|
||||
|
||||
return dump_aub;
|
||||
}
|
||||
|
||||
/* other helpers */
|
||||
void igt_exchange_int(void *array, unsigned i, unsigned j)
|
||||
{
|
||||
int *int_arr, tmp;
|
||||
int_arr = array;
|
||||
|
||||
tmp = int_arr[i];
|
||||
int_arr[i] = int_arr[j];
|
||||
int_arr[j] = tmp;
|
||||
}
|
||||
|
||||
void igt_permute_array(void *array, unsigned size,
|
||||
void (*exchange_func)(void *array,
|
||||
unsigned i,
|
||||
unsigned j))
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = size - 1; i > 1; i--) {
|
||||
/* yes, not perfectly uniform, who cares */
|
||||
long l = random() % (i +1);
|
||||
if (i != l)
|
||||
exchange_func(array, i, l);
|
||||
}
|
||||
}
|
||||
|
||||
void igt_progress(const char *header, uint64_t i, uint64_t total)
|
||||
{
|
||||
int divider = 200;
|
||||
|
||||
if (!isatty(fileno(stderr)))
|
||||
return;
|
||||
|
||||
if (i+1 >= total) {
|
||||
fprintf(stderr, "\r%s100%%\n", header);
|
||||
return;
|
||||
}
|
||||
|
||||
if (total / 200 == 0)
|
||||
divider = 1;
|
||||
|
||||
/* only bother updating about every 0.5% */
|
||||
if (i % (total / divider) == 0 || i+1 >= total) {
|
||||
fprintf(stderr, "\r%s%3llu%%", header,
|
||||
(long long unsigned) i * 100 / total);
|
||||
}
|
||||
}
|
||||
|
||||
/* mappable aperture trasher helper */
|
||||
drm_intel_bo **trash_bos;
|
||||
int num_trash_bos;
|
||||
|
||||
void igt_init_aperture_trashers(drm_intel_bufmgr *bufmgr)
|
||||
{
|
||||
int i;
|
||||
|
||||
num_trash_bos = gem_mappable_aperture_size() / (1024*1024);
|
||||
|
||||
trash_bos = malloc(num_trash_bos * sizeof(drm_intel_bo *));
|
||||
igt_assert(trash_bos);
|
||||
|
||||
for (i = 0; i < num_trash_bos; i++)
|
||||
trash_bos[i] = drm_intel_bo_alloc(bufmgr, "trash bo", 1024*1024, 4096);
|
||||
}
|
||||
|
||||
void igt_trash_aperture(void)
|
||||
{
|
||||
int i;
|
||||
uint8_t *gtt_ptr;
|
||||
|
||||
for (i = 0; i < num_trash_bos; i++) {
|
||||
drm_intel_gem_bo_map_gtt(trash_bos[i]);
|
||||
gtt_ptr = trash_bos[i]->virtual;
|
||||
*gtt_ptr = 0;
|
||||
drm_intel_gem_bo_unmap_gtt(trash_bos[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void igt_cleanup_aperture_trashers(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < num_trash_bos; i++)
|
||||
drm_intel_bo_unreference(trash_bos[i]);
|
||||
|
||||
free(trash_bos);
|
||||
}
|
||||
|
||||
void igt_system_suspend_autoresume(void)
|
||||
{
|
||||
int ret;
|
||||
|
||||
/* FIXME: Simulation doesn't like suspend/resume, and not even a lighter
|
||||
* approach using /sys/power/pm_test to just test our driver's callbacks
|
||||
* seems to fare better. We need to investigate what's going on. */
|
||||
igt_skip_on_simulation();
|
||||
|
||||
ret = system("rtcwake -s 30 -m mem");
|
||||
igt_assert(ret == 0);
|
||||
}
|
||||
|
||||
void igt_drop_root(void)
|
||||
{
|
||||
igt_assert(getuid() == 0);
|
||||
|
||||
igt_assert(setgid(2) == 0);
|
||||
igt_assert(setuid(2) == 0);
|
||||
|
||||
igt_assert(getgid() == 2);
|
||||
igt_assert(getuid() == 2);
|
||||
}
|
||||
|
||||
void igt_wait_for_keypress(void)
|
||||
{
|
||||
struct termios oldt, newt;
|
||||
|
||||
if (!isatty(STDIN_FILENO))
|
||||
return;
|
||||
|
||||
tcgetattr ( STDIN_FILENO, &oldt );
|
||||
newt = oldt;
|
||||
newt.c_lflag &= ~( ICANON | ECHO );
|
||||
tcsetattr ( STDIN_FILENO, TCSANOW, &newt );
|
||||
getchar();
|
||||
tcsetattr ( STDIN_FILENO, TCSANOW, &oldt );
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user