mirror of
https://github.com/FeralInteractive/gamemode.git
synced 2025-06-06 07:37:21 +02:00
Add the timout to the call signature of run_external_process
This commit is contained in:
parent
4578af47ba
commit
53d1700a68
@ -40,10 +40,12 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#include <time.h>
|
||||
#include <unistd.h>
|
||||
|
||||
static const int default_timout = 5;
|
||||
|
||||
/**
|
||||
* Call an external process
|
||||
*/
|
||||
int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFFER_MAX])
|
||||
int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFFER_MAX], int tsec)
|
||||
{
|
||||
pid_t p;
|
||||
int status = 0;
|
||||
@ -54,6 +56,11 @@ int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFF
|
||||
return -1;
|
||||
}
|
||||
|
||||
/* Set the default timeout */
|
||||
if (tsec == -1) {
|
||||
tsec = default_timout;
|
||||
}
|
||||
|
||||
/* set up our signaling for the child and the timout */
|
||||
sigset_t mask;
|
||||
sigset_t omask;
|
||||
@ -88,7 +95,8 @@ int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFF
|
||||
|
||||
/* Set up the timout */
|
||||
struct timespec timeout;
|
||||
timeout.tv_sec = 5; /* Magic timeout value of 5s for now - should be sane for most commands */
|
||||
timeout.tv_sec = tsec; /* Magic timeout value of 5s for now - should be sane for most commands
|
||||
*/
|
||||
timeout.tv_nsec = 0;
|
||||
|
||||
/* Wait for the child to finish up with a timout */
|
||||
|
@ -34,4 +34,4 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||
#define EXTERNAL_BUFFER_MAX 1024
|
||||
|
||||
/* Run an external process and capture the return value */
|
||||
int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFFER_MAX]);
|
||||
int run_external_process(const char *const *exec_args, char buffer[EXTERNAL_BUFFER_MAX], int tsec);
|
||||
|
@ -229,7 +229,7 @@ int game_mode_apply_gpu(const GameModeGPUInfo *info, bool apply)
|
||||
NULL,
|
||||
};
|
||||
|
||||
if (run_external_process(exec_args, NULL) != 0) {
|
||||
if (run_external_process(exec_args, NULL, -1) != 0) {
|
||||
LOG_ERROR("Failed to call gpuclockctl, could not apply optimisations!\n");
|
||||
return -1;
|
||||
}
|
||||
@ -262,7 +262,7 @@ int game_mode_get_gpu(GameModeGPUInfo *info)
|
||||
};
|
||||
|
||||
char buffer[EXTERNAL_BUFFER_MAX] = { 0 };
|
||||
if (run_external_process(exec_args, buffer) != 0) {
|
||||
if (run_external_process(exec_args, buffer, -1) != 0) {
|
||||
LOG_ERROR("Failed to call gpuclockctl, could get values!\n");
|
||||
return -1;
|
||||
}
|
||||
|
@ -372,7 +372,7 @@ static int run_custom_scripts_tests(struct GameModeConfig *config)
|
||||
LOG_MSG(":::: Running start script [%s]\n", startscripts[i]);
|
||||
|
||||
const char *args[] = { "/bin/sh", "-c", startscripts[i], NULL };
|
||||
int ret = run_external_process(args, NULL);
|
||||
int ret = run_external_process(args, NULL, 10);
|
||||
|
||||
if (ret == 0)
|
||||
LOG_MSG(":::: Passed\n");
|
||||
@ -395,7 +395,7 @@ static int run_custom_scripts_tests(struct GameModeConfig *config)
|
||||
LOG_MSG(":::: Running end script [%s]\n", endscripts[i]);
|
||||
|
||||
const char *args[] = { "/bin/sh", "-c", endscripts[i], NULL };
|
||||
int ret = run_external_process(args, NULL);
|
||||
int ret = run_external_process(args, NULL, 10);
|
||||
|
||||
if (ret == 0)
|
||||
LOG_MSG(":::: Passed\n");
|
||||
|
@ -189,7 +189,7 @@ static void game_mode_context_enter(GameModeContext *self)
|
||||
};
|
||||
|
||||
LOG_MSG("Requesting update of governor policy to %s\n", desiredGov);
|
||||
if (run_external_process(exec_args, NULL) != 0) {
|
||||
if (run_external_process(exec_args, NULL, -1) != 0) {
|
||||
LOG_ERROR("Failed to update cpu governor policy\n");
|
||||
/* if the set fails, clear the initial mode so we don't try and reset it back and fail
|
||||
* again, presumably */
|
||||
@ -242,7 +242,7 @@ static void game_mode_context_leave(GameModeContext *self)
|
||||
};
|
||||
|
||||
LOG_MSG("Requesting update of governor policy to %s\n", gov_mode);
|
||||
if (run_external_process(exec_args, NULL) != 0) {
|
||||
if (run_external_process(exec_args, NULL, -1) != 0) {
|
||||
LOG_ERROR("Failed to update cpu governor policy\n");
|
||||
}
|
||||
|
||||
@ -693,7 +693,7 @@ static void game_mode_execute_scripts(char scripts[CONFIG_LIST_MAX][CONFIG_VALUE
|
||||
LOG_MSG("Executing script [%s]\n", scripts[i]);
|
||||
int err;
|
||||
const char *args[] = { "/bin/sh", "-c", scripts[i], NULL };
|
||||
if ((err = run_external_process(args, NULL)) != 0) {
|
||||
if ((err = run_external_process(args, NULL, 10)) != 0) {
|
||||
/* Log the failure, but this is not fatal */
|
||||
LOG_ERROR("Script [%s] failed with error %d\n", scripts[i], err);
|
||||
}
|
||||
|
@ -79,7 +79,7 @@ static int get_gpu_state_nv(struct GameModeGPUInfo *info)
|
||||
NV_CORE_OFFSET_ATTRIBUTE,
|
||||
info->nv_perf_level);
|
||||
const char *exec_args_core[] = { "/usr/bin/nvidia-settings", "-q", arg, "-t", NULL };
|
||||
if (run_external_process(exec_args_core, buf) != 0) {
|
||||
if (run_external_process(exec_args_core, buf, -1) != 0) {
|
||||
LOG_ERROR("Failed to set %s!\n", arg);
|
||||
return -1;
|
||||
}
|
||||
@ -98,7 +98,7 @@ static int get_gpu_state_nv(struct GameModeGPUInfo *info)
|
||||
NV_MEM_OFFSET_ATTRIBUTE,
|
||||
info->nv_perf_level);
|
||||
const char *exec_args_mem[] = { "/usr/bin/nvidia-settings", "-q", arg, "-t", NULL };
|
||||
if (run_external_process(exec_args_mem, buf) != 0) {
|
||||
if (run_external_process(exec_args_mem, buf, -1) != 0) {
|
||||
LOG_ERROR("Failed to set %s!\n", arg);
|
||||
return -1;
|
||||
}
|
||||
@ -145,7 +145,7 @@ static int set_gpu_state_nv(struct GameModeGPUInfo *info)
|
||||
info->nv_perf_level,
|
||||
info->core);
|
||||
const char *exec_args_core[] = { "/usr/bin/nvidia-settings", "-a", core_arg, NULL };
|
||||
if (run_external_process(exec_args_core, NULL) != 0) {
|
||||
if (run_external_process(exec_args_core, NULL, -1) != 0) {
|
||||
LOG_ERROR("Failed to set %s!\n", core_arg);
|
||||
return -1;
|
||||
}
|
||||
@ -160,7 +160,7 @@ static int set_gpu_state_nv(struct GameModeGPUInfo *info)
|
||||
info->nv_perf_level,
|
||||
info->mem);
|
||||
const char *exec_args_mem[] = { "/usr/bin/nvidia-settings", "-a", mem_arg, NULL };
|
||||
if (run_external_process(exec_args_mem, NULL) != 0) {
|
||||
if (run_external_process(exec_args_mem, NULL, -1) != 0) {
|
||||
LOG_ERROR("Failed to set %s!\n", mem_arg);
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user